| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 安全365社区 |
安全365
收藏本站
设为首页
会员登录:
站内搜索: 新闻中心 系统安全 网络安全 安全技术 下载中心
| 新闻中心首页 | 新闻动态 | 安全公告 |
SILC 客户端以及服务器密钥协商远程整数溢出漏洞
SILC 客户端以及服务器密钥协商远程整数溢出漏洞
作者:未知 文章来源:黑客手册 点击数: 更新时间:2008-4-1 9:22:55

  受影响系统

  SILC server <= 1.1.1

  SILC client <= 1.1.3

  不受影响系统

  SILC server 1.1.2

  SILC client 1.1.4

  描述:

  SILC(Secure Internet Live Conferencing)是安全的互联网会议讨论系统,可以发送任何类型的信息,包括多媒体信息,如视频、音频、图像等。

  SILC处理畸形的数据交换时存在漏洞,远程攻击者可能利用此漏洞控制服务器。

  如果要初始连接到SILC服务器,对等端(客户端、路由器和服务器)之间要执行相互认证并执行密钥协商协议以获得之后用于加密通讯的共享密钥。对等端之间的加密数据是通过以PKCS#1 1.5标准编码的报文交换的。

  SILC的PKCS1编码功能是在silcpkcs1.c文件的silccrypt库中实现的,用于解码PKCS#1报文的代码在silc_pkcs1_decode函数中实现,如下所示:

  /-----------

  SilcBool silc_pkcs1_decode(SilcPkcs1BlockType bt,

  const unsigned char *data,

  SilcUInt32 data_len,

  unsigned char *dest_data,

  SilcUInt32 dest_data_size,

  SilcUInt32 *dest_len)

  {

  int i = 0;

  SILC_LOG_DEBUG(("PKCS#1 decoding, bt %d", bt));

  /* Sanity checks */

  if (!data || !dest_data || dest_data_size < 3 ||

  data[0] != 0x00 || data[1] != (unsigned char)bt) {

  SILC_LOG_DEBUG(("Malformed block"));

  return FALSE;

  }

  /* Decode according to block type */

  switch (bt) {

  case SILC_PKCS1_BT_PRV0:

  /* Do nothing */

  break;

  case SILC_PKCS1_BT_PRV1:

  /* Verification */

  (1) for (i = 2; i < data_len; i++)

  if (data[i] != 0xff)

  break;

  break;

  case SILC_PKCS1_BT_PUB:

  /* Decryption */

  (2) for (i = 2; i < data_len; i++)

  if (data[i] == 0x00)

  break;

  break;

  }

  /* Sanity checks */

  (3) if (data[i++] != 0x00) {

  SILC_LOG_DEBUG(("Malformed block"));

  return FALSE;

  }

  if (i - 1 < SILC_PKCS1_MIN_PADDING) {

  SILC_LOG_DEBUG(("Malformed block"));

  return FALSE;

  }

  if (dest_data_size < data_len - i) {

  SILC_LOG_DEBUG(("Destination buffer too small"));

  return FALSE;

  }

  /* Copy the data */

  (4) memcpy(dest_data, data + i, data_len - i);

  /* Return data length */

  if (dest_len)

  *dest_len = data_len - i;

  return TRUE;

  }

  - -----------/

  在上面的代码中,如果在传输私有(BT_PRIV1)或公开(BT_PUB)密钥材料时有效PKCS#1编码的恶意伪造报文所有位分别设置为0xff或非0x00的话,就会导致执行流在(1)和(2)退出循环,无符整数变量i设置为data_len,然后在(3)同一变量i以1递增,因此设置为data_len+1。在(3)传送过滤检查的特制报文最终会由于在(4)处memcpy()函数中传送的第三个参数中的整数溢出而导致内存破坏。由于i设置为了datalen+1,用于计算第三个参数值的data_len - i表达式会为-1,导致由于符号转换错误而覆盖进程内存。成功利用这个漏洞会导致程序拒绝服务,或以SILC程序的权限执行任意指令。

  厂商补丁

  目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

  http://silcnet.org/software/download/

新闻录入:小张    责任编辑:小张 
  • 上一篇新闻:

  • 下一篇新闻: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    黑客攻入eBay服务器窃取
    MS07-062:Windows DNS服
    病毒Win32.Clspring.HC连
    电信肆意关停服务器 中小
    Microsoft内容管理服务器
    曝DNS服务漏洞影响所有W
    站长邮箱:webmaster@anquan365.com
    联系电话:86-10-67634029 点击这里给我发消息

    Copyright © 2006-2008 www.anquan365.com 北京华安普特网络科技有限公司 版权所有