Soles-IA/web3-security-writeups

GitHub: Soles-IA/web3-security-writeups

一个记录 EVM 和 Solana 智能合约安全审计竞赛及漏洞研究过程的代码库,包含可执行的漏洞利用 PoC 与系统化审计方法论。

Stars: 0 | Forks: 0

# Web3 安全研究文章 涵盖 EVM (Solidity) 和 Solana (Rust/Anchor) 的智能合约安全研究, 每个漏洞利用都是从零开始编写,并在本地链上运行验证。 这个代码库的目的不是收集解决方案,而是记录我在破坏合约时的思考 过程——漏洞类别、我是如何发现的、漏洞利用方式,以及协议应采取的 修复措施。被排除的假设是特意保留的:了解某个问题*为何*不是一个 有效的发现,是这项工作的一半。 我拥有实战的 DeFi 背景(曾在 Arbitrum 上部署和调试闪电贷及借贷 策略),目前正向安全研究领域转型。 ## 审计竞赛 | 竞赛 | 平台 | 结果 | 文章 | |---------|----------|--------|---------| | Tare | Sherlock, 2026年7月 ($27K) | 全面扫描了不受信任的攻击面 + 零和不变性 fuzzing (128k 次调用)。无可报告的发现 | [链接](./contests/05-tare-sherlock.md) | | MyCut | CodeHawks First Flight | 6 个 H/M 中的 1 个,零无效报告 | [链接](./contests/04-mycut.md) | | Thunder Loan | CodeHawks First Flight | 4 个高危,均附带可运行的 PoC | [链接](./contests/03-thunder-loan.md) | | Puppy Raffle | CodeHawks First Flight | 6 个发现,均附带可运行的 PoC | [链接](./contests/02-puppy-raffle.md) | | Snowman Merkle Airdrop | CodeHawks First Flight | 1 个高危(无限 NFT 铸造),1 个低危(EIP-712 typehash 拼写错误) | [链接](./contests/01-snowman-merkle-airdrop.md) | ## Solana / Rust (Anchor) Solana 程序的审计,并与已发布的专家评审(如果存在)进行了对比。 | 协议 | 背景 | 结果 | 文章 | |----------|---------|--------|---------| | Pump Science | Code4rena, 2025年1月 ($20K) — 影子审计 | 独立识别了 M-01(最后买入费用不匹配);漏掉了两个高危 | [链接](./solana/pump-science.md) | | MissionX | Solana Audit Arena 第 2 周 — 练习 | 角色分离绕过(高危),重复提交者恶意阻挠(中危) | [链接](./solana/missionx-practice.md) | | StakeFlow | Solana Audit Arena 第 1 周 — 练习 | 两个可执行的 PoC;在与裁判对比后,其中一个攻击向量被判定为受信任问题而排除 | [链接](./solana/stakeflow.md) | [`solana/poc/`](./solana/poc/) 中的 PoC 通过 `anchor test` 在本地 validator 上运行。 ## 方法论 1. **梳理范围** — 在阅读代码之前,确定哪些参与者是不受信任的。 无论影响有多大,由受信任角色触发的攻击向量都超出范围。 2. **阅读**并追踪每个敏感变量或权限被修改的地方。 3. **假设**攻击:从外部可以打破什么假设? 在确定一个方向之前,低成本地试探每一个候选可能。 4. **验证**每个链接,使用 `grep` 或可执行的 PoC。永远不要断言代码中未确认的步骤。 5. **利用**它,通过测试证明漏洞可运行。 6. **限定影响** 在可演示的范围内,并明确说明哪些内容未经核实。 7. **修复**:描述协议本应采用的正确设计。 ## 练习 | # | 练习 | 漏洞类别 | 来源 | 文章 | |---|----------|---------------------|--------|---------| | 1 | Fallback | 访问控制薄弱 | Ethernaut | [链接](./ethernaut/01-Fallback.md) | | 2 | Fallout | 未受保护的初始化 | Ethernaut | [链接](./ethernaut/02-Fallout.md) | | 3 | Reentrance | 重入 | Ethernaut | [链接](./ethernaut/03-Reentrance.md) | | 4 | Unstoppable | ERC4626 金库 DoS | Damn Vulnerable DeFi | [链接](./damn-vulnerable-defi/01-Unstoppable.md) | | 5 | Naive Receiver | 闪电贷费用滥用 + _msgSender 欺骗 | Damn Vulnerable DeFi | [链接](./damn-vulnerable-defi/02-NaiveReceiver.md) | | 6 | Truster | 任意调用 / 滥用 approve | Damn Vulnerable DeFi | [链接](./damn-vulnerable-defi/03-Truster.md) | | 7 | Side Entrance | 余额与内部账目不匹配 | Damn Vulnerable DeFi | [链接](./damn-vulnerable-defi/04-SideEntrance.md) | | 8 | The Rewarder | 通过延迟状态标记造成的双花(批量处理) | Damn Vulnerable DeFi | [链接](./damn-vulnerable-defi/05-TheRewarder.md) | | 9 | Puppet | 价格预言机操纵(DEX 现货) | Damn Vulnerable DeFi | [链接](./damn-vulnerable-defi/06-Puppet.md) | | 10 | Selfie | 闪电贷治理攻击(即时投票权) | Damn Vulnerable DeFi | [链接](./damn-vulnerable-defi/07-Selfie.md) | ## 运行漏洞利用 EVM 端的 Foundry 项目: ``` git clone --recurse-submodules https://github.com/Soles-IA/web3-security-writeups.git cd web3-security-writeups forge test -vv ``` 每个漏洞利用位于 `test/` 目录中,易受攻击的合约位于 `src/` 中。Solana 的 PoC 位于 `solana/poc/` 中,通过 `anchor test` 针对相应的 程序运行。 ## 环境 Foundry (Solidity),基于源码构建的 Anchor 0.31/0.32 (Solana),Solana CLI, 针对本地 validator 的 TypeScript PoC。 ## 背景 在专注于安全之前,我曾在 Arbitrum 主网上构建并部署合约, 涉及 Balancer 闪电贷、Aave V3(包括 eMode)以及 Uniswap V3 兑换。 通过阅读调用追踪来调试真实的 revert 是促使我了解合约*为何*失败的原因—— 从那时起,我便步入了安全研究领域。
标签:EVM, Foundry, Solana, 区块链安全, 去中心化金融, 可视化界面, 智能合约审计, 漏洞分析, 漏洞验证代码, 路径探测