leminehadj/sentinel-evm-security-lab

GitHub: leminehadj/sentinel-evm-security-lab

一个全栈 EVM 智能合约安全实验室,通过八个可复现的漏洞场景演示攻击原理并验证修复方案。

Stars: 0 | Forks: 0

# Sentinel EVM 安全实验室 我构建这个项目是为了练习智能合约安全的两个方面:用真实的交易复现一个漏洞,然后证明修复方案能够阻止同样的攻击。 这是一个完整的本地安全工作台,而不是一堆孤立的 Solidity 代码片段的文件夹。该仓库包含八个漏洞场景、漏洞利用合约、修复后的实现、17 个合约测试、类型化的 Express API,以及一个用于探索这些发现的响应式 React 仪表板。 ## 内容概览 | ID | 发现 | 严重程度 | 漏洞利用证明 | 防御控制措施 | | --- | --- | --- | --- | --- | | SEC-01 | 重入耗尽资金池存款 | 严重 | 递归回调掏空 11 ETH 金库 | CEI + `ReentrancyGuard` | | SEC-02 | 未受保护的 owner 重分配 | 高 | 任意调用者接管并掏空金库 | `Ownable2Step` + `onlyOwner` | | SEC-03 | `tx.origin` 钓鱼 | 高 | 中间人掏空 8 ETH 钱包 | `msg.sender` 授权 | | SEC-04 | 签名重放 | 高 | 一个 2 ETH 的签名被接受两次 | EIP-712 域 + nonce | | SEC-05 | 未检查的外部调用 | 中 | 失败的转账仍被记录 | 失败时回滚,成功后记账 | | SEC-06 | 退款拒绝服务 | 中 | 拒绝接收的接收者冻结了新出价 | Pull-payment 退款 | | SEC-07 | 定点数精度丢失 | 中 | 先除后乘的数学运算返回 2 而不是 3 | 全精度 `Math.mulDiv` | | SEC-08 | 闪电贷预言机操纵 | 严重 | 临时流动性造成坏账并获利 | 独立且检查过新鲜度的预言机 | 每一行都包含漏洞源码、可量化的漏洞利用证据、修复后的实现,以及至少一个回归断言。详细的报告位于 [`docs/findings`](docs/findings)。 ## 全栈仪表板 仪表板将仓库中的安全证据转化为审计风格的工作区: - 带有风险分布和验证状态的总览; - 可搜索的发现目录,支持按严重程度和类别筛选; - 攻击路径工作台,提供精确的本地测试命令; - 详细的根本原因、影响、修复方案、控制措施和源码参考; - 实时 API 模式,并带有用于静态托管的自动捆绑数据回退机制; - 适配桌面、平板和移动端的响应式布局。 后端提供了用于总览、发现、覆盖图和本地运行手册的经过验证的只读 endpoint。它包含了安全标头、速率限制、CORS 控制、请求 ID、统一的错误处理以及集成测试。 ## 快速开始 前置要求:Node.js 20 或更高版本以及 npm。 ``` npm install npm run check npm run dev ``` 打开 `http://localhost:5173`。API 监听 `http://127.0.0.1:4100`,Vite 会将本地请求代理至该地址。 无需钱包、RPC endpoint、私钥、数据库或公共网络。合约测试使用隔离的内存 Hardhat fixtures。 ## 常用命令 | 命令 | 用途 | | --- | --- | | `npm run dev` | 同时启动 API 和仪表板 | | `npm run test:contracts` | 运行所有漏洞利用和修复场景 | | `npm run test:api` | 运行后端集成测试 | | `npm run test:web` | 运行前端单元测试 | | `npm run compile` | 编译所有 Solidity 模块 | | `npm run coverage` | 在本地生成 Solidity 覆盖率报告 | | `npm run build` | 构建 shared package、API 和生产环境仪表板 | | `npm run check` | 类型检查、Lint、测试并编译整个项目 | | `npm run verify` | 执行完整检查以及所有生产环境构建 | 如需单独运行某一个发现: ``` npx hardhat test test/oracle-manipulation.test.ts ``` ## 架构 ``` modules/ Vulnerable contracts, exploit helpers, and fixes test/ Hardhat exploit and regression tests packages/shared/ Typed finding catalog used by API and dashboard apps/api/ Express security evidence API apps/web/ React + Vite dashboard docs/findings/ Audit-style finding write-ups reports/ Verification and static-analysis summaries .github/workflows/ Clean-clone CI validation ``` 请参阅 [架构](docs/ARCHITECTURE.md)、[API 参考](docs/API.md) 和 [本地运行手册](docs/LOCAL_RUNBOOK.md) 以了解更深层的设计。 ## 验证快照 - 开启 optimizer 设置编译了 49 个 Solidity 源文件 - 17/17 个 Hardhat 合约测试通过 - 7/7 个 API 集成测试通过 - 3/3 个前端单元测试通过 - 跨合约、shared models、API 和 Web 的严格 TypeScript 检查通过 - 生产环境 API 和 Vite 构建通过 - Solhint 基准检查通过,仅在特意演示漏洞的地方调整了规则 该快照描述了本仓库的自动化本地检查。它不是第三方审计,也不应被视为审计报告。 ## 负责任的使用 漏洞利用合约的存在是为了让安全故障变得易于理解和复现。请勿部署存在漏洞的变体,请勿重用本地测试密钥,并且请勿将这些 payload 指向第三方合约。有关报告指南,请参阅 [SECURITY.md](SECURITY.md)。 ## 许可证 [MIT](LICENSE)
标签:Web3, 区块链安全, 安全实验室, 智能合约, 自动化攻击