Ananyacodes/Auto-Secure-Chain
GitHub: Ananyacodes/Auto-Secure-Chain
该平台是一个汽车 ECU 固件安全扫描工具,结合静态分析、YARA 规则匹配与加密签名验证来检测固件漏洞并保障供应链完整性。
Stars: 0 | Forks: 0
# AutoSecureChain
[](https://opensource.org/licenses/MIT)
[](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, 云安全监控, 云资产可视化, 固件安全分析, 域名收集, 无后门, 汽车电子, 请求拦截, 逆向工具, 静态分析