Pada pukul 04:34:42 tanggal 9 Mei 2022, waktu Beijing, tim teknologi keamanan CertiK mendeteksi bahwa Fortress Loans diserang oleh manipulasi oracle.
Pada pukul 10:05 tanggal 9 Mei, waktu Beijing, JetFuel Finance juga secara resmi mengonfirmasi berita tentang manipulasi oracle, dan merilis tautan ke alamat dan transaksi yang mencurigakan:
Saat ini, proyek tersebut telah kehilangan sekitar 1.048,1 ETH dan 400.000 DAI (nilai total sekitar 2,98 juta dolar AS ). Penyerang mencuri ETH dan DAI melalui manipulasi DAO dan oracle untuk menyelesaikan serangan. Setelah mendapatkan token yang dicuri, ia dengan cepat menukar semua token dengan ETH, dan mentransfer ETH melalui Tornado Cash.
Transaksi kerentanan
https://bscscan.com/tx/0x13d19809b19ac512da6d110764caee75e2157ea62cb70937c8d9471afcb061bf
https://bscscan.com/tx/0x851a65865ec89e64f0000ab973a92c3313ea09e80eb4b4660195a14d254cd425
alamat yang relevan
Alamat serangan: https://bscscan.com/address/0xA6AF2872176320015f8ddB2ba013B38Cb35d22Ad
Kontrak penyerang (kemungkinan besar hancur sendiri):
https://bscscan.com/address/0xcd337b920678cf35143322ab31ab8977c3463a45
Fortress Pinjaman oracle:
https://bscscan.com/address/0x00fcf33bfa9e3ff791b2b819ab2446861a318285#code
Kontrak berantai: https://bscscan.com/address/0xc11b687cd6061a6516e23769e4657b6efa25d
langkah serangan
Penyerang membuat dan mendanai EOA (0x0db3b68c482b04c49cd64728ad5d6d9a7b8e43e6) dengan ID proposal 11 untuk kontrak Fortress Governor Alpha (0xe79ecdb7fedd413e697f083982bac29e93d86b2e).
Proposal11: https://bscscan.com/tx/0x12bea43496f35e7d92fb91bf2807b1c95fcc6fedb062d66678c0b5cfe07cc002#eventlog
EOA lain yang dikendalikan penyerang (0x0db3b68c482b04c49cd64728ad5d6d9a7b8e43e6) kemudian dipilih untuk proposal ini: https://bscscan.com/tx/0x83a4f8f52b8f9e6ff1dd76546a772475824d9aa5b953808dbc34d 1f3 9250f29d #eventlog
Dengan demikian, Proposal 11 diimplementasikan, meningkatkan jaminan token FTS menjadi 700000000000000, yang memungkinkan penyerang mengeksploitasinya untuk mendapatkan keuntungan dalam langkah-langkah berikut.
Selanjutnya, penyerang memberikan 100 FTS sebagai jaminan dengan menyerang kontrak https://bscscan.com/address/0xcd337b920678cf35143322ab31ab8977c3463a45, dan meminjam sejumlah besar token lain sebagai imbalan. https://bscscan.com/tx/0x13d19809b19ac512da6d110764caee75e2157ea62cb70937c8d9471afcb061bf
Penyerang juga memanipulasi oracle dengan memanggil fungsi "kirim ()" dalam kontrak pintar yang dirantai, di mana "requiredSignatures" dapat dilewati dan pemeriksaan daya dinonaktifkan dalam penerapan.
Akhirnya sebagian keuntungan ditransfer ke alamat penyerang, dan sisa keuntungan ditransfer di luar kontrak penyerang.
Analisis Kerentanan Kontrak
Kerentanan ①
Kerentanan pertama adalah cacat desain dalam kontrak tata kelola.
Kontrak tata kelola dapat mengeksekusi proposal yang berhasil untuk memodifikasi konfigurasi terkait pinjaman (yaitu, menambahkan agunan dan koefisien agunan yang sesuai). Namun, token FTS minimum yang diperlukan untuk memilih adalah 400.000 agar proposal berhasil dieksekusi. Karena harga token FTS yang rendah, penyerang menukar sekitar 11 ETH dengan lebih dari 400.000 token FTS.
Dengan token FTS ini, penyerang dapat membuat proposal jahat sesuka hati dan berhasil menjalankannya.
Kerentanan②
Kerentanan kedua adalah bahwa fungsi "komit" dari kontrak berantai memiliki kelemahan - memungkinkan siapa saja memperbarui harga.
Pernyataan yang diperlukan di L142 dikomentari. Oleh karena itu, tidak ada validasi untuk memastikan pemanggilan fungsi diaktifkan dengan benar.
Keberadaan aset
780.000 + 2,28 juta USDT ditransfer ke alamat penyerang setelah dua transaksi serangan.
2,3 juta USDT dikirim ke Ethereum ke anySwap (Multichain).
770.000 USDT dikirim ke Ethereum melalui cBridge (Celer Network).
Semua USDT dikonversi menjadi ETH dan DAI melalui Unswap dan dikirim ke Tornado Cash.
linimasa
Sekitar pukul 00:30 tanggal 9 Mei waktu Beijing, harga token Fortress (FTS) anjlok. Segera tim proyek menyatakan dalam telegram: Ada beberapa masalah dengan proyek tersebut, yang saat ini sedang diselidiki.
Tapi serangan itu mungkin dimulai lebih awal dari yang kita duga.
Pertama kali penyerang memulai "pengujian" adalah pada 1:41:59 pada tanggal 20 April, waktu Beijing, ketika mereka menggunakan kontrak bea cukai yang belum diverifikasi. Dalam minggu-minggu setelah "injakan", penyerang terus berinteraksi dengan Fortress melalui serangkaian transaksi dan menerapkan kontrak yang belum diverifikasi, perilaku yang tidak mereda hingga beberapa hari pertama serangan.
Setelah penyerang menyebarkan kontrak, mereka kemudian memulai serangkaian transaksi — memungkinkan mereka untuk membuat dan mendanai alamat yang dimiliki secara eksternal, membuat proposal jahat ke kontrak Gubernur Benteng Alpha dan memilih diri mereka sendiri — karena penyerang sebelumnya memanipulasi harga, Jadi mereka bisa dengan mudah membeli cukup FTS (suara yang diperlukan sebesar 400.000), lalu atur jaminan token FTS begitu tinggi sehingga nilai FTS meningkat, gunakan untuk meminjam sejumlah besar token lain, lalu tukarkan dengan ETH dan DAI.
Selain itu, ada fungsi " penghancuran diri " dalam kontrak yang digunakan oleh penyerang, yang akan dipicu setelah semua transaksi jahat selesai.
Saat ini dana ditransfer ke rantai Ethereum setelah melewati jembatan cBridge (Celer Network) dan jembatan pertukaran Multichain, dan dikirim ke Tornado Cash dalam serangkaian transaksi berikutnya.
menulis di akhir
Serangan ini seharusnya dihindari secara efektif melalui audit keamanan.
Untuk kerentanan ①, karena harga token tata kelola dan berapa banyak token yang beredar tidak diketahui, tidak mudah untuk menemukan risiko ini, tetapi dimungkinkan untuk memperingatkan potensi serangan terkait melalui penemuan risiko tertentu.
Untuk kerentanan ②, audit dapat menemukan kurangnya verifikasi kunci, mencegah siapa pun memanipulasi harga dengan mengirimkan fungsi.
Serangan yang disebabkan oleh manipulasi mesin oracle bukan satu-satunya contoh.Beberapa hari yang lalu, CertiK merilis [Hanya memanipulasi mesin oracle menjadi serigala tangan kosong? Analisis serangan $15,7 juta terhadap DEUS Finance DAO] Dana yang dicuri bahkan lebih besar lagi.
Ada risiko keamanan yang tak ada habisnya di bidang enkripsi, tim proyek harus waspada dan selalu memperhatikan insiden keamanan untuk pemeriksaan diri, dan memperbaiki dan mengaudit kode kontrak tepat waktu.