涉及程序: rinetd 描述: rinetd 存在DoS缺陷 详细: rinetd是一款IP重定向服务器程序。rinetd程序连接列表允许维持64个连接,当程序为了储存新的引入连接时,将调整连接列表的大小,由于对连接列表的大小没有进行正确的范围检查,导致出现缺陷。攻击者利用该缺陷能向目标机器发动DoS攻击(rinetd程序可能崩溃,挂起或拒绝新连接),甚至能在目标机器上执行任意代码。 rinetd程序的连接列表允许同时保持64个连接,当程序保持64个连接的同时再打开第65个连接时,用于调整连接列表大小的rinetd.c:handleAccept()函数将出现两个错误: ·table(coClosing)没有进行调整 ·在进行调整之后,新的索引信息将被放置在一个错误的值中(在table外面) 攻击方法: 暂无有效攻击代码 解决方案: { goto shortage; } + if (!SAFE_REALLOC(&coClosing, sizeof(int) * o, + sizeof(int) * coTotal)) + { + goto shortage; + } if (!SAFE_REALLOC(&reClosed, sizeof(int) * o, sizeof(int) * coTotal)) { @@ -1140,7 +1145,7 @@ goto shortage; } } - index = coTotal; + index = o; } coInputRPos