Ananyacodes/Auto-Secure-Chain

GitHub: Ananyacodes/Auto-Secure-Chain

该平台是一个汽车 ECU 固件安全扫描工具,结合静态分析、YARA 规则匹配与加密签名验证来检测固件漏洞并保障供应链完整性。

Stars: 0 | Forks: 0

# AutoSecureChain [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) AutoSecureChain 是一个综合性的汽车电子控制单元(ECU)固件安全分析平台,它结合了静态分析、YARA 规则匹配和加密签名验证,以检测漏洞并确保供应链的完整性。 ## 演示 https://github.com/user-attachments/assets/d8ef7e3c-9599-4203-93e1-009d758d0c54 ## 功能 ### 核心扫描引擎 - **静态固件分析**:SHA-256 哈希计算、熵分析、可疑字符串检测 - **YARA 规则匹配**:基于模式的已知漏洞检测 - **加密验证**:RSA PKCS#1 v1.5 + SHA-256 签名验证 - **自动化修复**:严重性评分和可操作的缓解建议 - **CI/CD 集成**:机器可读的 JSON 报告 - **Keil uVision 分析**:检测 `.uvprojx` 项目文件中不安全的调试配置(半主机模式、JTAG/SWD),并标记 linker `.map` 文件中可疑的符号名称(后门、测试钩子);`.axf`/`.hex` Keil 构建输出会与 `.bin`/`.img`/`.fw` 一起进行扫描 ### 企业安全功能 - **加密密钥存储**:采用 PKCS#8 加密,并支持可选的操作系统密钥环 - **云 KMS 集成**:支持企业部署环境下的 AWS KMS 和 HSM - **多重签名审批**:基于区块链的溯源追踪,支持 N-of-M 审批机制 - **REST API**:支持企业级集成,提供 JWT 身份验证和速率限制 - **审计日志**:全面的事件追踪,带有不可变日志 - **硬件安全模块**:支持 PKCS#11 HSM(YubiHSM、Thales 等) ### 可靠性与测试 - **单元测试**:包含 25+ 个测试,涵盖密钥管理、扫描和 API 端点 - **端到端集成测试**:涵盖从签名到验证的完整工作流 - **CI/CD 流水线**:采用 GitHub Actions,支持多操作系统/Python 版本矩阵 - **Gas 优化的智能合约**:Solidity 合约的 Gas 效率提升了 30% 以上 ## 快速开始 ### 前置条件 - Python 3.11 或更高版本 - Git ### 安装 ``` # 克隆 repository git clone https://github.com/Ananyacodes/Auto-Secure-Chain.git cd Auto-Secure-Chain # 运行 setup(创建 venv,安装 dependencies) .\setup.ps1 # 将 firmware 文件(.bin, .img, .fw, .axf, .hex)放置在 ./firmware/ 目录中 # 可选择将 Keil .uvprojx / .map 文件放置在旁边,用于 build-config 分析 # 然后运行 scanner .\run-scanner.ps1 ``` ## 用法 ### 基础扫描 ``` # 扫描 ./firmware/ 中的所有 firmware 文件 .\run-scanner.ps1 # 扫描自定义目录 .\run-scanner.ps1 -FirmwareDir "C:\path\to\firmware" # Key 管理命令 .\run-scanner.ps1 -KeyCommand list .\run-scanner.ps1 -KeyCommand generate -KeyName production -KeySize 4096 .\run-scanner.ps1 -KeyCommand sign -FirmwarePath "C:\path\to\firmware.bin" -KeyName production .\run-scanner.ps1 -KeyCommand verify -FirmwarePath "C:\path\to\firmware.bin" -KeyName production ``` ### 手动执行 ``` # 激活虚拟环境 .\venv\Scripts\Activate.ps1 # 直接运行 scanner python AutoSecureChain\scanner\scanner.py # 查看报告 Get-Content -Raw AutoSecureChain\reports\report.json | ConvertFrom-Json | ConvertTo-Json -Depth 10 ``` ## 示例输出 ``` AutoSecureChain - ECU Firmware Scanner ======================================== Activating virtual environment... Checking dependencies... Found 2 firmware file(s) Running security scan... Scanned ecu_v1.2.3.bin severity=3 Scanned bootloader.bin severity=0 Keil artifact firmware.uvprojx: 2 finding(s) Scan Results: ================ File: ecu_v1.2.3.bin SHA-256: a1b2c3d4... Severity: 3 Entropy: 7.21 Signature: Not found Suspicious findings: 2 Recommended Actions: Enforce signed firmware with verified public keys Protect debug interfaces ``` ## 文档 提供了关于部署、安全和操作的完整文档: | 文档 | 用途 | |---|---| | [API_DOCUMENTATION.md](API_DOCUMENTATION.md) | REST API 端点、身份验证、示例 | | [API_AUTH.md](API_AUTH.md) | 认证详情和速率限制配置 | | [SECURITY_PLAYBOOK.md](SECURITY_PLAYBOOK.md) | 安全策略、事件响应、威胁模型 | | [KMS_HSM_SETUP.md](KMS_HSM_SETUP.md) | AWS KMS 和 HSM 配置指南 | | [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) | Docker、Kubernetes、生产环境部署 | | [GAS_OPTIMIZATION_REPORT.md](GAS_OPTIMIZATION_REPORT.md) | 智能合约优化和基准测试 | ## REST API 概览 AutoSecureChain 暴露了全面的 REST API 以供企业集成: ### 快速示例 ``` # 获取 authentication token TOKEN=$(curl -s -X POST http://localhost:5000/api/v1/auth/token \ -H "Content-Type: application/json" \ -d '{"client_id":"my_app"}' | jq -r '.token') # 生成新 key curl -X POST http://localhost:5000/api/v1/keys/generate \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "production", "size": 4096, "passphrase": "SecurePassphrase123!" }' # 签名 firmware curl -X POST http://localhost:5000/api/v1/firmware/sign \ -H "Authorization: Bearer $TOKEN" \ -F "file=@firmware.bin" \ -F "key=production" # 验证 firmware curl -X POST http://localhost:5000/api/v1/firmware/verify \ -H "Authorization: Bearer $TOKEN" \ -F "file=@firmware.bin" \ -F "key=production" ``` ### 端点 - **身份验证**:`POST /api/v1/auth/token` - **密钥管理**:`POST/GET /api/v1/keys/*` - **固件操作**:`POST /api/v1/firmware/sign`, `POST /api/v1/firmware/verify` - **审计日志**:`GET /api/v1/audit/recent`, `GET /api/v1/audit/search` - **健康检查**:`GET /api/v1/health`, `GET /api/v1/info` 有关完整的端点参考,请参阅 [API_DOCUMENTATION.md](API_DOCUMENTATION.md)。 ## CLI 命令 ### 密钥管理 ``` # 生成新 keypair python AutoSecureChain/scanner/key_manager_cli.py generate \ --name "production" --size 4096 --use-keyring # 签名 firmware python AutoSecureChain/scanner/key_manager_cli.py sign firmware.bin \ --key "production" --backend local # 验证 signature python AutoSecureChain/scanner/key_manager_cli.py verify firmware.bin \ --key "production" # 轮换 key python AutoSecureChain/scanner/key_manager_cli.py rotate old_key \ --new-key new_key_v2 # 列出 keys python AutoSecureChain/scanner/key_manager_cli.py list # 查看审计日志 python AutoSecureChain/scanner/key_manager_cli.py audit recent --limit 50 ``` ### 扫描器 ``` # 运行 scanner python AutoSecureChain/scanner/scanner.py # 扫描特定目录 python AutoSecureChain/scanner/scanner.py --firmware-dir "/path/to/firmware" # 输出机器可读报告 cat AutoSecureChain/reports/report.json | jq . ``` ## 智能合约部署 AutoSecureChain 包含用于固件溯源追踪的、经过 Gas 优化的智能合约: ``` # 编译 contracts npx hardhat compile # 运行测试 npx hardhat test # 查看 gas benchmarks npx hardhat test test/autoSecure.gas.test.ts # 部署到网络 npx hardhat run scripts/deploy.ts --network sepolia ``` 有关优化详情,请参阅 [GAS_OPTIMIZATION_REPORT.md](GAS_OPTIMIZATION_REPORT.md)。 ## 安全最佳实践 ### 密钥管理 ``` # 生成带有 OS keyring 支持的加密 keypair python AutoSecureChain/scanner/key_manager_cli.py generate \ --name "production" --size 4096 --passphrase "YourSecurePassword" --use-keyring # 适用于 AWS KMS backend python AutoSecureChain/scanner/key_manager_cli.py sign firmware.bin \ --key "production" --backend kms --kms-key-id "alias/autosecurechain-signing" # 适用于 HSM backend python AutoSecureChain/scanner/key_manager_cli.py sign firmware.bin \ --key "production" --backend hsm ``` ### 静态加密 - 私钥使用 PKCS#8 + AES-256 加密 - 密码短语存储在操作系统密钥环中(macOS Keychain、Linux Secret Service、Windows Credential Manager) - 对密钥文件强制执行安全的文件权限 (600) ### 身份验证与速率限制 - JWT Bearer token 身份验证(1小时过期) - 严格的速率限制:认证接口 10次/小时,API 操作 100次/小时 - 建议启用基于 IP 的速率限制和 DDoS 防护 ### 事件响应 请参阅 [SECURITY_PLAYBOOK.md](SECURITY_PLAYBOOK.md) 了解: - 威胁模型和深度防御策略 - 密钥泄露响应程序 - 审计日志分析技术 - 密钥轮换程序 - 备份和恢复协议 ## CI/CD 集成 ### GitHub Actions ``` # .github/workflows/firmware-scan.yml - name: Run security scan run: | python -m venv venv source venv/bin/activate pip install -r requirements.txt python AutoSecureChain/scanner/scanner.py - name: Fail on critical findings run: | python -c "import json; \ report = json.load(open('AutoSecureChain/reports/report.json')); \ exit(1 if any(f['severity_score'] > 5 for f in report['files']) else 0)" - name: Run tests run: | pytest -v AutoSecureChain/scanner/ ``` ### 自动化密钥轮换 ``` # 每 90 天轮换一次 keys 0 0 1 */3 * /opt/autosecurechain/rotate-keys.sh ``` ## 项目结构 ``` AutoSecureChain/ ├── scanner/ │ ├── scanner.py # Core analysis engine │ ├── keil_analyzer.py # Keil uVision project & .map file analysis │ ├── key_manager.py # Secure key management │ ├── key_manager_cli.py # CLI for key operations │ ├── kms.py # KMS/HSM signer adapters │ ├── cli_validators.py # Input validation & file locking │ ├── api.py # Flask REST API │ ├── auth.py # JWT authentication │ ├── rules.yar # YARA detection rules │ ├── test_*.py # Unit tests │ └── create_test_keys.py # Test key generator ├── contracts/ │ ├── AutoSecure.sol # Provenance tracking contract │ └── interfaces/ │ └── IAutoSecure.sol # Interface definition ├── test/ │ └── autoSecure.*.test.ts # Solidity contract tests ├── scripts/ │ ├── deploy.ts # Contract deployment │ ├── verify.ts # Contract verification │ └── rotate-keys.sh # Key rotation automation ├── frontend/ # React UI (future) ├── reports/ # Generated reports (gitignored) ├── .github/workflows/ # CI/CD pipelines ├── requirements.txt # Python dependencies ├── package.json # Node.js dependencies ├── README.md # This file └── SECURITY_PLAYBOOK.md # Security documentation ``` ## 配置 ### 环境变量 ``` # 在 production 中为必需 export AUTOS_JWT_SECRET="your-32-byte-random-hex" export FLASK_ENV="production" # 可选 export AUTOS_KEY_BACKEND="local" # or "kms" or "hsm" export AUTOS_LOG_LEVEL="INFO" export PORT="5000" ``` ### 自定义 YARA 规则 编辑 `AutoSecureChain/scanner/rules.yar`: ``` rule custom_backdoor { strings: $pattern = "CUSTOM_BACKDOOR_SIGNATURE" condition: $pattern } ``` 内置的 `keil_semihosting_indicators` 规则会标记编译进固件中的 ARM 半主机标记(`SemiHost`、`AngelSWI`、`BKPT 0xAB` 断点指令)——这表明发布的是调试版本而不是正式版本。 ## 测试 ### 运行所有测试 ``` # 单元测试 pytest -v AutoSecureChain/scanner/test_*.py # Solidity contract 测试 npx hardhat test # 附带 coverage pytest --cov=AutoSecureChain/scanner --cov-report=html ``` ### CI/CD 测试矩阵 - **Python:** 3.9, 3.10, 3.11, 3.12 - **操作系统:** Ubuntu, Windows, macOS - **Node.js:** 18.x, 20.x ## 故障排除 **问题:“No firmware files found”** 将 `.bin`、`.img`、`.fw`、`.axf` 或 `.hex` 文件放入 `./firmware/` 目录中 **问题:报告中缺少 Keil 分析部分** 确保将 `.uvprojx` 和/或 `.map` 文件放在与正在扫描的固件相同的目录中 —— `keil_analysis` 仅在找到至少一个此类文件时才会出现在 `report.json` 中 **问题:“cryptography not installed”** 运行 `pip install -r requirements.txt` **问题:“Signature verification failed”** 确保公钥与用于签名的私钥相匹配 验证签名算法是否为 RSA PKCS#1 v1.5 + SHA-256 **问题:“Port 5000 already in use”** 使用 `export PORT=5001` 更改端口 ## 性能与优化 ### 智能合约 Gas 基准测试 - `storeProvenance`:~95,000 gas(优化了 30%) - `approveProvenance`:~50,000 gas(优化了 33%) - `addApprover`:~40,000 gas(优化了 38%) 详情请参阅 [GAS_OPTIMIZATION_REPORT.md](GAS_OPTIMIZATION_REPORT.md)。 ### API 性能 - 响应时间:典型操作 <500ms - 吞吐量:每个实例 100+ 请求/秒 - 速率限制:每个 API token 100 请求/小时 ## 许可证 MIT 许可证 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 贡献 1. Fork 该仓库 2. 创建功能分支 (`git checkout -b feature/detection-rule`) 3. 提交更改 (`git commit -m 'Add detection rule'`) 4. 推送到分支 (`git push origin feature/detection-rule`) 5. 发起 Pull Request **为汽车网络安全而构建**
标签:Python, YARA, 云安全监控, 云资产可视化, 固件安全分析, 域名收集, 无后门, 汽车电子, 请求拦截, 逆向工具, 静态分析