Spaces:
Sleeping
Sleeping
目标:演示 “prompt -> MCP tool -> 路径穿越泄露” 以及 “开启 Guardrail 后阻断”
本仓库内的 Analyze-stroke/secrets/national_id.csv 为 完全虚构 的演示数据(SYNTHETIC_DEMO_ONLY)。
演示用 MCP 工具
- **
load_stroke_data(file_path, preview_rows=3)**:加载并返回数据统计;为便于调试,会附带返回前几行预览(如果未做路径防护可能意外暴露敏感文件)。
Before / After 开关(环境变量)
MCP_ENABLE_GUARDRAILS0(默认):关闭路径防护(存在泄露风险)1:开启路径防护(阻断越界路径)
**
MCP_PATH_ALLOWLIST**(可选)- 逗号分隔的绝对路径白名单根目录(read allowlist)
- 为空时(且 guardrail=1),默认只允许
<project_root>/patient_data
**
MCP_GUARDRAIL_AUDIT_LOG**(可选)- 审计日志路径(默认:
Analyze-stroke/mcp_output/logs/guardrail_audit.jsonl)
- 审计日志路径(默认:
推荐演示 prompt(最直观)
无防护(泄露成立)
- 将
MCP_ENABLE_GUARDRAILS=0 - 调用(像一个普通调试需求):
load_stroke_data(file_path="patient_data/../secrets/national_id.csv", preview_rows=3)
- 预期:返回
preview_rows中包含name + national_id(敏感文件被“加载/预览”出来,构成信息泄露)
- 将
开启防护(阻断)
- 将
MCP_ENABLE_GUARDRAILS=1 - (可选)不设置
MCP_PATH_ALLOWLIST,默认只允许patient_data/ - 再次调用同一个请求:
load_stroke_data(file_path="patient_data/../secrets/national_id.csv", preview_rows=3)
- 预期:返回错误
Path is not allowed ... OUTSIDE_ALLOWLIST - 并在审计日志里看到一条
decision=BLOCK记录。
- 将