游客发表
微软在2024年8月补掉了CVE-2024-38063。漏洞被封一个TCP/IP协议栈里的漏洞被封远程代码执行漏洞,CVSS评分9.8。漏洞被封攻击者只要往目标机器发几个特制IPv6数据包,漏洞被封就能拿到SYSTEM权限。漏洞被封不需要认证,漏洞被封不需要用户交互,漏洞被封网络可达就行。漏洞被封这个漏洞在Windows 10、漏洞被封11以及Server 2008到2022上全部通杀。漏洞被封
我盯着安全公告看了很久。漏洞被封IPv6数据包,漏洞被封分片,漏洞被封整数下溢。漏洞被封这几个词拼在一起,漏洞被封脑子里大概能还原出那条路径:协议栈在处理分片包时算错了某个长度值,下溢之后变成巨大的正数,后续的缓冲区操作直接越界。典型的内存破坏。微软给的时间线是三个月前收到报告,内部复现、修补、测试、发布。节奏正常,但三个月里这个洞一直敞着。
Patch Tuesday那天我正好在帮一个客户做内网资产梳理。他们的Windows Server 2019集群有四十多台,补丁管理靠WSUS推送,但总有那么几台因为各种原因掉队——磁盘满了、服务卡死、管理员忘了审批。我扫了一遍,发现三台机器还停在七个月前的补丁级别。CVE-2024-38063对它们来说不是历史,是随时可以踩上去的地雷。
这事让我想起2017年的永恒之蓝。同样是协议栈层面的漏洞,同样是远程可利用,同样在补丁发布后很长一段时间里有人没打。区别在于,永恒之蓝是SMB,内网横移的利器;38063是IPv6,很多内网压根没启用。但“没启用”不等于“安全”。Windows默认开启IPv6,哪怕你没有分配地址,链路本地地址fe80::/10照样在工作。攻击者只要在同一网段,就能摸到那张网卡。
修补本身不复杂。微软在补丁里加了一个边界检查,把那个下溢的整数路径堵死了。重启之后生效。麻烦的是那些不能随便重启的系统——工控机、医疗设备、老旧的业务服务器。我见过一台跑着Windows Server 2008 R2的机器,上面挂着一套已经停止维护的ERP,厂商说“不支持升级操作系统”。这种机器在38063面前就是裸奔。你只能把它从网络里摘出来,或者在前端加一层过滤,把IPv6分片包全扔掉。
安全圈有个老笑话:补丁发布的那天,才是漏洞真正开始被利用的日子。因为攻击者会去逆向补丁,找出修补前的弱点,然后写利用工具。38063的细节在补丁发布后两周内就出现在GitHub上了,虽然只是PoC,但改一改就能变成武器。我看了那个PoC的代码,大概三百行Python,用scapy构造IPv6分片包,循环发送。成功率取决于目标系统的内存布局,但多试几次总能打中。
真正让我在意的是另一件事。这个漏洞是昆仑实验室发现的,一个中国的安全研究团队。他们在6月就报告给了微软,然后等了两个月。这两个月里,这个洞只存在于少数人手里。但两个月之后,它属于所有人。补丁是解药,也是地图。你打了补丁,攻击者就知道你曾经有弱点;你没打,攻击者就知道你现在还有弱点。
我最后帮那个客户把三台掉队的机器手动打了补丁。重启的时候,其中一台卡在“配置更新”界面整整四十分钟。我坐在机房里,听着风扇的声音,想的是另一个问题:下一个38063会在什么时候出现?协议栈的代码太老了,有些模块可以追溯到Windows XP时代。那些代码写的时候,IPv6还没普及,安全模型还是“内网可信”。现在这些假设全塌了,但代码还在跑。
补丁能封住一个洞,封不住下一个。
友情链接