CVE-2019-11246

背景:同一功能点的三次安全事件

kubectl cp 的工作流程是:在容器内运行 tar 打包文件,传输到本地后由 kubectl 解压。如果容器内的 tar 被攻击者控制,它就能构造任意 tar 包内容。围绕这一信任模型,依次出现了三个漏洞:

  • 第一次:CVE-2018-1002100*
    攻击者在 tar 条目中使用 ../../ 路径,直接跳出目标目录。修复方式是在解压前调用 clean 函数,剥离路径中的 ../ 序列。
  • 第二次:CVE-2019-1002101*
    攻击者发现 clean 只检查字符串,不解析符号链接。于是构造一个符号链接 link 指向 ~/.ssh,再放入文件 link/authorized_keys。路径字符串中没有 ../,通过检查;但文件系统在写入时跟随符号链接,最终写入了 ~/.ssh/authorized_keys。修复方式是在创建符号链接时,检查其目标路径是否在允许的目标目录内
  • 第三次:CVE-2019-11246*
    由 Atredis Partners 的 Charles Holmes 在 CNCF 资助的安全审计中发现。他意识到,CVE-2019-1002101 的符号链接目标检查是单层的、静态的,而文件系统的路径解析是动态的、可组合的。利用这一落差,攻击者可以构造两个符号链接的组合,使最终的文件写入路径逃逸出目标目录。

漏洞原理

CVE-2019-11246 是 kubectl cp 中 CVE-2019-1002101 修复不完整导致的绕过。标准形态很简单:恶意容器的 tar 包中包含一条指向敏感目录的绝对路径符号链接(如 link/home/user/.ssh),以及一个普通文件条目(如 link/authorized_keys)。解压时,之前的修复未能正确阻止绝对路径符号链接的创建,文件系统随后跟随该链接,将文件写入 /home/user/.ssh/authorized_keys

漏洞复现

生成恶意 tar + tar 劫持脚本

image-20260914151245656

创建恶意 pod

image-20260914151528500

注入 + 劫持

image-20260914151731528

触发并验证逃逸

image-20260914151823760

标签: none

添加新评论

邮箱仅用于识别回复,不会在页面公开。提交后请等待页面确认结果。

文章图片预览