One Shot: Reloaded

First Flight #47
Beginner FriendlyNFT
100 EXP
Submission Details
Impact: medium
Likelihood: medium

#transaksi

Author Revealed upon completion

Root + Impact


Description

Fungsi transferToken() tidak melakukan validasi terhadap alamat tujuan. Hal ini memungkinkan pengiriman token ke alamat 0x0 atau alamat yang tidak valid, sehingga menyebabkan kehilangan aset permanen.

// Root cause: kurangnya validasi pada parameter `to`
//@> token.transfer(to, amount);

Risk

Likelihood:

  • Reason 1 //Reason 1: Terjadi setiap kali pengguna salah memasukkan alamat tujuan.

  • Reason 2 //Tidak ada mekanisme validasi yang mencegah pengiriman ke alamat address(0).

Impact:

  • Impact 1Token yang dikirim akan hilang secara permanen.

  • Impact 2Kerugian finansial langsung bagi pengguna dan menurunkan kepercayaan pada smart contract.

Proof of Concept

Misalnya pengguna memanggil fungsi transferToken dengan parameter berikut:

transferToken(0x0000000000000000000000000000000000000000, 1000);

Hasilnya, 1000 token akan terkirim ke alamat 0x0 dan tidak bisa dipulihkan.

Recommended Mitigation

diff

- token.transfer(to, amount);

+ require(to != address(0), "Invalid address");

+ token.transfer(to, amount );

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.