冷蟊初退 孤灯野澜 志起鸡鸣 墓不悲秋 技术交流 软件开发 商业合作 加Q:411239339

一个”只能看日志”的账号,差点偷光全公司核心资产——Linux 刚爆 7.8 分内核漏洞

浏览:6次阅读
没有评论

共计 3125 个字符,预计需要花费 8 分钟才能阅读完成。

一、小李的故事

小李是一家三百人公司的 " 日志管理员 "。

他的工作很简单: 每天上午看一眼业务服务器的日志, 把异常告警转给对应的研发同事。公司 IT 给他开了一个 Linux 账号, 权限卡得很死——只能 ssh 上去、只能看 /var/log、不能装软件、不能改配置。

按 IT 老大的话说:" 他这个号就算被钓鱼盗了, 黑客顶多看看日志, 翻不出花来。"

直到这周, 内核圈爆出一个编号 CVE-2026-31431 的漏洞——小李这种 最小权限账号, 可以在几秒钟内拿到服务器最高权限 root。

代码、数据库密码、客户资料、SSH 私钥、备份文件……全部一览无余。

二、漏洞档案(三十秒看完版)

内容
漏洞编号 CVE-2026-31431
影响组件 Linux 内核 algif_aead(内核加密接口)
危险等级 7.8 高危(CVSS v3.1,kernel.org 评定)
缺陷类型 CWE-669: 资源在不同信任域之间错误转移
触发条件 本地 + 一个普通账号 + 无需用户交互
直接后果 普通用户一步提权到 root
影响范围 主流发行版当前线上内核(Ubuntu / Debian / RHEL / SUSE / 麒麟 / 统信)
修复进度 kernel.org 已合入补丁, 各发行版正陆续推送安全更新
临时缓解 blacklist algif_aead(对绝大多数业务零影响)

一句话记住:有一个普通账号能登, 就够了。

三、" 低权限账号 ≠ 安全边界 "

很多公司的安全模型是这么搭的:

  • 给运维:root
  • 给研发:sudo
  • 给业务、客服、日志、外包、实习生:一个普通账号

潜台词是:普通账号就算丢了也没事

这个假设在大部分时候成立——前提是 " 内核本身没有漏洞 "。

而 CVE-2026-31431 干的就是把这个前提捅破了。

四、漏洞原理: 一份 " 装错的外卖 "

不想看技术细节的读者, 可以先记住这一句话:

CVE-2026-31431 的本质, 就是 Linux 内核在打包外卖时手一抖, 把后厨的钥匙串塞进了你的外卖袋。

下面这个生活化的比方, 看完你就懂了——


想象你点了份外卖。

你下单告诉商家:" 帮我把这份食材加工一下, 做成蛋炒饭。" 商家拿到你的食材, 后厨炒好, 装袋送回。

这个流程,就对应你写的程序请求 Linux 内核帮你做加密

为了出餐快, 这家店厨房做了个 " 优化 ":打包台和后厨工作台合用同一张桌子——你的食材进去、加工、装回袋, 全在这一张桌子上完成, 省下了来回搬运的时间。

听上去很聪明。问题来了——

桌子上不光有你的食材, 还堆着这家店的 内部物料 : 今天的进货清单、各家供应商的对账单、 后厨那串钥匙的备份……

打包时手一抖,这些后厨的内部材料, 被一起塞进了你的外卖袋

你回家拆袋一看: 咦, 这是什么? 后厨的钥匙复印件、整家店的内部账本——

有了这些, 你不光能免费吃饭, 还能直接走进后厨, 自己当老板。


回到 Linux 内核, 这个比方一一对应:

比方里的角色 对应的技术名词
外卖店的后厨 Linux 内核加密子系统 algif_aead
你下的单 普通用户调用内核加密 API
打包台与工作台共用一张桌子 " 原地操作 "(in-place processing)优化
被错装进外卖袋的内部材料 应只属于内核的 " 关联数据 "(AD)
拿到后厨钥匙、当上老板 普通用户提权到 root

学术名字叫 CWE-669: 资源在不同信任域之间错误转移

一句白话再总结一次:内核图省事, 把自己家的钥匙塞进了你的外卖袋。

这就是为什么 " 日志管理员 " 小李的账号也能闯出大祸——他什么都没做, 只是按厨房教的流程 " 点了个外卖 " 而已。

CVSS 评分 7.8 高危 , 本地触发, 只需一个普通用户账号, 无需任何用户操作——这就是为什么 " 日志管理员 " 这种岗位也必须当回事。

五、谁该立刻自查

只要你的服务器满足以下任何一条, 都属于高危:

  • 多人共享的开发机、堡垒机: 研发、测试、外包同时登录
  • 多租户的容器宿主机:Kubernetes 节点、Docker 主机、虚拟化平台
  • 给非 IT 同事开了 Linux 账号: 日志管理员、数据分析师、外部审计、实习生
  • CI/CD Runner: 跑各种来源代码的构建机
  • 学校、研究机构的共享服务器: 学生账号、跨实验室共用
  • VPS 提供商给客户登录的虚机: 典型的多租户场景

只要 " 有不止一个人能登上去 ", 这台机器就在风险面里。

六、马上要做的三件事

1. 看一眼内核版本

uname -r

对照你用的发行版的安全公告:

  • Ubuntu:Ubuntu Security Notice (USN)
  • Debian:Debian Security Advisory (DSA)
  • RHEL / CentOS / Rocky / AlmaLinux:Red Hat Security Advisory (RHSA)
  • SUSE:SUSE-SU
  • 麒麟、统信: 登录对应厂商的安全中心

2. 临时缓解(还没法马上重启升级的)

绝大多数业务用不到 algif_aead 这个内核接口(它服务的是 AF_ALG 加密 socket, 占比不到 1%)。可以先把它加进黑名单:

echo "blacklist algif_aead" | sudo tee /etc/modprobe.d/cve-2026-31431.conf
sudo modprobe -r algif_aead

立竿见影, 且对绝大多数业务零影响。

3. 收紧多用户账号策略

  • 不必要的 shell 账号一律改 nologin
  • 容器加 seccomp, 屏蔽 socket(AF_ALG, ...)
  • 共享主机上跑的服务, 能切容器 / 虚机就切

七、写在最后

每隔一段时间,Linux 内核就会爆一个这种 " 普通用户一脚踹到 root" 的漏洞。

脏牛(Dirty COW)、PwnKit、Dirty Pipe……每一次都把 " 低权限账号是安全的 " 这个幻觉打碎一次。

这次 CVE-2026-31431 又来了。

如果你正在管理一台 多人能登的 Linux 机器, 今天就花十分钟, 把上面三件事做完。

别等出事的那天, 才发现公司的 " 最小权限 " 其实根本没起作用。


福利: 一键自检脚本

我整理了一份《CVE-2026-31431 一键自检 + 缓解脚本 》, 可以直接在你的服务器上跑

它会做这几件事:

  • 自动识别发行版 + 内核版本
  • 检测 algif_aead 模块当前状态(已加载? 已黑名单?)
  • 统计这台机器有几个可登录的普通账号
  • 给出本机的风险等级 (LOW / MEDIUM / HIGH), 并直接给出 中文判语 编号处置清单
  • 一键应用官方推荐的临时缓解(黑名单 + 卸载模块)
  • 输出一份给老板 /IT 看的 Markdown 报告

支持 Ubuntu / Debian / CentOS / Rocky / AlmaLinux / 麒麟 / 统信。
下图是脚本运行效果:

一个
漏洞利用效果:

一个

Shell 脚本,纯检测和防御用途, 不含任何利用代码。

给运维同学的彩蛋: 退出码 = 风险等级

脚本的退出码做了语义化设计, 直接对齐 Nagios / Zabbix 这类监控系统的行业惯例:

退出码 含义
0 LOW(无风险或已缓解)
1 MEDIUM(存在攻击面)
2 HIGH(在漏洞影响范围内, 需立即处置)

这意味着——你不需要改一行代码, 就能把它接进现有体系:

Ansible 批量扫描:

- name: 巡检 CVE-2026-31431
  script: cve-2026-31431-check.sh
  register: r
  failed_when: r.rc >= 2     # HIGH 直接红

Cron + 告警:

0 3 * * * /opt/cve-2026-31431-check.sh || \
  curl -X POST https:// 你的告警网关 -d "host=$(hostname)&risk=$?"

Zabbix / Nagios 自定义检查 :exit code 直接映射到 OK / WARNING / CRITICAL, 零改造

公司有几百台机器时, 不用一台台看输出——一次扫完,只盯返回值 ≥2 的那批就行

关注公众号后台回复关键词 31431, 我把脚本和使用说明发给你。

一个

也欢迎扩散给身边管 Linux 的朋友——这事每个公司都有份。

正文完
创作不易,扫码加点动力
post-qrcode
 0
果较瘦
版权声明:本站原创文章,由 果较瘦 于2026-05-01发表,共计3125字。
转载说明:除特殊说明外本站文章皆由果较瘦原创发布,转载请注明出处。