udp 协议Loop dos漏洞CVE-2024-2169 的简单详解

这个漏洞都好几天了,好像大多数新闻和解释都没讲明白。大多数不断重复:
“利用 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 欺骗,从而保护其面向互联网的资源免遭欺骗和滥用。

也是一个方法,但是只有机房/运营商才能部署

22 Likes

感谢分享网安知识

2 Likes

这下说清楚了,也多多少少理解了漏洞原理了

1 Like

相比媒体已经是详细解释了

23 Likes

先设置src和des一致过滤,本地需要udp通信可以修改自己的src(本地欺骗)指向另一个接口(手动创建),这样保证本地通信不是相同的地址。类似windows的 Npcap(代替WinPcap)

2 Likes

在想什么场景下需要udp loop通讯

帮你用白话总结,能够成为DDOS的原因很简单,因为udp是无状态的,不需要回包建立握手链接,所以伪造源ip发请求,服务端回返回到数据包中的源ip地址,所以当你假冒张三说你你家着火了,119就会真的去张三家灭火。

3 Likes

感谢分享

感谢分享

通俗易懂,赞!

通俗易懂

够简单明了

感谢分享

简单明了,通俗易懂

这下终于弄懂了

点赞,感谢分享

From security to 开发调优

1 Like