|
我花了三个通宵,漏洞比较把同一套业务系统分别跑在Windows Server和Linux上,漏洞比较然后让安全团队用同样的漏洞比较工具打了一遍。结果挺有意思——两边暴露出来的漏洞比较漏洞类型完全不一样,但都够让人头疼的漏洞比较。 Windows那边,漏洞比较最扎眼的漏洞比较是权限提升漏洞。攻击者一旦拿到普通用户权限,漏洞比较就能通过内核态驱动或者服务配置错误,漏洞比较直接把自己变成SYSTEM。漏洞比较我印象最深的漏洞比较是一个打印服务的老漏洞,打了补丁都还能绕过,漏洞比较因为微软为了兼容性留了太多后门。漏洞比较Linux这边呢,漏洞比较更多是漏洞比较配置问题——比如某个服务以root权限运行,或者临时文件目录权限设得太宽。不是系统本身不行,是运维的人太懒。 但真正的分水岭在供应链环节。Windows生态里,第三方驱动的签名机制形同虚设,很多厂商拿个测试证书就敢往生产环境推。我见过某款知名安全软件自带的驱动,本身就能被用来提权。Linux这边反而干净些,开源社区对代码的审查虽然慢,但至少漏洞公开之后,修复速度通常快得多。不过也有例外,比如某个嵌入式设备厂商魔改的内核,三年没更新过,上面挂着一堆已知CVE。 有意思的是,两边对“漏洞”的定义都不太一样。微软把任何能导致系统崩溃的问题都算成安全漏洞,所以他们的公告里经常混着一些无关痛痒的小毛病。Linux社区更激进,他们只关心能被远程利用或者提权的问题,其他的一律扔进“bug”分类。这种差异直接影响了修复策略——Windows用户经常被强制打补丁,重启服务器;Linux管理员则习惯挑着打,反正大部分漏洞根本碰不到。 我自己的感受是,Windows的漏洞更像一个精心设计的迷宫,入口很多,但每个入口都有守卫。Linux的漏洞则像一片开阔地,没有明显的围墙,但只要你懂得怎么布置防线,反而更安全。当然,前提是你真的懂。我见过太多人把Linux当成Windows用,结果开放了不必要的端口,装了带后门的第三方包,最后被一锅端。 最讽刺的是,真正致命的漏洞往往不在操作系统本身,而在应用层。我测试的那套业务系统,最终被拿下的原因不是Windows或Linux的锅,而是开发人员写的一个文件上传接口,没做类型校验。攻击者传了个PHP木马上去,两边都挡不住。所以你说哪个系统更安全?我觉得,如果你让同一批平庸的运维和开发去部署,它们最终都会被打穿,只是打穿的方式不同罢了。 现在我的结论很简单:别迷信任何一边。Windows的补丁机制成熟,但历史包袱重;Linux的架构更干净,但依赖使用者的水平。你要做的不是选边站,而是搞清楚自己手里有什么资源。如果团队里全是Windows出身的老兵,硬切Linux反而会创造更多漏洞。反过来也一样。 |