Apache License 2.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

DeFiHackLabs:把 600 起 DeFi 血案固化成可执行的测试用例

项目背景与痛点

DeFi 被黑早已不是新闻,而是一种常态。真正折磨人的不是“又被偷了多少”,而是出事之后的复盘质量:rekt.news 告诉你损失金额和资金流向,Immunefi 给你一份漏洞分类报告,审计公司发一篇语焉不详的事后分析。但作为开发者,你最想知道的是——攻击者到底调用了哪个函数、传了什么参数、在哪个区块状态下得手的、我改的那一行代码能不能挡住它。文字报告回答不了这个问题。

DeFiHackLabs 的定位非常明确:用 Foundry 把每一起链上事件还原成一个可以 forge test 跑起来的 PoC 合约。它不是文档库,是可执行的证据链。你拿到的不是“闪电贷价格操纵”这样的标签,而是带真实区块高度、真实合约地址、真实攻击参数的代码。这是从“听说”到“验证”的跃迁,也是它区别于绝大多数安全资料的根本原因。

核心技术揭秘

项目的技术底座是 Foundry 的 fork testing 能力,整个架构可以概括为“一个事件一个合约,一条链一段历史”。

关键设计在于单文件自包含。每个 PoC 都以 YYYY-MM-事件名_exp.sol 命名,文件内部用最小化的 interface 声明目标协议的 ABI,而不是去编译协议源码。这个选择看似粗糙,实则极其聪明:DeFi 协议依赖树深、版本漂移严重,一旦引入真实源码,PoC 会在编译阶段就崩掉,根本走不到复现那一步。接口声明把“依赖地狱”压缩成几行函数签名。

执行流大致如下:

graph TD A[链上被黑交易] --> B[锁定区块高度与目标合约] B --> C[PoC 合约 setUp()] C --> D[vm.createSelectFork 分叉历史状态] D --> E[deal 注入攻击者初始资金] E --> F{"复现路径选择"} F -->|"交易可重放"| G[vm.prank 模拟攻击者调用] F -->|"需要重构"| H[编写 Exploit 合约] G --> I[断言资金变化] H --> I I --> J[forge test -vv 输出结果]

setUp() 里通过 vm.createSelectFork(RPC_URL, blockNumber) 把主网在攻击发生前的那一刻状态拉进本地 EVM,之后所有调用都在这份快照上执行。攻击者的初始资金通常用 deal() 直接写入,绕过“钱从哪来”的问题;身份切换靠 vm.prank,时间相关的逻辑用 vm.warp / vm.roll 校准。最后在 testExploit() 里断言攻击者余额增加或协议储备被抽空,配 console2.log 打印关键数值。

这套流程的本质是状态重现 + 差分断言:只要攻击前后余额的差值对得上,复现就算成功。这也是它能覆盖闪电贷、重入、预言机操纵、授权滥用、签名重放等各类手法的原因——它不关心攻击的“语义”,只关心状态转移是否可复现。

功能亮点与差异

第一,规模与时效性。 数百起案例横跨 Ethereum、BSC、Polygon、Avalanche、Fantom、Arbitrum 等多条链,事件发生后往往几天内就有 PR 合入。这种响应速度靠的不是团队,是社区——提交一个 PoC 就是提交一份攻击样本,激励结构天然成立。

第二,可执行性即文档。 对比 Damn Vulnerable DeFi 这类教学靶场,DeFiHackLabs 用的是真实协议、真实资金规模、真实区块,攻击路径没有被人为简化。对比 DeFiVulnLabs(同作者的另一项目,聚焦漏洞模式教学),它更偏向“事件档案”而非“知识图谱”。两者互补,但前者更接近实战。

第三,极低的复现成本。 不需要自己搭链、不需要部署整套协议、不需要构造治理提案,一个 RPC 端点加一条 forge test --contracts ./src/test/xxx_exp.sol -vvv 就能看到攻击重演。对新人来说,这是理解 DeFi 攻击最快的路径,没有之一。

应用场景与落地建议

最直接的价值是审计与开发阶段的定向回归。协议上线前,把历史上同类协议被攻击的手法筛出来,改造参数后作为自家的 fork test 跑一遍,比任何 checklist 都有效。其次是安全监控规则验证:把链下告警逻辑对应的攻击场景在本地重放,确认规则真的能触发。

落地时有几个坑必须注意。

其一,对 archive node 的硬依赖。分叉到几个月前的区块高度,普通全节点根本查不到状态,必须配置 Alchemy / QuickNode 之类的归档 RPC,且不同链需要不同端点。RPC key 一律走 .env,绝不能进版本库。

其二,区块高度固定带来的脆弱性。PoC 锁死在某个高度,一旦目标协议在之后升级了实现合约,或者依赖的预言机、路由合约地址变更,用例就会失败。这不是项目 bug,是快照复现的固有代价,需要建立“用例健康度”的定期巡检机制。

其三,部分 PoC 质量参差。社区贡献意味着注释详略不一,有些用例对前置条件的构造语焉不详,需要结合交易原文自行补齐。建议内部使用时建立自己的索引:按攻击类型、受影响函数、根本原因打标签,而不是只依赖文件名。

最后一条是底线:只在本地分叉环境运行,绝不在主网广播任何交易。仓库里的代码是可执行的攻击载荷,用错了地方性质就完全变了。

综合评价

优点:它是目前最完整、最贴近实战的 DeFi 攻击可执行样本库;Foundry 生态原生契合,复现门槛低到只需一个 RPC;社区驱动的更新节奏让它的时效性远超传统安全出版物;单文件设计避免了依赖污染,长期可维护性比想象中好。

缺点:用例质量不均,缺少结构化的元数据索引,检索仍靠文件名和记忆;高度依赖归档节点,对个人开发者有一定成本;它提供的是“攻击证据”,不是“防御方案”,真正的价值取决于使用者能否从中抽象出模式;部分案例的注释深度不足以支撑独立学习。

一句话总结:别把它当 README 读,把它当回归测试集用。 对任何在写 DeFi 合约的人来说,这个仓库值得放进 CI 的观察名单里——不是为了跑通它,而是为了搞清楚,下一个被复现的会不会是你。

关于

GitHub 原始描述(英文)

Reproduce DeFi hacked incidents using Foundry.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
9958
价值分
4564
活跃状态
活跃

语言占比

Python
Solidity

README

DeFi Hacks Reproduce - Foundry

Reproduce DeFi hack incidents using Foundry.

906 incidents included.

Let’s make Web3 secure! Join Discord

Notion: 101 root cause analysis of past DeFi hacked incidents

Transaction debugging tools

Disclaimer: This content serves solely as a proof of concept showcasing past DeFi hacking incidents. It is strictly intended for educational purposes and should not be interpreted as encouraging or endorsing any form of illegal activities or actual hacking attempts. The provided information is for informational and learning purposes only, and any actions taken based on this content are solely the responsibility of the individual. The usage of this information should adhere to applicable laws, regulations, and ethical standards.

Table of Contents

Getting Started

Web3 Cybersecurity Academy

All articles are also published on Substack.

OnChain transaction debugging

If you appreciate our work, please consider donating. Even a small amount helps us continue developing and improving our projects, and promoting web3 security.

List of Past DeFi Incidents

20261028 ZkLinkNova

20261027 FenceTranchePool

20261026 SafeApprovalSquat

20261025 Yapeswap

20261024 X100Senate

20261020 SliceFundsModule

20261019 Argent

20261018 AlpsCon

20261017 TIPMine

20261017 BiFi

20261015 KolanHook

20261014 UNCXSmartTokenVesting

20261009 BitBay

20261008 X7Finance

20261006 SetProtocol ETHMACOAPY

20261006 SetProtocol

20261006 MakerDAOFlipKeeper

20261003 MALT

20261002 GoldPesa

20261001 FlashLoopAdapter

20260930 SKYDAO

20260930 PositionManager

20260930 MUS

20260929 LPBonus

20260926 DAOstack

20260923 PancakeV3SwapHelper

20260921 TheRedVillage

20260921 DoinGud

20260921 GaslessReservoirEnabler

20260921 InternetToken

20260918 Likwid

20260916 Startale

20260916 Flamincome

20260916 PrimeFinance

20260916 Nimiq

20260915 RsETHSafeModule

20260915 BonfireSwap

20260912 SpiralHookV2

20260912 YamFinance

20260911 ORB

20260911 GDC

20260909 EtherFiAtomicQueue

20260909 OMNI404

20260909 UnifiProtocol

20260909 BeatXswap

20260909 EnsoFinance

20260909 ZentraFinance

20260908 OrderFactory

20260907 RouterDrain

20260907 CozyFinance

20260905 DHC

20260905 Reddio

20260905 SecuredFi

20260903 NotionalFinance

20260901 ReflexerGEB

20260831 FloatProtocol

20260831 BalancerV1BPool

20260828 AjnaFinance

20260827 CashCowCoin

20260826 EnjinCryptoItems

20260825 FHToken

20260823 ArrakisGUNI

20260823 TermFinance

20260822 SandboxOFT

20260819 AllbridgeCCTP

20260809 USM

20260806 UnistreetLaunchpad

20260805 StrongBlock

20260803 AIC

20260802 MOKE

20260728 LULA

20260716 CrowdRingCircle

20260716 PerpetualProtocol

20260706 SummerFi

20260701 edel-xstock

20260629 Vault4626

20260628 AIDC

20260627 CookFinanceIssuance

20260625 LixirPermitDrain

20260625 OceanBPoolSideStaking

20260624 DLMC

20260623 RoyalRoyalties

20260622 Aztec Escape Hatch

20260622 ATM

20260620 OLPC

20260618 JB

20260617 WHALE

20260617 LBP

20260617 Aztec V1

20260616 DIP

20260615 Thetanuts

20260614 Aztec Connect

20260609 TOPBPool

20260609 NovaBox

20260607 AmbientCrocSwapDex

20260606 BOSS

20260605 DTXT

20260605 AISOTHPresale

20260604 BYToken

20260604 ATM Token

20260530 AROS

20260529 YSDAO

20260528 LegendaryMoneyMonNft

20260528 DxSale

20260527 Joe Agent

20260526 SKP Token

20260526 SKP Token

20260525 SquidRouterModule

20260525 New Market Trading

20260525 WUSD.fi

20260522 FractalProtocol

20260521 MureDistribution

20260520 MAPProtocol

20260519 ElevateFi

20260518 TesseraSwap

20260517 VerusBridge

20260517 SEAToken

20260515 AdsharesBridge

20260512 SQTokenStaking

20260511 INKFinance

20260511 HumaFinance

20260510 Renegade

20260507 TrustedVolumes

20260505 Ekubo

20260501 SharwaMarginTrading

20260428 RWAVault

20260428 JUDAO

20260427 Unverified_a152

20260425 SingularityDynaVault

20260423 GiddyVaultV3

20260421 KipseliPropAMM

20260420 JuiceboxREVLoans

20260420 ThetanutsVaultShareRounding

20260419 AaveRebalancerCreditDelegation

20260415 XLootStaking

20260414 MONA LisaVault

20260414 Saturn Protocol

20260412 SubQuerySettings

20260407 SquidMulticallAllowanceDrain

20260405 PerpPair

20260331 WhalebitOracleManipulation

20260328 VTSwapHook

20260327 EST Token

20260324 XocolatlLiquidator

20260324 Univ3CollateralToken

20260323 BCE

20260319 ATMBlindBox

20260319 Revamp

20260317 dTRINITY dLEND

20260316 unverified

20260315 Venus THE

20260315 StakeOnMe

20260310 AlkemiEarn

20260302 Curve LlamaLend

20260222 LAXO Token

20260216 XDKRecycle

20260215 Moonwell

20260120 Makina

20260120 SynapLogic

20260112 MTToken

20260110 FutureSwap

20260109 Truebit

20260101 PRXVT

2025

20251201 yETH

20251110 DRLVaultV3

20251104 Moonwell

20251103 BalancerV2

20251020 SharwaFinance

20251007 TokenHolder

20251004 MIMSpell3

20250918 NGP

20250913 Kame

20250831 Hexotic

20250830 EverValueCoin

20250827 0xf340

20250823 EquilibriaEPendle

20250823 ABCCApp

20250822 Unverified_6f7a

20250820 MulticallWithXera

20250820 0x8d2e

20250819 PresaleV5

20250817 AutoPooledTradingBot

20250816 unverified

20250816 d3xai

20250815 SizeFlashLoanLooping

20250815 PDZ

20250815 SizeCredit

20250813 BeefyZapRouter

20250813 YuliAI

20250813 coinbase

20250813 Grizzifi

20250812 BaseBebopSettlement

20250812 Bebop

20250811 WXC

20250808 ArbitrumBaseSwapper

20250805 MyCoinMaster

20250804 BscInitcodeToken

20250801 PendleReflector

20250729 AnyswapWETHPermit

20250728 SuperRare

20250728 AvaxBIFKNPair

20250726 Unverified670471

20250726 Unverified6883

20250726 MulticallWithETH

20250725 WhereIsMyDragonTreasure

20250724 SWAPPStaking

20250724 EmptySetReserve

20250721 BoJLeverageMarket

20250720 Stepp2p

20250717 unverified

20250717 WETC

20250716 StrategyLlamaLendConvex

20250716 VDS

20250713 UPENG

20250709 GMX

20250705 ActivePoolScrvUsd

20250705 Unverified_54cd

20250705 RANT

20250702 FPC

20250702 ActivePoolUrgentRedemption

20250629 Stead

20250628 InitcodeFactoryFees

20250626 ResupplyFi

20250625 Unverified_b5cb

20250625 SiloFinance

20250625 ParaSwapDAIApproval

20250623 GradientMakerPool

20250620 TokenVault

20250620 HoldSafe

20250620 Gangsterfinance

20250619 SinstakeZombie

20250619 BasePricePool

20250619 BankrollStack

20250619 BankrollNetwork

20250618 BankrollStackPlus

20250617 MetaPool

20250615 WaleCoin

20250615 FixedTokenBSwap

20250614 TSAggregatorGeneric

20250612 AAVEBoost

20250610 unverified_8490

20250609 BitCrown

20250608 TokenFactory

20250603 PegaBall

20250531 DogeAlliance

20250528 Corkprotocol

20250528 Unverified_91a1

20250527 UsualMoney

20250526 YDT

20250525 Unverified_0000

20250525 Dumbo

20250524 RICE

20250520 IRYSAI

20250519 BetaPresale

20250518 KRC

20250516 Bitallx

20250514 Unwarp

20250511 MBUToken

20250509 Nalakuvara_LotteryTicket50

20250506 Crosswise

20250429 FlyLong

20250428 tcdp

20250427 bitdog

20250427 multitransferswap

20250427 AventaRewardClaim

20250426 Lifeprotocol

20250426 ImpermaxV3

20250418 BTNFT

20250416 Roar

20250416 YVToken

20250411 Unverified 0x6077

20250408 Laundromat

20250407 AmpKashi

20250404 AIRWA

20250330 LeverageSIR

20250328 Alkimiya_IO

20250327 YziAIToken

20250320 BBXToken

20250318 DCFToken

20250318 unverified

20250316 wKeyDAO

20250314 H2O

20250311 ZeroExSettler

20250311 DUCKVADER

20250307 StackMarket

20250307 UNI

20250307 SBRToken

20250306 unverified

20250306 RnsPay

20250306 PTM

20250305 1inch Fusion V1 Settlement

20250304 Pump

20250227 Venus_ZKSync

20250226 HenloKart

20250224 INVISTECH

20250223 HegicOptions

20250222 Unverified_35bc

20250221 StepHeroNFTs

20250221 Bybit

20250215 unverified_d4f1

20250211 Scorch

20250211 LimitOrderProtocol

20250211 FourMeme

20250208 GMT7

20250208 Peapods Finance

20250201 GoldReserve

20250128 MCAI

20250126 AIXBTForcedSwap

20250123 ODOS

20250121 Ast

20250118 Paribus

20250114 IdolsNFT

20250113 Mosca2

20250112 Unilend

20250111 RoulettePotV2

20250110 JPulsepot

20250108 HORS

20250108 LPMine

20250107 IPC

20250106 Mosca

20250104 SorStaking

20250104 98#Token

20250101 LAURAToken

2024

20241227 Bizness

20241223 Moonhacker

20241218 Slurpy

20241216 BTC24H

20241214 JHY

20241210 LABUBUToken

20241210 CloberDEX

20241203 Pledge

20241126 NFTG

20241124 Proxy_b7e1

20241123 Ak1111

20241121 Matez

20241120 MainnetSettler

20241119 PolterFinance

20241117 MFT

20241114 vETH

20241111 DeltaPrime

20241109 X319

20241107 ChiSale

20241107 CoW

20241107 UniV2

20241105 RPP

20241029 BUBAI

20241026 CompoundFork

20241022 Erc20transfer

20241022 VISTA

20241013 MorphoBlue

20241011 P719Token

20241006 HYDT

20241006 SASHAToken

20241005 AIZPTToken

20241002 LavaLending

20241001 FireToken

20240926 OnyxDAO

20240926 Bedrock_DeFi

20240924 MARA

20240923 PestoToken

20240923 Bankroll_Network

20240920 DOGGO

20240920 Shezmu

20240918 Unverified_766a

20240915 WXETA

20240913 Unverified_5697

20240913 OTSeaStaking

20240912 Unverified_03f9

20240911 INUMI

20240911 INUMI_db27

20240911 AIRBTC

20240910 Caterpillar_Coin_CUT

20240905 Unverified_a89f

20240905 PLN

20240905 HANAToken

20240904 Unverified_16d0

20240903 Penpiexyz_io

20240902 Pythia

20240828 Unverified_667d

20240828 AAVE

20240820 COCO

20240816 Zenterest

20240816 OMPxContract

20240814 YodlRouter

20240813 VOW

20240812 iVest

20240806 Novax

20240801 Convergence

20240724 Spectra_finance

20240723 MEVbot_0xdd7c

20240716 Lifiprotocol

20240714 Minterest

20240712 DoughFina

20240711 SBT

20240711 GAX

20240708 LW

20240705 DeFiPlaza

20240703 UnverifiedContr_0x452E25

20240702 MRP

20240628 Will

20240627 APEMAGA

20240618 INcufi

20240617 Dyson_money

20240616 WIFCOIN_ETH

20240611 Crb2

20240611 JokInTheBox

20240610 UwuLend - Price Manipulation

20240610 Bazaar

20240608 YYStoken

20240606 SteamSwap

20240606 MineSTM

20240604 NCD

20240601 VeloCore

20240531 Liquiditytokens

20240531 MixedSwapRouter

20240529 SCROLL

20240529 MetaDragon

20240528 Tradeonorion

20240528 EXcommunity

20240527 RedKeysCoin

20240526 NORMIE

20240522 Burner

20240516 TCH

20240514 Sonne Finance

20240514 PredyFinance

20240512 TGC

20240510 GFOX

20240510 TSURU

20240508 GPU

20240507 SATURN

20240506 OSN

20240430 Yield

20240430 PikeFinance

20240427 BNBX

20240425 NGFS

20240424 XBridge

20240424 YIEDL

20240422 Z123

20240420 Rico

20240419 HedgeyFinance

20240417 UnverifiedContr_0x00C409

20240416 SATX

20240416 MARS_DEFI

20240415 GFA

20240415 ChaingeFinance

20240414 Hackathon

20240412 FIL314

20240412 SumerMoney

20240412 GROKD

20240410 BigBangSwap

20240409 UPS

20240408 SQUID

20240404 WSM

20240402 HoppyFrogERC

20240401 ATM

20240401 OpenLeverage

20240329 ETHFIN

20240329 PrismaFi

20240328 LavaLending

20240325 ZongZi

20240324 ARK

20240323 CGT

20240321 SSS

20240320 Paraswap

20240314 MO

20240313 IT

20240312 BBT

20240311 Binemon

20240309 Juice

20240309 UnizenIO

20240307 GHT

20240306 ALP

20240306 TGBS

20240305 Woofi

20240228 Seneca

20240228 SMOOFSStaking

20240223 Zoomer

20240223 CompoundUni

20240223 BlueberryProtocol

20240222 SwarmMarkets

20240221 DeezNutz404

20240221 GAIN

20240220 EGGX

20240219 RuggedArt

20240216 ParticleTrade

20240215 DualPools

20240215 Babyloogn

20240215 Miner

20240213 MINER BSC

20240211 Game

20240210 FILX DN404

20240208 Pandora404

20240205 BurnsDefi

20240202 ADC

20240201 AffineDeFi

20240130 XSIJ

20240130 MIMSpell

20240129 PeapodsFinance

20240128 BarleyFinance

20240127 CitadelFinance

20240125 NBLGAME

20240122 DAO_SoulMate

20240117 BmiZapper

20240117 SocketGateway

20240115 Shell_MEV_0xa898

20240112 WiseLending

20240110 Freedom

20240110 LQDX Alert

20240104 Gamma

20240102 MIC

20240102 RadiantCapital

20240101 OrbitChain

2023

20231231 Channels BUSD&USDC

20231230 ChannelsFinance

20231228 CCV

20231228 DominoTT

20231225 Telcoin

20231222 PineProtocol

20231220 TransitFinance

20231217 Bob

20231217 FloorProtocol

20231216 GoodDollar

20231216 KEST

20231216 NFTTrader

20231214 PHIL

20231213 HYPR

20231211 GoodCompound

20231209 BCT

20231207 HNet

20231206 TIME

20231206 ElephantStatus

20231205 MAMO

20231205 BEARNDAO

20231202 bZxProtocol

20231201 UnverifiedContr_0x431abb

20231130 EEE

20231130 CAROLProtocol

20231129 Burntbubba

20231129 AIS

20231128 FiberRouter

20231125 MetaLend

20231125 TheNFTV2

20231122 KyberSwap

20231117 Token8633_9419

20231117 ShibaToken

20231116 WECO

20231115 EHX

20231115 XAI

20231115 LinkDAO

20231114 OKC Project

20231112 MEV_0x8c2d

20231112 MEV_0xa247

20231111 Mahalend

20231110 Raft_fi

20231110 GrokToken

20231107 RBalancer

20231107 MEVbot

20231106 TrustPad

20231106 TheStandard_io

[20231106 KR](past/2023/README.md#20231106

README 内容过长,已截取前 64 KB。完整内容请前往 GitHub 仓库查看。

评论

暂无评论