SCP——安全防护
在持续使用或喂食LLM之前,检查、消毒、控制和隔离未知或潜在危险的内容物。用于代理本地内容安全的MCP服务器。
守卫 在《警卫-指南-构建分类法》中。根据OWASP LLM01/LLM06。
管道
- 检查 --对内容进行分类:
injection|reversal|clean - 消毒 --删除隐藏的Unicode,编辑覆盖短语(当层反转时)
- 包含 --包装内容,使其被视为数据(markdown fence或XML标签)
- 隔离 --将可疑内容移动到隔离存储(当层被注入时)
基于层次的操作
| 层级 | 行动 |
|---|---|
| 注射 | 堵塞;不要坚持或喂给LLM;可选择隔离 |
| 反转 | 消毒,然后控制 |
| 清洁 | 通过 |
MCP工具
scp_inspect(content, context?)--分类而不改变内容scp_sanitize(content, mode?)--去除/消除已知的不良图案scp_contain(content, wrapper?)--将内容包装为数据scp_quarantine(content, reason, source)--隔离可疑内容scp_list_quarantine()--列出隔离条目scp_purge_quarantine(quarantine_id?, older_than_days?)--清除隔离scp_validate_output(content, tool_name?)--使用前检查刀具输出scp_mask_secrets(content)--修改凭据/PIIscp_run_pipeline(content, sink, options?)--针对高风险水槽的一次射击
安装
pip install -e .
# or: pip install mcp运行MCP服务器
python -m scp.scp_mcp添加 mcp.json:
{
"mcpServers": {
"scp": {
"command": "python",
"args": ["-m", "scp.scp_mcp"]
}
}
}集 PYTHONPATH 或安装该软件包 scp 很重要。
环境
| 变量 | 描述 |
|---|---|
SCP_QUARANTINE_DIR | 隔离存储路径(默认: ./scp_quarantine) |
OLLAMA_BASE_URL | 语义判断: 仅限原产地 (默认值 http://localhost:11434).允许的主机: localhost, 127.0.0.1, ::1,加逗号分隔 OLLAMA_ALLOWED_HOSTS。没有路径、查询或用户信息。不遵循HTTP重定向到另一个主机。 |
OLLAMA_ALLOWED_HOSTS | 允许使用可选的额外主机名/IP(逗号分隔,不区分大小写) OLLAMA_BASE_URL |
OLLAMA_URL_STRICT | 设置为 1 拒绝解析为私有或链接本地地址的名称(缓解了一些SSRF/DNS情况) |
OLLAMA_MODEL | 用于语义判断(默认: llama3.2) |
OLLAMA_API_KEY | Ollama的可选无记名代币(以 Authorization: Bearer …;切勿在URL中添加机密) |
SCP_SEMANTIC_JUDGE | 设置为 1 全局启用语义判断 |
信任: 奥利玛只能指向你控制的主机。在共享跑步者或CI上,除非需要,否则不要进行语义判断;使用防火墙规则,这样进程除非有意,否则无法到达敏感的内部子网。
威胁注册表
图案在 scp_threat_registry.json:power_words、多语言覆盖、越狱昵称、神话游戏、比特币描述覆盖。版本随更改而变化。
测试线束矩阵
| Where | Suite | 它验证了什么 |
|---|---|---|
此存储库(CI作业 contract) | pytest tests/test_mcp_contract_v1.py | MCP工具 名字 vs OpenHarness v1套件 |
此存储库(CI作业 contract) | pytest tests/test_contract_document_hash.py | 供应商 docs/contracts/scp_mcp_v1.md SHA-256(与OpenHarness同步) |
此存储库(CI作业 promptfoo-eval) | examples/promptfoo / npx promptfoo eval | scp_utils.inspect 层 标签(脱机,无API密钥) |
| 投资组合管理 | 工作流程 scp_pipeline_regression + daggr_workflows/tests/test_scp_pipeline_golden.py | run_pipeline /Daggr对齐(使用以下命令安装此仓库 pip install -e 在该工作空间中) |
CI和检疫
- GitHub操作:
contract(Python矩阵+pytest)和promptfoo-eval(节点22,examples/promptfoo). - 隔离 默认目录
scp_quarantine/(或SCP_QUARANTINE_DIR)不得提交——列在.gitignore.
文档
- docs/OPENHARNES_CONTRACT.md --规范性MCP合同同步和
CONTRACT_HASH - docs/contracts/scp_mcp_v1.md --供应商提供的OpenHarness合同(通过哈希测试验证)
- 文档/参考.md --威胁模型、层次定义、过度隔离
- docs/RED_TEAM_PROMPTS.md --自检提示和预期行为
- docs/INTEGRATION.md --SCP作为护栏:坚持前验证,高风险水槽
- 文档/学习\_ PROMPTFOO.md --promptfoo集成、CI和检查结果
- 示例/README.md --Daggr+Gradio集成示例; examples/promptfoo --离线promptfoo eval(层探测)
常见问题解答:PDF和二进制文件
SCP工具 文本 (content: str). PDF和其他二进制文件不会直接扫描。 对于文件:
- 提取文本(例如。
pypdf,pdftotext,pymupdf). - 跑
scp_inspect/scp_run_pipeline在LLM或切换失败之前,对提取的文本进行处理。 - 单独对原始文件使用操作系统防病毒软件或等效软件(恶意软件不在SCP的范围内)。
另请参见: local-proto 文档 HUMAN_WELLBEING_CORPUS.md 用于完整的私有PDF管道(来源、块、可选RAG)。
护栏
SCP没有关机、自杀或自动终止命令。SCP检查、消毒、容纳和隔离内容——它不会自毁。
许可证
麻省理工学院
