CVE-2026-42304Twisted是一个基于事件驱动的网络应用程序框架,支持Python 3.6及以上版本。在26.4.0rc2版本之前,其twisted.names模块存在安全漏洞,该漏洞允许通过DNS名称解压缩过程中的资源耗尽进行拒绝服务攻击。未经身份验证的远程攻击者可以利用此漏洞,通过发送包含深度链式压缩指针的特制TCP DNS数据包来攻击服务器。这一缺陷绕过了之前的循环预防逻辑,导致单线程Twisted反应堆在处理数百万次递归查找时挂起,从而有效地冻结服务器。
该漏洞的核心在于Twisted库解析DNS消息时对压缩指针的处理逻辑存在缺陷。DNS协议允许使用指针来压缩重复的域名标签,标准要求解析器防止指针无限循环。在受影响的Twisted版本中,攻击者可以精心构造一个TCP DNS数据包,其中包含极深且复杂的压缩指针链。这种特定的构造能够绕过代码中现有的循环预防机制。当Twisted的twisted.names模块接收到并处理该数据包时,会尝试解压缩这些指针。由于指针链极深,解析过程会触发数百万次的递归查找操作。由于Twisted基于单线程反应堆模式,这种计算密集型任务会完全阻塞主事件循环,导致服务器无法响应其他客户端请求,从而实现拒绝服务攻击。