<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>容器安全 on KnightLi的博客</title>
        <link>https://www.knightli.com/tags/%E5%AE%B9%E5%99%A8%E5%AE%89%E5%85%A8/</link>
        <description>Recent content in 容器安全 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Fri, 01 May 2026 18:42:34 +0800</lastBuildDate><atom:link href="https://www.knightli.com/tags/%E5%AE%B9%E5%99%A8%E5%AE%89%E5%85%A8/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Copy Fail 漏洞 CVE-2026-31431：Linux 内核文件复制路径中的容器逃逸风险</title>
        <link>https://www.knightli.com/2026/05/01/copy-fail-cve-2026-31431-linux-kernel-container-escape/</link>
        <pubDate>Fri, 01 May 2026 18:42:34 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/05/01/copy-fail-cve-2026-31431-linux-kernel-container-escape/</guid>
        <description>&lt;p&gt;Copy Fail 是一个影响 Linux 内核文件复制路径的漏洞，编号为 &lt;code&gt;CVE-2026-31431&lt;/code&gt;。
Bugcrowd 的分析把它称为一个值得关注的内核级问题：在特定条件下，非特权用户可以利用文件复制相关逻辑触发越权写入，进而造成权限提升或容器逃逸。&lt;/p&gt;
&lt;p&gt;从风险角度看，它不是普通应用层漏洞。
问题发生在内核处理文件复制和页面缓存的路径上，因此影响面会延伸到容器、共享主机、CI/CD Runner、PaaS 平台和多租户 Linux 环境。
如果攻击者已经能在系统里运行低权限代码，漏洞就可能成为进一步突破隔离边界的跳板。&lt;/p&gt;
&lt;h2 id=&#34;漏洞大致发生在哪里&#34;&gt;漏洞大致发生在哪里
&lt;/h2&gt;&lt;p&gt;Copy Fail 关联的是 Linux 内核中的文件复制能力。
现代 Linux 提供了多种高效复制路径，例如 &lt;code&gt;copy_file_range&lt;/code&gt;、splice 类路径以及不同文件系统之间的数据复制优化。
这些机制的目标是减少用户态和内核态之间的数据搬运，提高大文件复制性能。&lt;/p&gt;
&lt;p&gt;问题在于，高性能复制路径通常会复用页缓存、文件偏移、权限检查和文件系统回调。
如果其中某个边界条件处理不严，内核可能在错误的权限上下文里执行写入，或者把本不应该被修改的数据页暴露给攻击者控制。&lt;/p&gt;
&lt;p&gt;Copy Fail 的核心风险可以概括为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;攻击者不需要 root 权限；&lt;/li&gt;
&lt;li&gt;攻击入口来自常见文件复制能力；&lt;/li&gt;
&lt;li&gt;影响点在内核态；&lt;/li&gt;
&lt;li&gt;在容器环境里，漏洞可能绕过命名空间和挂载隔离；&lt;/li&gt;
&lt;li&gt;成功利用后可能写入宿主机上不应被容器修改的内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这也是它被重点讨论的原因。
容器安全依赖 Linux 内核提供隔离能力，一旦内核路径本身出现越权写入，容器边界就会变得脆弱。&lt;/p&gt;
&lt;h2 id=&#34;为什么容器场景更敏感&#34;&gt;为什么容器场景更敏感
&lt;/h2&gt;&lt;p&gt;容器并不是虚拟机。
容器内进程和宿主机共享同一个 Linux 内核，只是通过 namespace、cgroup、capability、seccomp、AppArmor/SELinux 等机制做隔离。&lt;/p&gt;
&lt;p&gt;如果漏洞发生在用户态服务里，通常只影响某个容器或某个进程。
但如果漏洞发生在内核里，尤其是可以被非特权用户触发的内核漏洞，攻击者可能从容器内部影响宿主机。&lt;/p&gt;
&lt;p&gt;Copy Fail 的危险点就在这里。
很多平台允许用户提交构建任务、运行脚本、启动容器或执行插件。
攻击者只要能在容器里运行代码，就可能尝试利用内核文件复制路径突破隔离。&lt;/p&gt;
&lt;p&gt;高风险环境包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kubernetes 集群中的不可信工作负载；&lt;/li&gt;
&lt;li&gt;CI/CD 平台的共享 Runner；&lt;/li&gt;
&lt;li&gt;允许用户上传代码执行的沙箱平台；&lt;/li&gt;
&lt;li&gt;多租户 Linux 主机；&lt;/li&gt;
&lt;li&gt;容器化 PaaS；&lt;/li&gt;
&lt;li&gt;运行第三方插件或扩展的系统。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些环境里的内核版本处于受影响范围，而且缺少额外限制，风险就会明显升高。&lt;/p&gt;
&lt;h2 id=&#34;受影响范围要看内核补丁状态&#34;&gt;受影响范围要看内核补丁状态
&lt;/h2&gt;&lt;p&gt;这类漏洞的判断不能只看发行版名称。
同一个 Ubuntu、Debian、RHEL、Fedora 或 Arch 版本，是否受影响取决于当前实际运行的内核包，以及发行版是否已经回补补丁。&lt;/p&gt;
&lt;p&gt;排查时应优先确认三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;当前运行内核版本；&lt;/li&gt;
&lt;li&gt;发行版安全公告是否提到 &lt;code&gt;CVE-2026-31431&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;云厂商或托管平台是否已经完成宿主机内核修复。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;可以先在系统上确认内核版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uname -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后查看发行版安全公告、内核 changelog 或云平台公告。
不要只根据主版本号判断是否安全，因为很多企业发行版会把安全补丁回补到旧版本内核里。&lt;/p&gt;
&lt;h2 id=&#34;临时缓解思路&#34;&gt;临时缓解思路
&lt;/h2&gt;&lt;p&gt;最可靠的修复方式仍然是更新内核。
但在补丁无法立刻部署的环境里，可以先降低暴露面。&lt;/p&gt;
&lt;p&gt;常见缓解方向包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;禁止不可信用户运行特权容器；&lt;/li&gt;
&lt;li&gt;避免给容器挂载敏感宿主机路径；&lt;/li&gt;
&lt;li&gt;收紧容器 capability，尤其不要随意授予 &lt;code&gt;CAP_SYS_ADMIN&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;使用 seccomp、AppArmor 或 SELinux 限制危险系统调用和文件访问；&lt;/li&gt;
&lt;li&gt;将不可信工作负载迁移到隔离更强的虚拟机；&lt;/li&gt;
&lt;li&gt;对 CI/CD Runner 做按任务销毁，避免长期复用同一宿主机；&lt;/li&gt;
&lt;li&gt;监控异常文件写入、权限变更和容器逃逸迹象。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些措施不能替代补丁。
它们的作用是降低攻击成功率和影响面，特别是在补丁发布到生产环境之前争取缓冲时间。&lt;/p&gt;
&lt;h2 id=&#34;修复优先级&#34;&gt;修复优先级
&lt;/h2&gt;&lt;p&gt;建议按环境风险排序处理。&lt;/p&gt;
&lt;p&gt;优先修复：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对外提供容器执行能力的平台；&lt;/li&gt;
&lt;li&gt;运行不可信代码的 CI/CD 节点；&lt;/li&gt;
&lt;li&gt;多租户 Kubernetes 节点；&lt;/li&gt;
&lt;li&gt;有用户自定义插件或脚本执行能力的系统；&lt;/li&gt;
&lt;li&gt;共享开发机、教学机、实验平台。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相对低优先级：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单用户桌面；&lt;/li&gt;
&lt;li&gt;只运行可信服务的内网主机；&lt;/li&gt;
&lt;li&gt;已经使用虚拟机隔离不可信代码的环境。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;即便风险较低，也建议随发行版更新内核。
内核漏洞常常会被组合进更复杂的攻击链里，拖延补丁没有太多收益。&lt;/p&gt;
&lt;h2 id=&#34;给运维团队的检查清单&#34;&gt;给运维团队的检查清单
&lt;/h2&gt;&lt;p&gt;可以按下面顺序处理：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;盘点所有 Linux 主机和容器节点；&lt;/li&gt;
&lt;li&gt;标记会运行不可信代码的机器；&lt;/li&gt;
&lt;li&gt;检查当前内核版本和发行版安全公告；&lt;/li&gt;
&lt;li&gt;优先更新高风险节点；&lt;/li&gt;
&lt;li&gt;对无法立即更新的节点启用临时隔离策略；&lt;/li&gt;
&lt;li&gt;检查容器运行时配置，移除不必要的特权和宿主机挂载；&lt;/li&gt;
&lt;li&gt;更新后重启节点，确认新内核已经实际生效；&lt;/li&gt;
&lt;li&gt;保留变更记录，方便后续审计。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;内核包安装完成并不代表系统已经运行在新内核上。
更新后必须重启，并再次确认：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uname -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Copy Fail / &lt;code&gt;CVE-2026-31431&lt;/code&gt; 的重点不是某个应用崩溃，而是 Linux 内核文件复制路径中的权限边界问题。
它让非特权代码有机会触碰更高权限的数据写入路径，因此在容器和多租户环境里尤其值得重视。&lt;/p&gt;
&lt;p&gt;处理这类漏洞时，最重要的是两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;尽快跟进发行版或云厂商提供的内核补丁；&lt;/li&gt;
&lt;li&gt;在补丁部署前限制不可信代码、特权容器和敏感宿主机挂载。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对个人桌面来说，它可能不是马上需要恐慌的问题。
但对运行容器平台、CI/CD、沙箱和共享主机的团队来说，应该把它当作高优先级内核安全更新处理。&lt;/p&gt;
&lt;p&gt;参考来源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bugcrowd.com/blog/what-we-know-about-copy-fail-cve-2026-31431/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bugcrowd：What We Know About Copy Fail CVE-2026-31431&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://copy.fail/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Copy Fail 官方说明&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
