这个漏洞都好几天了,好像大多数新闻和解释都没讲明白。大多数不断重复:
“利用 UDP 协议中的漏洞,由于没有提供足够的数据包验证,因此非常容易实现 IP 欺骗。无限制地产生过大流量,且无法阻止,从而导致目标系统甚至整个网络出现拒绝服务”
大多数新闻都只不断重复这几句话,不讲明白怎么回事。看客不知道发生什么了,也不知道怎么解决。
我简单举一个例子就知道了
假设服务器IP:192.168.100.60,udp端口11211。
listening on 192.168.100.60:11211
如果有 192.168.100.120:6666 端口请求连接,就会有这样一条记录表:192.168.100.120:6666 ↔ 192.168.100.60:11211
192.168.100.60:11211接收到请求,然后回复数据包,把src地址取出,填入des地址。把数据包返回发出请求的人。
但是众所周知,udp是无状态的,不需要tcp之类的进行握手确认,所以可以进行进行修改src地址进行IP欺骗(udp洪水和udp反射攻击的基本原理)。
但是把src地址修改为服务器的地址会发生什么?
由于udp的src地址是udp包自己封装的,可以修改。如果有 192.168.100.150:4444 端口请求连接,本来是这样一条记录表:192.168.100.150:4444 ↔ 192.168.100.60:11211。
但是却把src地址改为和服务器一样的src,port。就会变成这样
192.168.100.60:11211 ↔ 192.168.100.60:11211
服务器处理完数据,准备回复的时候。取出src地址,填入des,回复数据,于是又回复又处理再次发送。但是都传给了自己。数据不断叠加。造成拒绝服务。
所以才叫“Loop DoS”的
可以iptables丢掉src与des一样的udp数据包,但是会造成一个问题。就是程序无法使用udp本地(Loop)通信了,需要自己权衡。
发现漏洞的CERT Coordination Center机构的解决方案是
https://kb.cert.org/vuls/id/417980
部署可用的反欺骗技术 ( BCP38 ),例如单播反向路径转发 ( uRPF,以防止 IP 欺骗,从而保护其面向互联网的资源免遭欺骗和滥用。
也是一个方法,但是只有机房/运营商才能部署