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, 区块链安全, 去中心化金融, 可视化界面, 智能合约审计, 漏洞分析, 漏洞验证代码, 路径探测