Highlights
- Penyerang menguras sekitar $1,73 juta dalam DAI dan USDC dari kontrak escrow V1 lawas milik Notional Finance.
- Eksploitasi ini memanfaatkan bug integer overflow: dua pemanggilan mintfCashPair() menciptakan liabilitas rekaan -2^128 yang lolos lewat downcast uint128() yang tidak aman hingga terpangkas jadi nol.
- Dana curian ditukar jadi 689,2 ETH dan dipindahkan ke Tornado Cash hanya dalam hitungan menit setelah penguras berhasil.
- Kontrak V1 yang rentan itu tetap aktif dan terisi dana sejak Notional menghentikan versi tersebut usai eksploitasi Balancer November 2025, dan tak pernah ada yang menyapunya bersih.
Notional Finance, protokol lending suku bunga tetap, kehilangan sekitar $1,7 juta dari kontrak yang sudah lama tak lagi jadi perhatian sebagian besar pasar. Firma keamanan PeckShield mengangkat insiden ini setelah memantau aktivitas on-chain yang menunjukkan kontrak escrow V1 lawas protokol tersebut dikuras sekitar $69.242 dalam DAI dan $1,66 juta dalam USDC. Penyerang lalu menukar hasil curiannya jadi 689,2 ETH dan mengalirkannya ke Tornado Cash, protokol mixing yang sudah kena sanksi, hanya dalam sekitar tiga menit setelah transaksi eksploitasi awal terkonfirmasi.
Mekanisme eksploitasi ini bermula dari cacat coding yang spesifik pada arsitektur V1 orisinal Notional, bukan pada versi-versi yang lebih baru dan masih aktif dirawat. Alamat penyerang pertama kali mengirim transaksi persiapan pada pukul 23:58:47 UTC tanggal 3 September, masuk di blok 25.900.220. Transaksi penguras sesungguhnya terkonfirmasi sekitar tiga menit kemudian, pada pukul 00:01:35 UTC tanggal 4 September, di blok 25.900.234, jeda yang cukup rapat hingga mengindikasikan penyerang sudah lebih dulu membongkar bug tersebut dan tinggal menunggu momen eksekusi begitu tahap persiapan rampung.
Bagaimana Bug Overflow Ini Bekerja
Inti dari eksploitasi ini adalah integer overflow: penyerang memakai dua pemanggilan mintfCashPair() secara berurutan untuk merekayasa liabilitas sebesar negatif 2^128, utang buatan yang begitu besar dan bertanda negatif sehingga merusak logika akuntansi kontrak. Ketika nilai liabilitas rekaan itu melewati downcast uint128() yang tidak aman di dalam fungsi valuasi free-collateral milik protokol, nilai negatif tersebut wrap around dan terpangkas jadi nol, alih-alih tercatat sebagai utang luar biasa besar. Alhasil, kontrak itu terkecoh mengira penyerang tidak berutang apa pun, membebaskan kolateral yang seharusnya tetap terkunci untuk menutup liabilitas tersebut.
Kenapa Kontrak Ini Masih Aktif
Cerita yang lebih dalam di sini soal apa yang terjadi pada kode DeFi setelah sebuah protokol berpindah ke versi baru. Notional menghentikan arsitektur V3-nya setelah eksploitasi Balancer November 2025 merembet menimbulkan kerugian di vault miliknya sendiri, tapi kontrak V1 orisinalnya tak pernah resmi dideprekasi atau disapu bersih dari sisa dana, kontrak itu begitu saja tetap ada on-chain, aktif dan terisi dana, tak lagi jadi fokus perhatian keamanan tim. Jarak antara “tak lagi aktif dipakai” dan “tak lagi bisa dieksploitasi” itu jadi pola kegagalan yang berulang di DeFi, pola yang belum lama ini juga terjadi dalam skala jauh lebih besar. Begitu pencurian terkonfirmasi, playbook standarnya sudah jadi hal yang familiar, setoran ke Tornado Cash biasanya dibaca sebagai sinyal kuat niat mencuci dana secara permanen, bukan bernegosiasi mengembalikannya, berbeda dari sejumlah insiden DeFi di masa lalu di mana penyerang justru berbalik arah setelah identitasnya terungkap ke publik.
Apa Selanjutnya
Tim Notional perlu memastikan apakah ada kontrak V1 lain yang menyimpan saldo serupa yang belum disapu dan rentan terhadap logika downcast yang sama, serta apakah post-mortem resmi atau negosiasi bounty akan menyusul, sebagaimana lazim dilakukan protokol setelah pencurian terkonfirmasi. Bagi sektor lending DeFi secara luas, insiden ini menambah daftar panjang eksploitasi yang terkait kontrak versi lama yang tetap aktif setelah arsitektur sebuah protokol berpindah, menegaskan bahwa proses penyapuan dan deprekasi menyeluruh, bukan sekadar pengumuman migrasi, yang sebenarnya menutup pintu risiko warisan semacam ini.
FAQ
Berapa kerugian Notional Finance dalam eksploitasi ini?
Sekitar $1,7 juta, terdiri dari sekitar $69.242 dalam DAI dan $1,66 juta dalam USDC yang dikuras dari kontrak escrow V1 lawasnya.
Apa penyebab eksploitasi ini?
Bug integer overflow: dua pemanggilan mintfCashPair() menciptakan liabilitas negatif raksasa rekaan yang lolos lewat downcast uint128() tidak aman hingga terpangkas jadi nol, membiarkan penyerang melewati pemeriksaan kolateral.
Ke mana dana curian ini mengalir?
Penyerang menukar DAI dan USDC tersebut jadi 689,2 ETH dan menyetorkannya ke Tornado Cash hanya dalam hitungan menit setelah eksploitasi.
Kenapa kontrak yang rentan ini masih aktif?
Kontrak V1 Notional tak pernah disapu dari dana setelah protokol berpindah ke versi yang lebih baru pasca eksploitasi Balancer November 2025, sehingga tetap aktif dan bisa dieksploitasi.
