CVE-2021-37740 是一个影响 MDT 公司固件 v3.0.3 的 KNXnet/IP Secure 路由器 SCN-IP100.03 和接口 SCN-IP000.03 的拒绝服务(DoS)漏洞。一个特制的 KNXnet/IP Secure 帧会导致设备无法响应后续请求,需要重启才能恢复正常运行。本仓库包含一个漏洞验证程序,用于演示如何触发该漏洞,最初是为协调漏洞披露而开发的。
攻击者可以通过与目标设备建立 TCP 连接,然后发送一个总长度字段被修改为 0x0259 或更高值的 SESSION_REQUEST 帧来利用该漏洞。受漏洞影响的设备将不再响应任何连接中的 KNXnet/IP Secure 帧。SESSION_REQUEST 是 KNXnet/IP Secure 单播协议握手期间发送的第一个帧,符合 ISO 22510:2019 标准。其标准固定长度为 46 字节,标准要求丢弃长度异常的帧。
本仓库提供的脚本需要 Python 3。healthcheck.py 用于测试设备是否仍然响应。它会与目标设备建立 TCP 连接,并尝试启动 KNXnet/IP Secure 单播握手。如果设备回复,回复内容将以十六进制形式打印到 stdout。poc.py 通过发送无效的 SESSION_REQUEST 帧来尝试触发 DoS 漏洞。如果设备存在漏洞,后续执行 healthcheck.py 将不会收到回复,除非目标设备被重启。
可以使用以下命令执行脚本,其中 <insert IP address> 需要替换为实际 IP 地址(例如 192.168.2.137)。
python3 healthcheck.py -t <insert IP address>
python3 poc.py -t <insert IP address>
在 Windows 上,Python 的别名可能需要从 python3 改为 python。如果目标设备的控制端点使用 3671 以外的端口,则需要相应调整脚本中的端口。
如 MDT 固件的变更日志所述,该漏洞已在固件 v3.0.4 中修复。安装最新固件可解决此问题。固件更新说明和 .hex 文件可在 MDT 网站上获取。
漏洞验证程序基于 MIT 许可证 发布。
下载:
变更: