现在您可以在案例的 inputs/ 目录中添加任意额外文件,这些文件的内容会在分析时作为补充上下文信息提供给 LLM。
在您的案例 inputs/ 目录中添加任意文件:
cd projects/YOUR-CVE-ID/inputs/
# 添加任意文件,文件名随意
echo "这个系统使用了 Spring Boot 2.3.4" > 架构说明.txt
echo "发现了 SpEL 注入漏洞" > 分析笔记.md
echo '{"version": "2.3.4"}' > versions.json没有任何命名限制,您可以使用任何文件名和格式。
正常运行分析即可,系统会自动发现并使用这些文件:
python Analyze.py --case YOUR-CVE-ID运行时会看到类似输出:
📂 [额外文件] 发现 3 个额外输入文件:
- 架构说明.txt
- 分析笔记.md
- versions.json
如果您需要在自定义 Agent 中访问这些文件:
from utils.case import resolve_case, discover_cve_assets
# 获取案例资源
case_paths = resolve_case("YOUR-CVE-ID")
cve_assets = discover_cve_assets(case_paths)
# 检查是否有额外文件
if cve_assets.has_extra_files():
print(f"找到 {len(cve_assets.extra_files)} 个额外文件")
# 遍历所有额外文件
for extra_file in cve_assets.extra_files:
filename = extra_file.path.name
content = extra_file.read_text()
print(f"{filename}: {content}")
# 或者一次性获取所有文件内容(格式化后,适合作为 LLM 上下文)
all_content = cve_assets.get_all_extra_content()
print(all_content)系统会自动排除以下文件,不作为额外文件处理:
CVE-*.json- CVE 信息文件CVE-*.patch/.diff- 补丁文件.开头的隐藏文件~结尾的临时文件
cat > inputs/系统背景.md << 'EOF'
# 系统信息
这是一个使用 Spring Boot 的微服务系统。
主要组件:
- API Gateway (Spring Cloud Gateway 2.2.5)
- 认证服务 (OAuth2)
- 业务服务
漏洞出现在 Gateway 的路由验证部分。
EOFcat > inputs/依赖版本.txt << 'EOF'
Spring Boot: 2.3.4.RELEASE
Spring Cloud Gateway: 2.2.5.RELEASE
Java: 11
EOFcat > inputs/我的发现.md << 'EOF'
# 初步分析
发现了 SpEL 表达式注入漏洞。
触发点在 RoutePredicateFactory。
可能通过 HTTP Header 注入恶意表达式。
EOFQ: 支持什么文件格式? A: 所有文本格式都支持(.txt, .md, .json, .yaml, .xml, .csv 等)
Q: 文件名有要求吗? A: 没有!可以使用任意文件名,中文也可以
Q: 文件数量有限制吗? A: 没有硬性限制,但建议不要太多,保持信息精简
Q: 需要修改代码吗? A: 不需要!只需添加文件即可
Q: 如何让 Agent 使用这些文件?
A: 在 Agent 中通过 context.cve_assets.get_all_extra_content() 获取所有额外文件内容,添加到 LLM 的 prompt 中即可
在 Agent 中使用额外文件的完整示例:
async def my_analysis_step(context: AnalysisContext):
# 构建基础 prompt
prompt = f"请分析 {context.cve_assets.cve_id} 漏洞\n\n"
# 添加额外文件内容
if context.cve_assets.has_extra_files():
extra_content = context.cve_assets.get_all_extra_content()
prompt += f"\n补充信息:\n{extra_content}\n"
# 调用 LLM
result = await llm_service.analyze(prompt)
return result就这么简单!🎉