MCP安全模拟
文件完整性漏洞和HMAC-SHA256保护的交互式演示。您扮演恶意代理的角色,试图读取、修改和销毁敏感的MCP服务器文件,并且可以随时打开和关闭安全层以查看差异。
快速开始
先决条件: Python 3.8或更高版本。不需要其他工具。
# Clone the repo
git clone https://github.com/JayRaj21/MCP-Security-Simulation.git
cd MCP-Security-Simulation
# Start with security OFF (files unprotected)
python3 run.py
# Start with security ON (files HMAC-sealed)
python3 run.py --securityWindows用户: 替换python3和python在所有命令中。
run.py 自动处理所有事情——它创建了一个虚拟环境,并在第一次运行时安装依赖项。无需手动设置。
随时切换安全 使用 toggle 会话中的命令——无需重新启动。
______________________________________________________________________
这表明了什么
MCP服务器文件(配置、凭据、日志)没有内置的完整性保护。本地攻击者可以自由读取、修改或删除它们。安全层使用 HMAC-SHA256 用加密签名密封每个文件。任何写入或删除密封文件的尝试都会被拒绝——这与MCP中用于保护网络消息的机制相同。
关键限制
HMAC签名保证 正直 (篡改被阻止)但不是 保密性 (文件仍然可以读取)。这在演示中可见-- read 无论安全状态如何,它总是有效的。为了保密,需要加密。
命令
| 命令 | 描述 |
|---|---|
list | 显示所有测试文件及其完整性状态 |
read | 将文件内容打印到屏幕上 |
modify | 完全覆盖文件 |
append | 在文件末尾添加一行 |
delete | 从磁盘中删除文件 |
toggle | 打开或关闭安全功能 |
status | 显示每个文件的安全模式和HMAC密封状态 |
help | 显示所有命令和攻击想法 |
exit | 退出 |
测试文件
自动创建于 test_files/ 并在每次启动时恢复:
| 文件 | 内容 |
|---|---|
config.json | 带有API密钥和数据库凭据的服务器配置 |
user_database.csv | 用户记录、角色和API令牌 |
secrets.env | 生产凭据和加密密钥 |
audit_log.txt | 访问和事务审计日志 |
当程序再次启动时,在前一个会话中删除或修改的任何文件都会自动恢复。
安全工作原理
当安全是 开,每个文件都会得到一个 .sig 包含其内容的HMAC-SHA256哈希的文件,使用共享密钥计算:
signature = HMAC-SHA256(shared_secret, file_content)任何 modify, append,或 delete 在触摸文件系统之前,命令被阻止。没有密钥,攻击者无法伪造有效的签名。
当安全是 关闭,the .sig 文件被删除,所有操作都可以自由进行。
示例会话
[ATTACKER | INSECURE] > delete user_database.csv
[DELETED] 'user_database.csv' removed from disk.
[ATTACKER | INSECURE] > toggle
Security ON — HMAC-SHA256 seals applied.
✓ config.json
✓ secrets.env
✓ audit_log.txt
[ATTACKER | SECURE] > delete user_database.csv
[BLOCKED] Cannot delete 'user_database.csv'.
The file is sealed with HMAC-SHA256.
Deletion requires the shared secret key — which you don't have.
[ATTACKER | SECURE] > read secrets.env
# Production credentials — DO NOT SHARE
JWT_SECRET=8f14e45fceea167a5a36dedd4bea2543
...
(read succeeds — signing prevents tampering, not eavesdropping)项目结构
MCP-Security-Simulation/
├── run.py # One-command launcher (handles venv + deps automatically)
├── demo.py # Entry point — argument parsing
├── file_agent.py # Interactive REPL and file integrity logic
├── security.py # HMAC-SHA256 signing and verification
├── test_files/ # Auto-created — the files you try to attack
├── mcp_server.py # Reference: simulated MCP server (educational)
├── mitm_proxy.py # Reference: malicious MITM proxy (educational)
├── mcp_client.py # Reference: MCP client library (educational)
└── requirements.txt