AMEOBIUS-team/bounty-hunter-toolkit

GitHub: AMEOBIUS-team/bounty-hunter-toolkit

该工具包提供 51 种经过验证的安全修复模式,帮助开发者在几分钟内自动匹配并应用漏洞修复代码,加速漏洞赏金计划中的漏洞修复与赏金获取。

Stars: 0 | Forks: 0

# 漏洞赏金工具包 [![PyPI](https://img.shields.io/pypi/v/bounty-hunter-toolkit)](https://pypi.org/project/bounty-hunter-toolkit/) [![测试](https://img.shields.io/badge/tests-67%20passing-brightgreen)](tests/) [![模式](https://img.shields.io/badge/patterns-51%20fixes-blue)](src/) [![许可证](https://img.shields.io/badge/license-MIT-blue)](LICENSE) [![Python](https://img.shields.io/badge/python-3.10%2B-blue)](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攻击, 代码安全, 安全防护, 无后门, 漏洞修复, 漏洞枚举, 网络安全培训, 网络调试, 自动化, 逆向工具