peUgnMD.png

 找回密码
 立即注册

QQ登录

只需一步,快速开始

peUfSYR.png
查看: 4|回复: 0

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

[复制链接]

852

主题

13

回帖

2726

积分

管理员

积分
2726
发表于 3 小时前 | 显示全部楼层 |阅读模式
一、小李的故事

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    不想看技术细节的读者,可以先记住这一句话:
    CVE-2026-31431 的本质,就是 Linux 内核在打包外卖时手一抖,把后厨的钥匙串塞进了你的外卖袋。

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

    ━━━━━━━━━━━━━━━━━━━━

    想象你点了份外卖。

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

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

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

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

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

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

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

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

    ━━━━━━━━━━━━━━━━━━━━

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

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

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

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

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

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

    五、谁该立刻自查

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

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

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

    六、马上要做的三件事

    1. 看一眼内核版本
    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. 临时缓解(还没法马上重启升级的)

    绝大多数业务用不到
    1. algif_aead
    复制代码
    这个内核接口(它服务的是 AF_ALG 加密 socket,占比不到 1%)。可以先把它加进黑名单:
    1. echo "blacklist algif_aead" | sudo tee /etc/modprobe.d/cve-2026-31431.conf
    2. sudo modprobe -r algif_aead
    复制代码

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

    3. 收紧多用户账号策略

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

    七、写在最后

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

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

    这次 CVE-2026-31431 又来了。

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

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

    ━━━━━━━━━━━━━━━━━━━━

    福利:一键自检脚本

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

    它会做这几件事:

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

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


    漏洞利用效果:



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

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

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

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

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

    Ansible 批量扫描:
    1. - name: 巡检 CVE-2026-31431
    2.   script: cve-2026-31431-check.sh
    3.   register: r
    4.   failed_when: r.rc >= 2     # HIGH 直接红
    复制代码

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

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

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

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



    也欢迎扩散给身边管 Linux 的朋友——这事每个公司都有份。
  • 您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    冒险岛079
    扫码关注微信公众号

    Archiver|手机版|小黑屋|风叶林

    GMT+8, 2026-5-1 20:29 , Processed in 0.147728 second(s), 19 queries .

    Powered by 风叶林

    © 2001-2026 Discuz! Team.

    快速回复 返回顶部 返回列表