漏洞信息详情
SILC客户端及服务器密钥协商远程整数溢出漏洞
- CNNVD编号:CNNVD-200803-477
- 危害等级: 中危
- CVE编号:
CVE-2008-1552
- 漏洞类型:
数字错误
- 发布时间:
2008-03-31
- 威胁类型:
远程
- 更新时间:
2009-04-02
- 厂 商:
redhat - 漏洞来源:
Core Security Tech… -
漏洞简介
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程序的权限执行任意指令。
参考网址
来源: BID
名称: 28373
链接:http://www.securityfocus.com/bid/28373
来源: silcnet.org
链接:http://silcnet.org/general/news/?item=toolkit_20080320_1
来源: silcnet.org
链接:http://silcnet.org/general/news/?item=server_20080320_1
来源:silcnet.org
链接:http://silcnet.org/general/news/?item=client_20080320_1
来源: FEDORA
名称: FEDORA-2008-2641
链接:https://www.redhat.com/archives/fedora-package-announce/2008-March/msg00538.html
来源: FEDORA
名称: FEDORA-2008-2616
链接:https://www.redhat.com/archives/fedora-package-announce/2008-March/msg00513.html
来源: XF
名称: silc-silcpkcs1decode-bo(41474)
链接:http://xforce.iss.net/xforce/xfdb/41474
来源: SECTRACK
名称: 1019690
链接:http://www.securitytracker.com/id?1019690
来源: BUGTRAQ
名称: 20080325 CORE-2007-1212: SILC pkcs_decode buffer overflow
链接:http://www.securityfocus.com/archive/1/archive/1/490069/100/0/threaded
来源: MANDRIVA
名称: MDVSA-2008:158
链接:http://www.mandriva.com/security/advisories?name=MDVSA-2008:158
来源: VUPEN
名称: ADV-2008-0974
链接:http://www.frsirt.com/english/advisories/2008/0974/references
来源: MISC
链接:http://www.coresecurity.com/?action=item&id=2206
来源: SECUNIA
名称: 29465
链接:http://secunia.com/advisories/29465
来源: SECUNIA
名称: 29463
链接:http://secunia.com/advisories/29463
来源: SREASON
名称: 3795
链接:http://securityreason.com/securityalert/3795
来源: GENTOO
名称: GLSA-200804-27
链接:http://security.gentoo.org/glsa/glsa-200804-27.xml
来源: SECUNIA
名称: 29946
链接:http://secunia.com/advisories/29946
来源: SECUNIA
名称: 29622
链接:http://secunia.com/advisories/29622
来源: SUSE
名称: SUSE-SR:2008:008
链接:http://lists.opensuse.org/opensuse-security-announce/2008-04/msg00005.html