rpcbind 至 0.2.4、LIBTIRPC 至 1.0.1 及 1.0.2-rc 至 1.0.2-rc3、NTIRPC 至 1.4.3 在分配 XDR 字符串内存时未考虑最大 RPC 数据大小,攻击者可通过向 111 端口发送精心构造的 UDP 数据包(也就是 rpcbomb)造成拒绝服务(内存消耗且随后不释放)。
CVE 链接 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8779
git clone https://github.com/drbothen/GO-RPCBOMB.git
go build RPCBomb.go
编译后的 RPCBomb.exe 具有多个开关,允许攻击者根据自身需要定制攻击。
这是一个必需标志。用于设置目标系统。默认为必需。
这不是必需标志。用于设置尝试分配的内存字节数。默认为 5999999999
这不是必需标志。用于指定 RPC Bind 运行的端口。默认为 111 端口
这不是必需标志。用于设置要发送的 UDP 数据包数量,即请求分配内存的次数。默认为 1
这不是必需标志。用于设置并发发送 UDP 数据包所使用的子线程数量。默认为 1
致谢归于 Guido Vranken,他最初报告了这一发现,并编写了本 golang 利用代码所基于的示例 ruby 利用代码,代码位于 https://github.com/guidovranken/rpcbomb。
原始报告可在 https://guidovranken.wordpress.com/2017/05/03/rpcbomb-remote-rpcbind-denial-of-service-patches/ 查看。