Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Euler Finance Hacking Incident
Search
biga816
March 30, 2023
Technology
680
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Euler Finance Hacking Incident
biga816
March 30, 2023
More Decks by biga816
See All by biga816
BlockchainTokyo23.pdf
biga816
1
420
BuidlMeetupVol2.pdf
biga816
0
40
Service Worker Cache Problems
biga816
1
1.8k
Consider how distributed IPFS is
biga816
2
5.3k
Centralized Dapps to read from Dapps game
biga816
1
2.5k
Usage of ethereum libraries for dapps
biga816
0
4.6k
Other Decks in Technology
See All in Technology
失敗を資産に変えるClaude Code
shinyasaita
0
270
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.9k
Snowflakeと仲良くなる第一歩
coco_se
4
390
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
130
Databricks における 生成AIガバナンスの実践
taka_aki
1
380
生成 AI × MCP で切り拓く次世代 SRE!自律型運用への挑戦と開発者体験の進化
_awache
0
190
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
0
300
Building applications in the Gemini API family.
line_developers_tw
PRO
0
2.8k
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
230
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
630
Chainlitで作るお手軽チャットUI
ynt0485
0
120
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
9
600
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
12k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
Scaling GitHub
holman
464
140k
Practical Orchestrator
shlominoach
191
11k
Into the Great Unknown - MozCon
thekraken
41
2.6k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
700
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
170
Why Our Code Smells
bkeepers
PRO
340
58k
The Pragmatic Product Professional
lauravandoore
37
7.3k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
Akihiro Tanaka Euler Financeハッキング事件から学ぶ フラッシュローン攻撃
自己紹介 - Ethereum Japan / Secured Finance スマートコントラクトエンジニア - 2014年にMt.GOXですべてを失ったことからブロックチェーンに目覚める
- 2018年より複数社でブロックチェーン関連の開発に従事 - NFTを利用したエンタメアプリ、 AMLツール、STOプラットフォーム等の開発を手がける - 現在はSecured FinanceでDeFiプロダクトを開発中 - Twitter: @biga816
Photo by Pixabay フラッシュローンとは? - フラッシュローンとは、短時間で無担保の融資を行い、 一時的に巨額の資金を借り入れて利用してすぐに返済す ることができる仕組み - この仕組みでは担保を用意することなく、同一トランザ
クション内で借り入れた金額を返済することでのみ資金の 借り入れが可能となっている - UniswapやAaveなど多くのDeFiプロトコルがフラッシュ ローンを提供している
Euler Financeとは? - CompoundやAaveのようなDeFiプロトコルと同じく資 金の貸し借りのできるレンディングプラットフォーム - このプロトコルの特徴は、各トークンのリスク特性に応 じて資産の「階層分け」を行っている点がある
- 3/13にEuler Financeがフラッシュローン攻撃を受け、約 2億ドルが盗まれた - フラッシュローン攻撃は Euler Financeの以下の2つの機能を利用して行われた 1) 手数料の保管や損失のカバーなどを行うリザーブへの寄付機能
(donateToReserves) 2) 最大19倍までレバレッジを効かして借入ができる Mint機能 (mint) - ハッキングは、この寄付機能にアカウントのヘルスチェックがなかったことを悪用して実施された - 実際のトランザクションの 1つがこちら https://etherscan.io/tx/0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6 b111d ハッキング概要
ハッキング詳細(1) : Main contract 1. Aaveからフラッシュローンで 3000万DAIを借りる 2. 攻撃のために2つのコントラクト「Vaiolator」「Liquidator」をデプロイする 3.
3000万DAIをMainからVaiolatorに送る。 Main Vaiolator Liquidator 3000万DAI 3000万DAI 1.Transfer 2.Deploy 2.Deploy 3.Transfer
ハッキング詳細(2) : Vaiolator contract 4. Euler Financeに2000万DAIを入金し、それに応じた 1956万eDAI(資産)を受け取る 5. レバレッジをかけ、資産として
1億9568万eDAI、負債として2億dDAIをmintする。 Vaiolator 2000万DAI 1956万eDAI 1億9568万eDAI&2億dDAI 4.Deposit 4.Transfer 5.Mint 4.Transfer 1956万+1億9568万 = 2億1524万(eDAI) 2億(dDAI)
ハッキング詳細(3) : Vaiolator contract 6. 1000万 DAIを返済し、dDAI残高を1億9000万に減らす 7. 資産に余力が生まれたので、再度レバレッジをかけ 1億9568万eDAIと2億dDAIをmintする
Vaiolator 1000万DAI 1000万dDAI 1億9568万eDAI&2億dDAI 6.Repay 6.Transfer 7.Mint 7.Transfer 2億1524+1億9568万 ≒ 4億1093万(eDAI) 2億 - 1000万 + 2億 = 3億9000万(dDAI)
ハッキング詳細(4) : Vaiolator contract 8. 資産として保持している 4億1093万eDAIのうち、1億をリザーブに寄付する (donateToReserves) 9. 結果、eDAIより負債であるdDAIの方が多くなり、精算対象のアカウントとなる
Vaiolator 1億eDAI 4.Donate 4億1093万 - 1億 = 3億1093万(eDAI) 3億9000万(dDAI)
ハッキング詳細(5) : Liquidator contract 10. Vaiolatorに対し精算処理を実行し、その報酬として 3億1093万eDAIと2億5931万dDAIを取得する 11. 資産であるeDAIの方が多いため、その余力分の 3890万DAIを引き出す
Vaiolator 10.Liquidate 10.Transfer 11.Transfer Liquidator 10.Transfer 3億1093万eDAI &2億5931dDAI 11.Withdraw 3890万DAI 3億1093万eDAI &2億5931dDAI
ハッキング詳細(6) : Main contract 12. 3890万DAIをMainコントラクトに送る 13. Aaveに3000万DAIを送り、フラッシュローンで借りた分を返済する 14. 結果、890万DAIが手元に残る
Main Vaiolator Liquidator 3000万DAI 3890万DAI 13.Transfer 12.Transfer
ハッキングの原因 - 寄付機能であるdonateToReservesファンクションにヘルスチェックがなかったことが原因 - それにより、担保不足の状態を意図的に作ることができてしまった
ハッキングの原因
ハッキングの原因
ハッキングへの対策 - 定期的にセキュリティ監査を実施していた → donateToReservesは監査の対象外 - Bug Bountyプログラムも実施していた → 利用していたプラットフォームがリンク切れ
- フォーラムにて更新内容の提案 (eIP-14)、事前デプロイ、ディスカッション、コントラクト更新という手順を踏 んでいた → ディスカッションが活発にはされていない
セキュリティ対策を徹底しよう
フラッシュローン攻撃を防ぐ一般な方法 - コントラクトからの呼び出しを不可能にすればフラッシュローンは防げるが、呼び元がコントラクトかどうか を確実に判定することはできない。 (OpneZeppelinのAddress.isContract参照。) - フラッシュローンを防ぐ方法は、以下の 3つが考えられる。 1) ロジックを2つのトランザクションに分割する
2) 信頼のできる外部オラクルを利用する 3) スリッページにリミットを設ける
Euler Financeハッキング事件のその後 - 盗まれた資金のうち約 80%にあたる31,000ETHと3,000万DAIが返却された - オンチェーンメッセージで謝罪をしているらしい。 https://etherscan.io/tx/0xedd8102ca037abaeb75ce6a1afe951d2953258392d891ff23510276993 a5437c
Appendix - A Detailed Analysis of Euler Finance’s $196 Million
Flash Loan Attack https://medium.com/@numencyberlabs/a-detailed-analysis-of-euler-finances-196-million-flash-loan-attack-81cdef370024 - Euler Finance Incident Post-Mortem https://medium.com/@omniscia.io/euler-finance-incident-post-mortem-1ce077c28454 - Mitigations against flash-loan enabled attacks https://www.smartcontractresearch.org/t/mitigations-against-flash-loan-enabled-attacks/615 - Euler Finance Hacker Apologizes, Returns Stolen $177 Million https://icoinmarket.com/euler-finance-hacker-apologizes-returns-stolen-177-million/
Thank you for your time 😊