当前位置: 首页 > 科技观察

WindowsIPv6协议栈安全漏洞

时间:2023-03-22 10:17:17 科技观察

微软在10月补丁日修复了87个安全漏洞,其中一个是WindowsIPv6协议栈安全漏洞。该漏洞的CVE编号为cve-2020-16898,CVSS评分为9.0。攻击者可以利用恶意伪造的包在远程系统上执行任意代码。PoC代码非常简单,可以触发Windows系统蓝屏,说明可以绕过Windows10和Windowsserver2019补丁的攻击者可以利用该漏洞。该漏洞的影响也非常大,因为利用该漏洞实现远程代码执行的效果可以广泛传播,该漏洞可以实现类蠕虫传播。研究人员将该漏洞命名为“BadNeighbor”,因为该漏洞存在于使用路由器广告类型的ICMPv6邻居发现协议中。技术细节此漏洞是由于WindowsTCP/IP堆栈对选项类型25(递归DNS服务器选项)和长度字段中的偶数的ICMPv6路由器通告数据包处理不当造成的。在此选项中,length的计数增加8个字节,因此当length为3时,总长度应为24个字节。该选项本身包含5个域:类型、长度、保留、生命周期、IPv6递归DNS服务器地址。前4个字段一共只有8个字节,而最后一个字段包含IPv6地址个数的变量,每个16个字节。根据RFC8106,长度字段为大于等于3的奇数:当IPv6主机通过RA报文收到DNS选项时,会按照以下规则处理相关选项:DNS选项的有效性通过长度字段检查。RDNSS选项中的Length字段的值大于等于最小值3,并且满足(Length-1)%2==0。如果是偶数长度值,WindowsTCP/IP栈将错误地将网络缓存增加8个字节。这是因为内部堆栈递增16字节,无法处理不符合RFC标准的长度值。堆栈中的错误匹配会将当前选项的最后8个字节作为第二个选项的开始,从而导致堆栈溢出和潜在的远程代码执行。还需要Windows内核存在内存泄漏或信息泄漏漏洞,才能完整实现该漏洞的利用链。漏洞影响及补丁该漏洞对Windows10用户影响比较大,因为启用IPv6的服务器还比较少。目前,微软已经发布补丁。如果无法安装补丁,更好的方法是禁用IPv6。此外,ICMPv6路由器通告可以在网络边界被拦截或丢弃。从PoC的情况来看,WindowsDefender和WindowsFirewall都无法拦截PoC。目前尚不清楚攻击是否可以在使用6to4或Teredo等技术的网络中成功。

猜你喜欢