文件完整性保护模拟器

一个交互式演示文件完整性漏洞及HMAC-SHA256保护机制的工具,用户可模拟恶意代理对服务器文件进行读写操作并观察安全层效果。

  • by JayRaj21
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 JayRaj21/MCP-Security-Simulation

使用说明

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 --security

Windows用户: 替换 python3 和 python 在所有命令中。

run.py 自动处理所有事情——它创建了一个虚拟环境,并在第一次运行时安装依赖项。无需手动设置。

随时切换安全 使用 toggle 会话中的命令——无需重新启动。


这表明了什么

MCP服务器文件(配置、凭据、日志)没有内置的完整性保护。本地攻击者可以自由读取、修改或删除它们。安全层使用 HMAC-SHA256 用加密签名密封每个文件。任何写入或删除密封文件的尝试都会被拒绝——这与MCP中用于保护网络消息的机制相同。

关键限制

HMAC签名保证 正直 (篡改被阻止)但不是 保密性 (文件仍然可以读取)。这在演示中可见-- read 无论安全状态如何,它总是有效的。为了保密,需要加密。

命令

命令 描述
list 显示所有测试文件及其完整性状态
read <file> 将文件内容打印到屏幕上
modify <file> <content> 完全覆盖文件
append <file> <content> 在文件末尾添加一行
delete <file> 从磁盘中删除文件
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