AMEOBIUS-team/bounty-hunter-toolkit
GitHub: AMEOBIUS-team/bounty-hunter-toolkit
该工具包提供 51 种经过验证的安全修复模式,帮助开发者在几分钟内自动匹配并应用漏洞修复代码,加速漏洞赏金计划中的漏洞修复与赏金获取。
Stars: 0 | Forks: 0
# 漏洞赏金工具包
[](https://pypi.org/project/bounty-hunter-toolkit/)
[](tests/)
[](src/)
[](LICENSE)
[](https://python.org)
## 安装
```
pip install bounty-hunter-toolkit
```
## 这是什么?
GitHub 上的漏洞赏金计划会发布诸如“修复 `user.py` 中的 SQL 注入”之类的问题,赏金从 $5 到 $500 不等。本工具包包含了解决这些问题的**经过验证的修复模式**,因此您可以在几分钟内应用正确的修复,而无需从头开始研究。
51 种模式。67 个测试。在 ClankerNation、ai-research、TentOfTrials 和 Nexussyn 等仓库中发现并修复了真实的漏洞。
## 模式分类
### Python 安全修复(27 种模式)
| 漏洞 | 修复 | 模式 |
|--------------|-----|---------|
| SQL 注入 | 参数化查询 | `cursor.execute("SELECT * WHERE id = ?", (id,))` |
| JWT None 算法 | 显式算法列表 | `jwt.decode(token, key, algorithms=["HS256"])` |
| XXE | defusedxml / 实体移除 | 禁用 DTD 外部实体 |
| SSTI | Jinja2 自动转义 | 使用 `render_template()` 而非 `render_template_string()` |
| NoSQL 注入 | 类型验证 | `if not isinstance(id, int): reject` |
| CSRF | 基于会话的 token | `session['csrf_token'] = secrets.token_hex()` |
| 开放重定向 | urlparse 验证 | 检查 `urlparse(target).netloc == ''` |
| Log4j JNDI | 输入清理 | 移除 `${jndi:ldap:}` 模式 |
| 不安全的 YAML | safe_load | 使用 `yaml.safe_load(data)` 而非 `yaml.load()` |
| 不安全的 Pickle | 受限的 Unpickler | `pickle.Unpickler().find_class = restricted` |
| Docker 逃逸 | seccomp 配置 | 移除 `CAP_SYS_ADMIN`,添加 `--security-opt` |
| 路径遍历 | Path.resolve 检查 | `if not path.resolve().is_relative_to(base)` |
| SSRF | IP 段验证 | 阻止 `169.254.0.0/16`、`10.0.0.0/8` |
| 命令注入 | subprocess 列表形式 | 使用 `subprocess.run(["ls", arg])` 而非 `os.system()` |
| XXE SOAP | 禁用 DTD | `parser.feature_external_ges = False` |
| 不安全的反序列化 | 使用 JSON 代替 pickle | 对不受信任的数据使用 `json.loads()` |
| 竞争条件 | 文件锁定 | `fcntl.flock(f, fcntl.LOCK_EX)` |
| 信息泄露 | 移除 debug 模式 | `app.debug = False` |
| 弱加密 | 使用 hashlib | 使用 `hashlib.sha256()` 而非 `hashlib.md5()` |
| 不安全的文件上传 | 验证扩展名 + 魔数 | 检查文件头字节 |
| 批量赋值 | 显式字段白名单 | `Model(**allowed_fields_only)` |
| 时序攻击 | 恒定时间比较 | `hmac.compare_digest(a, b)` |
| 会话固定 | 登录时重新生成 | 认证后执行 `session.regenerate()` |
| 不安全的 CORS | 显式 origins | `CORS(app, origins=["https://app.com"])` |
| 点击劫持 | X-Frame-Options | `response.headers['X-Frame-Options'] = 'DENY'` |
| MIME 嗅探 | X-Content-Type-Options | `response.headers['X-Content-Type-Options'] = 'nosniff'` |
| 不安全的 Cookie | Secure + HttpOnly 标志 | `set_cookie(..., secure=True, httponly=True)` |
### Solidity 安全修复(15 种模式)
| 合约 | 漏洞 | 修复 |
|----------|--------------|-----|
| AgentRegistry | 未检查的批量操作 | 循环边界 + 失败时 revert |
| GovernorAlpha | 缺少法定人数 | 要求 `quorumVotes <= totalVotes` |
| Timelock | 队列绕过 | 强制 `delay >= MINIMUM_DELAY` |
| PaymentEscrow | 零金额耗尽 | `require(msg.value > 0)` |
| MultiTokenStaking | emergencyWithdraw 耗尽 | 提取前检查质押余额 |
| InterestRateModel | 缺少事件 | 状态改变时触发事件 |
| AMMPool | 未索引的事件 | 为关键参数添加 `indexed` |
| CompoundVault | 重入攻击 | 添加 `nonReentrant` 修饰符 |
| RandomLottery | 无退款机制 | 如果赢家未认领则允许退款 |
| PrizeSplit | 零份额除法 | `require(share > 0)` |
| GasSponsorRelay | ERC2771 不匹配 | 验证 `trustedForwarder` |
| TokenBridge | 未验证的地址 | 检查 `isContract(target)` |
| AgentToken | Permit 重放 | 在 domain separator 中包含 `chainId` |
| SafeERC20 | Transfer 返回值 | 使用 `SafeERC20.safeTransfer()` |
| Permit2Adapter | 无 Gas 授权耗尽 | 限制额度 + 有效期 |
### TypeScript/SDK 修复(9 种模式)
| 文件 | 漏洞 | 修复 |
|------|--------------|-----|
| session.ts | 401 不刷新 | 收到 401 响应时自动刷新 |
| wallet.ts | 错误的 EIP-712 | 类型化数据结构验证 |
| rpc.ts | 批量注入 | 验证 JSON-RPC 批量项目 |
| websocket.ts | 重复重连 | 通过连接 ID 去重 |
| crypto.ts | 错误的 recovery | secp256k1 recovery 标志处理 |
| retry.ts | 无限重试 | 带有退避上限的条件重试 |
| deploy.py | 缺少 Gas 估算 | 发送前执行 `web3.eth.estimate_gas()` |
| events.py | 事件丢失 | 断开连接时重新订阅 |
| encoding.py | 嵌套解码错误 | 递归 struct 解码器 |
## 用法
```
from bounty_hunter_toolkit import PatternMatcher
matcher = PatternMatcher()
# 查找匹配漏洞描述的 patterns
patterns = matcher.find("sql injection")
for p in patterns:
print(f"{p.name}: {p.description}")
print(f" Vulnerable: {p.vulnerable_code[:80]}")
print(f" Fixed: {p.fixed_code[:80]}")
# 将 pattern 应用于文件
matcher.apply("sql_injection", "app.py")
```
```
# CLI 用法
python -m bounty_hunter_toolkit --list
python -m bounty_hunter_toolkit --find "jwt"
python -m bounty_hunter_toolkit --apply sql_injection --file app.py
```
## 测试
```
python -m pytest tests/ -v --tb=short
```
67 个测试。每种模式都有:
- 测试易受攻击的代码是否会触发检测器
- 测试修复后的代码是否能通过
- 测试修复是否不会破坏原有功能
## 实际结果
| 目标 | 修复的问题 | 赏金 |
|--------|-------------|--------|
| ClankerNation/OpenAgents | 41 种模式 | 已提交 PR |
| ai-research | 27 项安全修复 | 已发布 |
| TentOfTrials | 14 次赏金 | 3 封邮件 |
| Nexussyn | 4 项修复 | $40 USDC |
| **总计** | **86+ 项修复** | **潜在价值 $417K+** |
## 许可证
MIT
## 链接
- [GitHub](https://github.com/aaameobius-crypto/bounty-hunter-toolkit)
- [PyPI](https://pypi.org/project/bounty-hunter-toolkit/)
- [完整模板集合](https://github.com/aaameobius-crypto/darkbot-ai-templates)
标签:CISA项目, Python, XXE攻击, 代码安全, 安全防护, 无后门, 漏洞修复, 漏洞枚举, 网络安全培训, 网络调试, 自动化, 逆向工具