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
710
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
45
Service Worker Cache Problems
biga816
1
1.8k
Consider how distributed IPFS is
biga816
2
5.4k
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
AI・HPC開発を支えるGPU環境の新しい選択肢 液冷GPUシステム「AquSys」の取り組み
gpuunite_official
0
220
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.6k
2027年のMetricKit
kantacky
0
160
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
500
案件に一番詳しいAIを Amazon Bedrock AgentCore で作る ― 知見が知見を生むチームへ / Compounding Knowledge with AgentCore
yusukeshimizu
1
170
20分でわかるセキュアAPI
nwiizo
2
330
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
1
880
猫付きpingコマンドを自作
uyuki234
0
290
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
510
35分でわかるEffective Platform Engineering
nwiizo
5
600
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.5k
:syncing_time:
sksat
2
420
Featured
See All Featured
WCS-LA-2024
lcolladotor
0
800
Amusing Abliteration
ianozsvald
1
260
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
660
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Thoughts on Productivity
jonyablonski
76
5.3k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
300
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
500
Designing Powerful Visuals for Engaging Learning
tmiket
1
500
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
480
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
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 😊