Sebuah celah kritis ditemukan dalam sistem pemrosesan pesanan (order path) Polymarket, platform perdagangan prediksi berbasis blockchain. Celah ini berpotensi menyebabkan kegagalan transaksi yang merugikan pengguna karena kesalahan validasi harga yang tampaknya sepele.
Kesalahan ini terungkap oleh seorang peneliti keamanan yang mengaudit SDK Python milik Polymarket, py-sdk. SDK ini berfungsi sebagai jembatan bagi pengembang untuk berinteraksi dengan pasar prediksi, mulai dari pembuatan hingga penandatanganan dan pengiriman pesanan. Saat ini py-sdk masih dalam tahap beta, yang seringkali menjadi lahan subur bagi munculnya bug tersembunyi, terutama yang berkaitan dengan jalur keuangan.
Inti masalah terletak pada fungsi validasi harga sebelum pesanan ditandatangani. SDK seharusnya memeriksa apakah harga yang diajukan sesuai dengan 'tick size' pasar, yaitu kenaikan harga terkecil yang diizinkan. Namun, dua fungsi yang bertanggung jawab untuk validasi ini, `_resolve_price` untuk pesanan limit dan `_resolve_protected_market_price` untuk pesanan pasar, justru melakukan pemeriksaan yang keliru. Alih-alih memverifikasi apakah harga merupakan kelipatan dari tick size, kedua fungsi tersebut hanya menghitung jumlah digit desimal pada harga tersebut.
Logika validasi yang cacat ini hanya berfungsi dengan baik pada tick size yang merupakan pangkat sepuluh, seperti 0.1, 0.01, atau 0.001. Namun, masalah muncul ketika Polymarket mendukung tick size 'half step' seperti 0.005 atau 0.0025. Pada kasus ini, jumlah digit desimal tidak lagi berkorelasi langsung dengan keanggotaan pada 'grid' tick size. Sebagai contoh, harga 0.007 memiliki tiga angka di belakang koma, sehingga lolos dari pemeriksaan jumlah desimal. Padahal, 0.007 bukanlah kelipatan dari 0.005, yang merupakan tick size yang valid. Akibatnya, harga tersebut berada di luar grid yang seharusnya.
Dampak dari bug ini lebih serius dari sekadar ketidaksesuaian kosmetik. Dalam dunia blockchain, pesanan seringkali ditandatangani menggunakan standar EIP-712, yang menyematkan detail harga secara permanen ke dalam tanda tangan digital. Jika harga yang diajukan tidak sesuai dengan tick size, bursa tidak dapat melakukan pembulatan otomatis ke tick terdekat tanpa membatalkan keabsahan tanda tangan digital. Konsekuensinya, pesanan tersebut hanya bisa ditolak. Lebih parah lagi, mekanisme pengaman sisi klien yang seharusnya mencegah pemborosan waktu dan sumber daya untuk penandatanganan pesanan yang cacat, justru gagal berfungsi pada jenis tick size yang paling rentan terhadap masalah ini.
Peneliti yang menemukan bug ini segera mengajukan perbaikan melalui Pull Request (PR) ke repositori py-sdk. Perbaikan yang diusulkan sangat ringkas, hanya delapan baris kode. Intinya adalah menambahkan pemeriksaan keanggotaan grid tick size setelah pemeriksaan jumlah desimal yang sudah ada. Dengan demikian, harga yang tidak sesuai dengan kelipatan tick size akan langsung ditolak di awal, sebelum proses penandatanganan yang memakan waktu dan energi.
Perbaikan ini bersifat aditif, artinya tidak akan memengaruhi pesanan yang valid sebelumnya. Setiap harga yang sudah lolos validasi sebelumnya secara otomatis merupakan kelipatan dari tick size, sehingga tetap akan lolos. Bug ini hanya akan menangkap harga-harga yang memang 'off grid' dan seharusnya ditolak oleh bursa, namun dengan cara yang lebih efisien dan jelas.
Untuk memastikan keandalan perbaikannya, peneliti tersebut tidak hanya mengajukan patch, tetapi juga membangun serangkaian tes komprehensif. Tes ini mencakup skenario di mana harga 'off grid' ditolak, harga yang 'on grid' (termasuk batas atas dan bawah) tetap diterima, dan kesalahan validasi desimal yang lama tetap berfungsi. Selain itu, dilakukan juga pengujian end-to-end yang mensimulasikan jalur pesanan limit publik dengan tick size 0.005 yang dimodifikasi, untuk memastikan mekanisme pengaman benar-benar aktif.
Upaya validasi ini sangat mendalam, mencakup sekitar 23.000 kasus uji yang menguji setiap kelipatan yang valid dan setiap celah yang tidak valid di seluruh rentang harga yang didukung untuk setiap tick size yang tersedia. Hasilnya, tidak ada penolakan palsu (false reject) maupun penerimaan palsu (false accept). Seluruh rangkaian tes unit untuk jalur pesanan lengkap tetap hijau, menandakan perbaikan tersebut stabil dan tidak menimbulkan efek samping yang tidak diinginkan.
Sebuah tinjauan independen yang bersifat 'adversarial' juga dilakukan. Tujuannya adalah untuk mencari celah atau alasan penolakan dari perspektif pengelola proyek. Argumen terkuat yang muncul adalah kemungkinan server dirancang untuk secara otomatis menyesuaikan harga 'off grid' ke tick terdekat. Namun, argumen ini dibantah tegas karena standar penandatanganan EIP-712 melarang modifikasi pesanan yang sudah ditandatangani tanpa membatalkan keabsahannya.
Bagi industri teknologi keuangan, khususnya di ranah aset digital dan perdagangan prediksi, temuan ini menjadi pengingat penting. Validasi yang efektif haruslah menguji secara langsung properti yang diklaim, bukan menggunakan proksi yang hanya kebetulan sesuai pada kondisi tertentu. Kasus ini menunjukkan bagaimana penyederhanaan logika validasi, meskipun tampak efisien pada kasus umum, dapat menciptakan kerentanan serius ketika berhadapan dengan kasus-kasus yang lebih kompleks atau spesifik, seperti tick size non-standar.
Di Indonesia, ekosistem aset digital dan blockchain terus berkembang pesat. Platform perdagangan prediksi semacam Polymarket, meskipun belum sepopuler platform trading kripto konvensional, memiliki potensi untuk diadopsi seiring dengan meningkatnya minat pada aplikasi desentralisasi (dApps) dan Web3. Oleh karena itu, pemahaman mendalam tentang celah keamanan seperti ini menjadi krusial. Kredibilitas platform dan keamanan dana pengguna adalah fondasi utama bagi adopsi teknologi ini di tanah air.
Ke depan, temuan ini mendorong para pengembang untuk menerapkan praktik pengujian yang lebih ketat dan menyeluruh, terutama pada komponen krusial seperti validasi input dan proses penandatanganan transaksi. Industri juga perlu terus mendorong standar keamanan yang lebih tinggi, serta transparansi dalam pelaporan dan perbaikan bug. Bagi Polymarket sendiri, perbaikan ini menjadi langkah penting untuk membangun kepercayaan pengguna dan memastikan stabilitas platform mereka seiring pertumbuhan pengguna dan volume transaksi.
Pengalaman ini juga memberikan pelajaran berharga bagi para pengembang di seluruh dunia, termasuk di Indonesia. Validasi data haruslah mencerminkan persyaratan bisnis atau teknis yang sebenarnya. Mengandalkan metrik yang hanya mirip atau kebetulan cocok bisa berakibat fatal. Kasus ini menggarisbawahi pentingnya pengujian ekstensif yang mencakup berbagai skenario, termasuk kasus-kasus tepi (edge cases) dan konfigurasi non-standar, untuk mencegah kerugian finansial akibat bug yang tersembunyi.
Dengan semakin banyaknya layanan finansial berbasis blockchain yang hadir, kesadaran akan pentingnya keamanan siber, terutama dalam hal validasi data dan integritas transaksi, harus terus ditingkatkan. Perbaikan bug seperti yang dilakukan pada Polymarket ini, meskipun kecil dalam kode, memiliki implikasi besar terhadap kepercayaan pengguna dan stabilitas ekosistem.