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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
biga816
March 30, 2023
Technology
690
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
41
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
Data Hubグループ 紹介資料
sansan33
PRO
0
3.1k
PLaMo 3.0 Primeの事後学習
pfn
PRO
0
260
AIで楽になるはずが、なぜ疲れる?
kinopeee
0
150
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
150
システム監視を 「システムを監視するだけ」で 終わらせないために
seiud
0
160
Amazon Bedrock Managed Knowledge BaseDive Deep
ren8k
0
340
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
エンタープライズデータへ安全につなぐ Production-ready なエージェント設計 ― AI × MCP リファレンスアーキテクチャ ― #AIDevDay
cdataj
1
480
NYC Summit 2026 におけるAmazon Bedrock AgentCore のアップデート
ren8k
3
310
実践が先生だった— 新卒サーバーエンジニア1年目のリアル
mixi_engineers
PRO
0
230
現場で使える AWS DevOps Agent 活用ノウハウ - Release Management 機能の検証結果を添えて / AWS DevOps Agent Release Management and Know-How
kinunori
5
870
DevOps Agentで運用判断をチーム資産にする~Agent InstructionsとAgent Skillを継続的に育てる~
fujioka6789
0
190
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Abbi's Birthday
coloredviolet
3
8.9k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
360
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Docker and Python
trallard
47
4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
2
3.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
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 😊