SSH1守护程序crc32补偿攻击检测安全漏洞 CVE-2001-0144 CNNVD-200103-069 CNNVD-200709-025

10.0 AV AC AU C I A
发布: 2001-03-12
修订: 2018-05-03

SSH是一种用于远程连接的加密通信协议和工具,相对telnet提供了强大得多的安全性。 较新版本的ssh1守护程序中所带的一段代码中存在一个整数溢出问题。问题出在deattack.c,此程序由CORE SDI开发,用来防止SSH1协议受到CRC32补偿攻击。 由于在detect_attack()函数中错误的将一个16位的无符号变量当成了32位变量来使用,导致表索引溢出问题。这将允许一个攻击者覆盖内存中的任意位置的内容,攻击者可能远程获取root权限。 问题出在detect_attack()函数中: ... /* detect_attack Detects a crc32 compensation attack on a packet */ int detect_attack(unsigned char *buf, word32 len, unsigned char *IV) { static word16 *h = (word16 *) NULL; (*) static word16 n = HASH_MINSIZE / HASH_ENTRYSIZE; register word32 i, j; word32 l; ... n 被错误的定义为16位整数,因此攻击者可以设法导致其值为0,在进行完xmalloc(0)分配后,将执行下列代码: for (i = HASH(c) & (n - 1); h[i] != HASH_UNUSED; 由于i被设置为32位无符号整数,在n=0时,结果就变成了: i = HASH(c) & 0xffffffff 而c可以由客户端提供。如果i的值超出了正常范围,程序在试图访问h[i]时将会发生段错误。 通过精心构造攻击报文,攻击者可能覆盖任意地址的内容并远程执行任意代码。攻击者不需要有效的系统帐号即可进行攻击。

0%
当前有4条漏洞利用/PoC
当前有13条受影响产品信息