涉及程序: ISMail 3.7.2之前的所有版本 描述: TCPDUMP在分析ISAKMP包时存在DoS缺陷 详细: TCPDUMP是一款非常流行的网络监测工具,可以将网络中传送的数据包的报头完全截获下来提供分析。在分析ISAKMP包(UDP端口500)时存在一个缺陷,攻击者通过发送一个精心构造的临时数据包,将强制TCPDUMP进入到无限循环中,导致产生DoS攻击。 下列输出将显示TCPDUMP接收到一个畸形ISAKMP包的情况: # tcpdump -vvvr tcpdump_isakmp_inf_loop | head 05:14:57.954719 192.168.2.243.isakmp > 192.168.2.243.isakmp: isakmp 8.9 msgid 7d380dee cookie 773b4e8a1618caa8->51efacc0a65e0334: phase 2/others ? #69
: (#83) (#237) (#237) (#237) (#237) (#237) (#237) (#237) (#237) ... 数据串“(#237)”将继续显示,表示TCPDUMP没有处理其他数据包。存在缺陷的代码来自于print_isakmp.c:isakmp_sub_print()循环,但while()循环不存在缺陷: while (np) { safememcpy(&e, ext, sizeof(e)); if (ep < (u_char *)ext + ntohs(e.len)) { printf(\" <|%s>", NPSTR(np)); cp = ep + 1; break; } depth++; printf("\n"); for (i = 0; i < depth; i++) printf(\" \"); printf(\"(\"); cp = isakmp_sub0_print(np, ext, ep, phase, doi, proto); printf(\")\"); depth--; np = e.np; ext = (struct isakmp_gen *)cp; } 任何远程用户通过发送一个精心构造的临时数据包,就能引发该缺陷,导致程序失效,阻止管理员检查网络通信。由于TCPDUMP使用的是UDP协议,攻击者能通过哄骗源地址,匿名触发该缺陷,并且,于TCPDUMP相关的应用程序也将受到影响。以Linux和FreeBSD为平台TCPDUMP 3.6, 3.6.3, 3.7.1版都存在该缺陷,许多其他Linux版本也包含易受该缺陷影响的TCPDUMP。 攻击方法: 暂无有效攻击代码 解决方案: TCPDUMP 3.7.2版已经修正该缺陷,请用户及时下载安装: http://www.tcpdump.org/release/tcpdump-3.7.2.tar.gz 临时解决方案: 重新启动TCPDUMP,恢复到初始状态。 附加信息: CAN-2003-0108