Analise smart-contract
12.04.2024

Deskripsi detektor proksi

Kami melanjutkan seri artikel yang didedikasikan untuk menjelaskan skema penipuan dalam kontrak pintar. Hari ini kami akan membahas kontrak pintar dengan fitur kontrol proxy (Proxy).

Kontrak pintar Proxy telah mendapatkan popularitas di ruang blockchain karena kemampuan modernisasi dan fleksibilitasnya. Namun, kontrak semacam itu juga membawa bahaya besar, terutama saat digunakan oleh pengguna jahat. Penipu sering menggunakan skema menipu dalam kontrak pintar proxy untuk menipu pengguna. Untuk mengidentifikasi ancaman semacam itu, Anda perlu memahami risiko yang mungkin terjadi dan memiliki kecakapan teknis.

Mari kita lihat lebih dekat deskripsi bahaya potensial, skema penipuan umum, dan cara mengidentifikasi ancaman semacam itu dalam kontrak pintar proxy.

Bahaya dari kontrak pintar proxy:

  1. Pembaruan yang Tidak Sah:
    Kontrak proxy memungkinkan pemilik untuk memperbarui kontrak yang mendasarinya. Namun, jika mekanisme ini tidak diterapkan dengan aman, itu bisa menyebabkan pembaruan yang tidak sah, memungkinkan penyerang menyuntikkan kode jahat ke dalam kontrak.

  2. Panggilan eksternal yang tidak diperiksa:
    Programmer nakal dapat menggunakan panggilan eksternal ke kontrak yang tidak terpercaya tanpa verifikasi yang tepat. Ini dapat menyebabkan kerentanan, termasuk serangan reentrancy, di mana kontrak jahat berulang kali memanggil kontrak proxy, yang dapat menghabiskan dana.

  3. Kurangnya transparansi:
    Kode sumber dari kontrak manajemen biasanya tidak diverifikasi.

  4. Proyek palsu:
    Penipu membuat proyek palsu yang menjanjikan fitur menarik seperti pengembalian tinggi atau fungsionalitas unik. Mereka dapat menggunakan kontrak proxy untuk menciptakan kesan legitimasi sambil menyembunyikan niat jahat.

  5. Skema Ponzi:
    Penipu membangun skema Ponzi berdasarkan kontrak proxy, menarik pengguna dengan janji pengembalian tinggi. Skema semacam itu mungkin memiliki komponen yang dapat diperbarui untuk mempertahankan ilusi kelayakan.

  6. Kontrak kloning:
    Penipu mengkloning proyek yang sah dan memperkenalkan kerentanan atau perubahan pada kontrak yang dikloning. Pengguna yang tidak curiga dapat berinteraksi dengan klon semacam itu, mengira mereka adalah yang asli.

Bagaimana Anda dapat menentukan secara independen apakah ancaman semacam itu ada dalam kontrak pintar?

Perlu dicatat bahwa jika kode target dari kontrak pintar berisi referensi ke kontrak eksternal (Proxy), maka dalam hampir 100% kasus kontrak Proxy ini akan memiliki kode sumber yang tersembunyi. Dalam hal ini, kontrak kontrol eksternal dapat melakukan tindakan apa pun dengan kontrak target (misalnya: mengubah saldo pengguna, mengaktifkan dan menonaktifkan perdagangan, memulai emisi, dll.).

Oleh karena itu, perlu dipahami bahwa bekerja dengan kontrak pintar Proxy adalah permainan roulette dalam arti sebenarnya dari kata (kasino selalu menang).

Menemukan panggilan Proxy dalam kontrak pintar cukup mudah. Dan, seperti yang kami katakan sebelumnya, implementasi fungsi jahat ada di kontrak kontrol - dengan kontrak pintar target tampak "putih dan lembut" (yaitu, umumnya bebas dari metode apa pun yang mungkin menimbulkan kecurigaan).

Jika Anda ingin menentukan sendiri apakah fitur Proxy ada dalam kontrak pintar, tips berikut akan berguna.

  • Lakukan audit kontrak: Sebelum bekerja dengan kontrak pintar apa pun, tinjau kode sumber dan fungsionalitasnya. Perhatikan keberadaan proses pembaruan yang terdokumentasi dengan baik, mekanisme kontrol akses, dan transparansi proyek.

  • Pastikan kontrak pintar telah menjalani audit keamanan eksternal oleh perusahaan terkemuka. Laporan audit dapat memberikan wawasan tentang potensi kerentanan.

  • Teliti tim pengembangan proyek. Tim yang transparan dan dapat dipercaya cenderung tidak melakukan penipuan.

  • Konsultasikan dengan komunitas proyek dan dapatkan umpan balik dari pengguna lain yang memiliki pengalaman dengan kontrak tersebut. Penipu sering menghindari diskusi publik.

  • Saat bekerja dengan kontrak, gunakan program dompet dan alat terkenal yang menyediakan fitur keamanan dan perlindungan transaksi tambahan.

  • Berhati-hatilah saat menangani kontrak baru dan belum terbukti, terutama yang menjanjikan pengembalian tinggi atau menunjukkan perilaku yang tidak biasa.

  • Jika sesuatu dalam kontrak tampaknya terlalu bagus untuk menjadi kenyataan atau mencurigakan, percayalah pada intuisi Anda dan hindari itu.

  • Tetap up-to-date dengan perkembangan terbaru di komunitas kami (saluran Telegram) dan praktik terbaik untuk deteksi penipuan (Blog dan saluran YouTube kami).

Pemindai keamanan Lotus Market menemukan semua fitur kontrol eksternal (Proxy) yang umum (termasuk yang tersembunyi). Gunakan langganan premium kami dan lindungi dana Anda dari ancaman.


Berikut adalah contoh tanda bahaya umum dan pola mencurigakan yang harus Anda perhatikan saat memeriksa kontrak pintar untuk mengidentifikasi potensi fungsionalitas jahat. Penting untuk memahami tanda-tanda ini untuk melindungi diri Anda dan orang lain dari potensi penipuan. Mari kita lihat beberapa variasi pola kode dan tips untuk membantu Anda mengidentifikasi fungsionalitas mencurigakan dalam kontrak pintar:

Aturan utamanya adalah jika kode kontrak berisi panggilan fungsi Call, CallCode atau DelegateCall, itu berarti kontrak tersebut memanggil kode eksternal dan menyerahkan kontrol atas datanya.

tips around proxy

Mari kita lihat contoh utama penggunaan kontrak Proxy.

1. Variabel penyimpanan yang tidak diinisialisasi.

Salah satu kerentanan yang paling umum dalam kontrak proxy adalah penyalahgunaan variabel penyimpanan. Ketika kontrak proxy digunakan dengan DelegateCall untuk memanggil fungsi pada kontrak implementasi, variabel penyimpanan kontrak proxy akan dimodifikasi. Namun, jika penyimpanan kontrak proxy memiliki nilai yang tidak diinisialisasi atau nilai default, ini dapat menyebabkan perilaku yang tidak terduga.

    contract Implementation {
      address public owner;

      constructor() {
          owner = msg.sender;
      }
  }
    

Dalam contoh ini, jika variabel owner di kontrak Proxy tidak diinisialisasi, memanggil owner() pada kontrak proxy akan mengembalikan variabel owner dari kontrak implementasi, yang mungkin tidak sesuai dengan yang diharapkan pengguna.

2. Panggilan eksternal yang tidak diverifikasi.

Kontrak penipuan dapat menggunakan panggilan eksternal ke kontrak yang tidak terpercaya tanpa pemeriksaan yang tepat. Jika kontrak proxy secara langsung atau tidak langsung memanggil kontrak jahat melalui DelegateCall, kontrak jahat tersebut dapat melakukan tindakan sewenang-wenang, termasuk serangan reentrancy, tanpa perlindungan yang memadai.

    contract Proxy {
      function execute(address target, bytes memory data) external {
          target.delegatecall(data);
      }
  }
    

Jika seorang pengguna mengirimkan kontrak sembarang dan data jahat sebagai alamat target, hal ini dapat mengakibatkan tindakan tidak sah yang dilakukan atas nama pengguna.

3. Kontrol akses yang tidak tepat.

Kontrak penipuan mungkin memiliki kontrol akses yang tidak tepat, memungkinkan pengguna yang tidak sah untuk melakukan fungsi administratif. Saat menggunakan kontrak proxy, harus dikontrol dengan hati-hati siapa yang memiliki izin untuk memperbarui kontrak implementasi. Kegagalan melakukannya dapat mengakibatkan perubahan tidak sah pada perilaku kontrak.

    contract Proxy {
      address public owner;
      address public implementation;
                                      
      function upgrade(address newImplementation) external {
          require(msg.sender == owner, "Only the owner can upgrade.");
          implementation = newImplementation;
      }
  }
    

Dalam contoh ini, jika alamat owner tidak dikontrol dengan benar atau tidak ada pemeriksaan tentang siapa yang dapat memanggil fungsi update, pihak yang tidak sah dapat mengubah implementasi menjadi kontrak jahat.

4. Risiko versi dan manajemen.

Kontrak proxy sering menggunakan mekanisme versi dan manajemen untuk memperbarui logika kontrak. Jika mekanisme ini tidak diterapkan dengan aman, mereka dapat menjadi rentan terhadap serangan atau manipulasi oleh pihak jahat.

    contract Proxy {
      address public owner;
      address public implementation;
      address public pendingImplementation;
          
      function upgrade(address newImplementation) external {
          require(msg.sender == owner, "Only the owner can upgrade.");
          pendingImplementation = newImplementation;
      }
      function claimUpgrade() external {
          require(msg.sender == owner, "Only the owner can claim the upgrade.");
          implementation = pendingImplementation;
      }
  }
    

Dalam kasus ini, penyerang dapat menawarkan kontrak "bersih" baru dan kemudian segera melakukan pembaruan, secara efektif memasukkan kode jahat mereka ke dalam operasi.

tips around proxy

Apa yang harus saya perhatikan saat mempelajari kontrak Proxy dan ancaman apa yang mereka hadapi?

  1. Transfer dana tanpa izin:
    Salah satu cara paling umum bagi penipu untuk mencuri uang adalah dengan mentransfer dana oleh pemegang kontrak ke diri mereka sendiri atau alamat lain tanpa izin.

  2. "Backdoor" tersembunyi:
    Penipu mungkin menyembunyikan kode berbahaya di balik nama fitur yang dikaburkan atau menyesatkan, sehingga sulit bagi pengguna untuk mendeteksi niat sebenarnya mereka. Nama fungsi yang tidak jelas atau menyesatkan. Operator kondisional yang memberikan hak istimewa khusus kepada alamat tertentu.

  3. Token dan bursa palsu:
    Penipu sering membuat token palsu atau platform bursa palsu untuk menipu pengguna agar mentransfer aset mereka ke kontrak jahat. Perhatikan kontrak token yang perilakunya mencurigakan, seperti mencetak token tanpa batas atau menerima transfer yang tidak sah.

  4. Fungsi penerbitan atau transfer kepemilikan tanpa izin:
    Kontrak eksternal dapat mengubah pemegang token atau memicu penerbitan baru, menyebabkan inflasi harga.

  5. Dokumentasi yang menyesatkan atau komentar yang tidak sesuai dengan perilaku kode:
    Penipu mungkin menyediakan dokumentasi atau komentar yang menyesatkan atau tidak akurat dalam kode mereka untuk menyesatkan pengguna tentang fungsi sebenarnya dari kontrak tersebut. Selalu periksa silang dokumentasi dengan perilaku kode yang sebenarnya.

  6. Kurangnya pemeriksaan keamanan:
    Waspadalah terhadap kontrak yang tidak memiliki pemeriksaan keamanan yang tepat, kontrol akses, atau gagal menerapkan perlindungan terhadap kerentanan umum seperti reentrancy. Saat mempertimbangkan kontrak pintar, selalu periksa kodenya dengan teliti, cari desain yang terdokumentasi dengan baik dan transparan, periksa audit keamanan eksternal, dan pelajari umpan balik dari komunitas. Selain itu, berhati-hatilah saat berinteraksi dengan kontrak yang menunjukkan atribut ini, karena mungkin dirancang untuk mencuri dana atau melakukan aktivitas jahat lainnya.

  7. Ekspresi kondisional yang kompleks:
    Penipu mungkin menggunakan ekspresi kondisional atau logika yang rumit dan sulit diikuti, sehingga sulit untuk memahami fungsi sebenarnya dari kontrak tersebut. Perhatikan kode yang tidak perlu rumit: logika yang terlalu kompleks atau tidak jelas, serta syarat dan ketentuan yang tidak relevan dengan tujuan kontrak.

  8. Pola manajemen dan kepemilikan (Ownership) yang tidak jelas:
    Penipu sering menggunakan kontrak proxy dengan mekanisme tata kelola yang tidak jelas atau struktur kepemilikan tersembunyi, sehingga sulit bagi pengguna untuk menentukan siapa yang mengontrol kontrak tersebut.

  9. Imitasi proyek terkenal:
    Penipu sering membuat kontrak yang meniru fungsi atau tampilan proyek terkenal dan sah. Selalu periksa keaslian proyek dan pastikan itu bukan palsu. Perhatikan perbedaan kecil dalam nama, logo, atau merek. Proyek yang mengklaim resmi tetapi tidak memiliki validasi yang tepat.

  10. Penyebaran yang terburu-buru atau anonim:
    Penipu mungkin menyebarkan kontrak secara tergesa-gesa, tanpa identifikasi yang jelas dan dengan informasi minimal tentang proyek atau pengembangnya. Perhatikan kontrak yang disebarkan tanpa uji tuntas dan perencanaan yang memadai, dirilis oleh tim yang tidak dikenal.

  11. Kurangnya verifikasi atau audit publik:
    Jika kontrak tidak menawarkan tinjauan kode sumber publik atau belum menjalani audit keamanan pihak ketiga, Anda harus mendekatinya dengan sangat hati-hati.

  12. Penyimpanan data yang tidak biasa atau tersembunyi:
    Penipu mungkin menggunakan skema penyimpanan data yang tidak konvensional atau tersembunyi untuk menyembunyikan fungsi berbahaya. Perhatikan bahwa data mungkin disimpan di tempat yang tidak terduga dalam kontrak.

  13. Kolam likuiditas palsu:
    Dalam kasus proyek DeFi, waspadalah terhadap kolam likuiditas yang menjanjikan pengembalian tinggi. Penipu mungkin membuat kolam palsu untuk menarik likuiditas dan kemudian mengeksploitasi pengguna. Pendapatan yang tinggi secara tidak konsisten dari penyediaan likuiditas. Kurangnya transparansi dan dokumentasi tentang mekanisme operasi kolam tersebut.

tips around proxy

Untuk melindungi dari kerentanan tersebut, kontrak yang menggunakan template proxy dan DelegateCall harus diperiksa dan diaudit dengan hati-hati, mekanisme kontrol akses harus diterapkan, dan panggilan eksternal harus diamankan. Pengguna harus berhati-hati saat berinteraksi dengan kontrak, terutama yang memiliki mekanisme pembaruan yang kompleks, dan selalu melakukan uji tuntas sebelum berinteraksi dengan kontrak pintar di blockchain.

Dalam dunia Blockchain yang berkembang pesat, sangat penting untuk tetap waspada dan terinformasi untuk melindungi diri sendiri dan aset Anda dari skema penipuan potensial dan kerentanan terkait fitur proxy contracts dan DelegateCall.


Kami berharap informasi ini telah membantu Anda untuk lebih memahami skema kontrak pintar yang dikelola (Proxy).

Karena semua informasi di blockchain terbuka (dengan syarat bahwa kode sumber kontrak telah diverifikasi), dengan pengetahuan ini Anda dapat mempelajari kontrak pintar secara mandiri dan mengidentifikasi berbagai skema penipuan.

Namun, kami sudah melakukan semuanya untuk Anda! Daftar untuk berlangganan premium dan dapatkan akses ke filter eksklusif pada fitur kontrak pintar dan analitik terbaru. Tingkatkan peluang Anda untuk berinvestasi dengan sukses dalam token yang menguntungkan.

Salam, tim Lotus Market.

All posts

Connect to a wallet

Metamask