CVE:CVE-2001-0144
CNNVD:CNNVD-200103-069
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]时将会发生段错误。
通过精心构造攻击报文，攻击者可能覆盖任意地址的内容并远程执行任意代码。攻击者不需要有效的系统帐号即可进行攻击。
solution:Upgrade openbsd openssh to a higher version than 1.2.2,1.2.3,2.1,2.1.1,2.2,and avoid the version 1.2.2,1.2.3,2.1,2.1.1,2.2; Upgrade ssh ssh to a higher version than 1.2.24,1.2.25,1.2.26,1.2.27,1.2.28,1.2.29,1.2.30,1.2.31,and avoid the version 1.2.24,1.2.25,1.2.26,1.2.27,1.2.28,1.2.29,1.2.30,1.2.31