Lompat ke konten

Peracunan alamat

Peracunan alamat menanam alamat penerima yang menyerupai alamat tepercaya ke riwayat transaksi atau antarmuka lain yang tampak tepercaya agar pembayaran berikutnya tersalin ke penyerang; serangan ini mengeksploitasi verifikasi penerima tanpa mengubah alamat asli atau mencuri kuncinya.

Diperbarui

Hanya untuk tujuan edukasi; bukan merupakan nasihat investasi atau rekomendasi investasi. Investasi dapat mengakibatkan kerugian.

Jawaban langsung

Peracunan alamat adalah penipuan penggantian penerima. Penyerang membuat alamat berbeda yang awalan dan akhiran terlihatnya menyerupai alamat penerima tepercaya, lalu menempatkannya di riwayat transaksi atau antarmuka lain yang tampak tepercaya. Penyerang berharap pengirim kelak menyalin alamat serupa itu dan menandatangani pembayaran sah kepadanya. Serangan tersebut tidak mengubah alamat yang benar, membobol kunci privatnya, atau membuat konsensus salah mengarahkan transfer.

Catatan yang ditanam dapat berasal dari transaksi aset native yang nyata, transfer token bernilai nol yang sesuai standar, atau log yang dipancarkan kontrak token lain. Halaman aktivitas dompet dan penjelajah blok merupakan tampilan turunan: baris berlabel “terkirim” dapat berasal dari field peristiwa, bukan transaksi luar yang ditandatangani alamat from yang ditampilkan. Periksa secara terpisah pengirim dan tujuan transaksi luar, kontrak yang dipanggil, kontrak pemancar peristiwa, field terindeks, serta perubahan saldo aktual.

Checksum ERC-55 membantu mendeteksi sebagian kesalahan ketik, tetapi alamat penyerang yang berbeda juga dapat valid secara sintaksis dan memiliki checksum yang benar. Alamat EVM 20 byte biasa pun tidak mengidentifikasi chain, aset, peran penerima, memo setoran, atau panggilan kontrak yang dimaksud. Instruksi pembayaran yang aman mengikat seluruh fakta tersebut pada tujuan lengkap.

Peracunan alamat
0 / 5
0 item yang ditinjau; 5 item yang masih belum terselesaikan

Menyelesaikan tinjauan ini tidak membuktikan suatu aset, transaksi, atau sistem aman.

Cara kerjanya

Penyerang mengamati pola pembayaran publik dan mencari alamat vanity yang cocok dengan karakter yang dipersingkat dompet pada tampilan. Kecocokan beberapa karakter heksadesimal tidak mengkloning akun; byte yang tidak terlihat tetap berbeda dan penyerang menguasai kunci baru tersebut. Transfer kecil dapat memasukkan alamat nyata itu ke riwayat. Secara terpisah, ERC-20 mewajibkan transfer bernilai nol diperlakukan sebagai transfer normal dan memancarkan Transfer, sehingga catatan bernilai nol bukan bukti tersendiri atas pemalsuan, kompromi, otorisasi, atau kerugian ekonomi.

Kontrak token berbahaya juga dapat memancarkan log Transfer(victim, lookalike, 0) miliknya sendiri. Log tersebut merupakan data receipt nyata yang berasal dari kontrak pemancar, tetapi bukan peristiwa dari kontrak aset kanonis dan tidak membuktikan korban menandatangani transaksi luar. Meski demikian, pengindeks yang mengklasifikasikan aktivitas dari topik peristiwa tanpa konteks kontrak dan panggilan yang cukup dapat menyajikan baris transfer keluar yang menyesatkan.

Kendali penentu adalah maksud pembayaran akhir. Maksud itu harus mengikat chain dan jaringan, aset native atau kontrak token yang tepat, alamat lengkap dan jenis penerima, jumlah serta unit mentah, juga calldata, memo, tag tujuan, atau masa berlaku. Alamat setoran bursa, bridge, proxy, dan rute sekali pakai dapat kedaluwarsa atau memerlukan lebih dari sekadar alamat. Malware clipboard dan kode QR yang disusupi merupakan serangan berbeda, tetapi verifikasi tujuan lengkap yang sama akan menangkap penggantian sebelum penandatanganan.

Nama dan pembayaran uji adalah kendali pendukung, bukan bukti identitas. Resolusikan nama ENS untuk chain dan record yang dimaksud saat penandatanganan; bila nama reverse ditampilkan, lakukan resolusi forward kembali ke alamat yang sama. Uji kecil hanya membantu jika penerima mengonfirmasinya secara independen dan pembayaran utama menggunakan kembali tujuan tersemat yang sama. Menyalin ulang dari riwayat menghilangkan perlindungan itu.

Gunakan alur kerja berikut:

  1. Sematkan chain, jaringan, aset dan kontrak token yang tepat, jenis penerima, format alamat, jumlah, serta memo, tag, calldata, versi, atau kedaluwarsa dari sumber independen yang terautentikasi.
  2. Resolusikan nama atau QR satu kali, validasi format dan checksum, lalu ikat seluruh byte tujuan pada chain yang dimaksud; konfirmasikan nama reverse dengan resolusi forward, bukan menganggap label sebagai identitas.
  3. Bandingkan tujuan dengan allowlist terkontrol, buku alamat, atau faktur bertanda tangan, bukan dengan riwayat transaksi; wajibkan persetujuan independen atau ganda untuk penerima baru atau yang berubah secara material.
  4. Dekode transaksi belum bertanda tangan secara tepat: bedakan field native to dari kontrak token atau bridge, lalu periksa penerima, token, jumlah mentah, approval, tenggat, dan semantik tujuan dalam calldata.
  5. Jika sesuai, kirim uji kecil ke tujuan tersemat dan dapatkan konfirmasi independen penerima; jangan menyalin kembali alamat dari riwayat untuk pembayaran utama.
  6. Tandatangani transfer utama hanya dari record terverifikasi, bandingkan tujuan lengkap dan jumlah pada layar tepercaya, lalu verifikasi receipt, kontrak pemancar, log, dan perubahan saldo pada chain yang benar.
  7. Jika dicurigai terjadi peracunan atau salah kirim, hentikan pembayaran lanjutan, simpan hash dan bukti, serta segera hubungi layanan penerima, penerbit, atau penegak hukum bila relevan; anggap pembekuan, pengembalian, dan pemulihan bersifat bersyarat dan tidak pernah terjamin.

Contoh

  • Pemendekan menyembunyikan perbedaan. Alamat sah 0x12ab1111111111111111111111111111111189ef dan alamat penyerang 0x12ab9999999999999999999999999999999989ef sama-sama dirender sebagai 0x12ab...89ef. Keduanya berbagi 4 + 4 = 8 karakter heksadesimal yang ditampilkan, tetapi berbeda pada seluruh 32 karakter tengah. Membandingkan ujung yang dirender saja menghasilkan kecocokan palsu; perbandingan byte lengkap tidak.
  • Beban kerja pencarian vanity. Mencocokkan k = 8 karakter heksadesimal pilihan membutuhkan ekspektasi kerja 16^8 = 4,294,967,296 kandidat. Pada asumsi 50,000,000 candidates/s, waktu ekspektasinya ialah 4,294,967,296 / 50,000,000 = 85.89934592 s. Ini menggambarkan ruang pencarian, bukan jaminan waktu proses atau ambang peringatan dompet.
  • Log versus state. Sebuah kontrak token memancarkan Transfer(victim, lookalike, 0). Saldo korban bergerak dari 250,000.000000 ke 250,000.000000, sehingga deltanya 0.000000; indeks aktivitas tetap dapat merender baris transfer. Periksa kontrak pemancar dan otorisasi panggilan: baris itu sendiri tidak membuktikan perpindahan nilai maupun tanda tangan korban.
  • Uji harus menyematkan tujuan. Treasury berencana mengirim 50,000 USDC, mengirim 1 USDC ke alamat terverifikasi, menerima konfirmasi independen, lalu mengirim 49,999 USDC dari record tersemat yang sama: 1 + 49,999 = 50,000 USDC. Jika staf menyalin ulang alamat serupa dari riwayat untuk bagian kedua, uji tersebut tidak lagi melindungi pembayaran 49,999 USDC.

Risiko

  • Pengirim menyalin alamat serupa dari riwayat transaksi yang diracuni.
  • Antarmuka yang dipersingkat menyembunyikan karakter tengah yang berbeda.
  • Awalan atau akhiran vanity dianggap sebagai identitas penerima.
  • Transfer ERC-20 bernilai nol menciptakan baris riwayat yang menyesatkan.
  • Token palsu atau lognya dianggap sebagai aktivitas aset kanonis.
  • Pengindeks salah mengklasifikasikan field peristiwa atau terlambat memperbaikinya.
  • Nama, simbol, atau ikon token spam menyamar sebagai aset tepercaya.
  • Malware clipboard mengganti alamat terverifikasi sebelum penandatanganan.
  • Buku alamat lokal atau tersinkronisasi diracuni atau kedaluwarsa.
  • Allowlist mengikat chain, aset, peran, atau versi alamat yang salah.
  • Peringatan checksum tidak valid atau hilang diabaikan.
  • Checksum yang valid dianggap sebagai bukti identitas penerima.
  • Resolusi ENS berubah, memakai jenis koin yang salah, atau kedaluwarsa.
  • Nama reverse ditampilkan tanpa konfirmasi forward.
  • Pembayaran uji diikuti penyalinan baru dari sumber tidak tepercaya.
  • Alamat setoran bursa, jaringan, memo, atau tag salah atau kedaluwarsa.
  • Tujuan bridge, proxy, atau kontrak dan calldata yang diperlukan disalahpahami.
  • Penanda tangan hanya memeriksa teks terpotong, bahkan pada perangkat keras.
  • Transfer ke penerima yang salah menjadi kanonis sebelum intervensi.
  • Korban mengandalkan pembekuan diskresioner penerbit atau tertipu penipuan pemulihan.

Kesalahpahaman umum

  • Peracunan alamat berarti dompet, kunci, atau blockchain diretas. Serangan yang umum mengeksploitasi pemilihan penerima sementara kriptografi dan konsensus yang valid mengeksekusi maksud bertanda tangan yang salah.
  • Baris bernilai nol pasti transaksi on-chain palsu. Transfer sesuai standar dan log nyata dapat membawa nilai nol; periksa sumber dan efek statenya.
  • Ujung yang sama beserta checksum membuktikan penerima. Alamat valid yang berbeda dapat mencocokkan karakter terlihat dan mempunyai checksum validnya sendiri.
  • Satu uji yang berhasil otomatis melindungi transfer berikutnya. Perlindungan hilang bila transfer utama tidak menggunakan kembali tujuan tersemat dan terkonfirmasi.
  • Dompet, validator, atau penerbit token selalu dapat membalikkan pembayaran. Wewenang pemulihan dan kerja sama bergantung pada aset, layanan, yurisdiksi, bukti, dan waktu.

Topik terkait

Sumber

Navigasi

Cari di wiki...