
刚知道这事的时候,我还以为是假新闻
早上刷技术社区的时候看到一条消息,差点把咖啡喷屏幕上——Linux 内核曝出一个高危提权漏洞,原因居然是一个感叹号写错了。
对,你没看错,就是键盘上 shift+1 那个感叹号。
这个漏洞编号 CVE-2026-53111,潜伏在 nf_tables 子系统里。做运维的应该不陌生,nf_tables 是 Linux 内核里的网络包过滤框架,iptables 的下一代替代品。平时大家在服务器上配防火墙规则,底层走的可能就是它。
漏洞的具体位置是在判决映射删除后的资源回收流程里。本来该写「不等于」的地方,代码里写的是「等于」——就一个字符的差别。
正常逻辑是:如果删除成功,内存里相关的元素失效,链对象的引用计数同步减掉;如果删除失败,回滚、恢复计数。但因为那个感叹号写反了,判断条件整个颠倒了。攻击者可以利用这个漏洞把引用计数减到负数,然后在链表对象还被引用的时候强行删掉它——经典的 use-after-free。
听起来很技术,但结果很直观:一个普通用户权限的账号,能直接提到 root。
攻击者只需要三步
Exodus Intelligence 的研究人员公开了 PoC(概念验证代码),把整个攻击流程说得清清楚楚:
第一步,多次触发漏洞,泄露内核基址。第二步,继续触发,泄露堆地址。第三步,劫持控制流,拿到 root 权限。
最麻烦的是,这个漏洞在 Debian 和 Ubuntu 上已经验证可运行。对,就是大家最常用的那两个发行版。
我在自己的测试服务器上试了一下,Debian 12 默认内核确实受影响。还好我这台机器不是生产环境,但想想那些线上跑着 Debian/Ubuntu 的服务器,确实有点后背发凉。
好消息是:补丁已经出了
Linux 内核主线早在今年 2 月就合了修复补丁。主流发行版也都跟进推送了。如果你有用 apt update && apt upgrade 的好习惯,大概率已经打上了。
但问题是,很多服务器不会天天升级内核。有些公司还抱着「跑得稳就别动」的心态,一个内核跑一年半载不重启。这漏洞就是为这种习惯定制的。
我个人建议:如果你的服务器跑的是 Debian 或 Ubuntu,赶紧确认一下内核版本。Debian 12 的安全更新里已经包含修复,内核版本如果低于某个小版本,直接升上去。
另外,nf_tables 这个子系统其实今年已经不是第一次出问题了。之前也有几个高危漏洞跟它有关。用 nftables 的团队,可能要重新评估一下把 iptables 迁移过来的风险——虽然 nftables 本身是好东西,但这个子系统的代码质量确实让人有点担心。
一个小字符,多大的事
说实话,看到这个案例我挺有感触的。改了这么多年代码,谁手上没出过这种低级错误呢?忘了取地址符、少了个括号、多打了个分号——小错误酿成大问题的故事,每个程序员都能讲一箩筐。
但 Linux 内核不一样。它是基础设施的基础设施。一行代码跑在几十亿台设备上。一个感叹号写错,可能就是一条通往 root 权限的捷径。
这也是为什么我觉得内核开发者的代码审查压力真的太大了。你修一个 Bug,打补丁的时候写错了一个字符——然后几个月后,它变成了一个高危漏洞。
最后说一句:如果你用的是 Debian/Ubuntu 系列,别等了,apt upgrade 走一个。生产环境不方便重启的话,至少确认一下有没有 livepatch 的支持。安全这东西,真不能靠运气。
评论 (0)
暂无评论,来写第一条吧 ✍️