奥运倒计时: 设为首页 加入收藏
点击进入太平洋安全网首页
论坛登陆 用户名: 密码:
首页 新闻资讯 文章中心 黑客资源 黑客点睛 安全防护 软件下载 动画教程 会员咨询 技术问答 论坛社区
文章 下载 图片
文章  
 您现在的位置: 太平洋安全网 >> 新闻 >> 漏洞公告 >> 正文

SILC 客户端以及服务器密钥协商远程整数溢出漏洞

作者:未知    新闻来源:网络转载    点击数:    更新时间:2008-3-31

受影响系统
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/

新闻录入:随风追忆    责任编辑:随风追忆 
  • 上一个新闻:

  • 下一个新闻:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     推荐文章
    [漏洞公告]FreeBSD不安全随机数生成器信息泄…
    [漏洞公告]TIBCO Rendezvous RVD守护程序远…
    [漏洞公告]AOL Radio AmpX.DLL ActiveX 控件…
    [漏洞公告]PHPBB 2.0.22 MOD版最新注入漏洞…
    [漏洞公告]MS07-062:Windows DNS服务器中漏…
    [漏洞公告]MS07-061:Windows URI处理中的远…
    [漏洞公告]Apple Mac OS X 内核中的KQueue本…
    [漏洞公告]Linux操作系统内核Kernel文件远程…
     热门文章
     [业内新闻]卡巴斯基:2008年5月二十大恶意软…
     [业内新闻]台北世贸中心官网被挂马
     [业内新闻]中国黑客被疑导致美国2003年大停…
     [业内新闻]广东警方侦破多起趁赈灾实施的网…
     [业内新闻]永久拒绝服务攻击出现 黑客攻击基…
     [业内新闻]不怕贼偷就怕贼惦记 谷歌又成垃…
     [业内新闻]震后政府类网站和新闻网站访问量…
     [业内新闻]谨防黑客利用新闻事件使坏 防止资…
     本站推荐

    关于我们 | 联系方法 | 招聘信息 | 加入会员 | 诚征代理 | 广告服务 | 欢迎投稿 | 站长信箱 | 友情链接 | 网站地图
    24小时客服:0374-7126138 技术支持:0374-7126138 投诉电话:0374-7967536
    客服QQ:883039 售后QQ:827520 技术QQ:78305152 投稿-商业:576880739
    Copyright 太平洋科技 2003-2007 版权所有 All Rights Reserved
      许可证号:豫ICP备07005385号