Tiga Pihak Bersama: Pertarungan Penjagaan Kerentanan Sistem Perdagangan NOFX AI

Penulis: Yao & Thinking & Pds Editor: 77

Latar Belakang

Dengan meningkatnya kompetisi perdagangan nyata dengan model besar AI, semakin banyak komunitas kripto dan pengembang mulai mencoba perdagangan otomatis yang didorong oleh AI, banyak solusi sumber terbuka juga cepat digunakan. Namun, proyek-proyek ini tidak lepas dari potensi risiko keamanan.

NOFX AI adalah sistem perdagangan otomatis cryptocurrency berbasis DeepSeek/Qwen AI yang bersifat open-source, mendukung bursa seperti Binance, Hyperliquid, dan Aster DEX. Tim keamanan Slow Mist menerima informasi awal dari @Endlessss20, mencurigai bahwa sistem ini dapat menyebabkan kebocoran API Key bursa, sehingga melakukan analisis keamanan terhadapnya.

Alamat sumber terbuka: https://github.com/NoFxAiOS/nofx

Analisis Penyebab Kerentanan

Setelah analisis mendalam oleh tim keamanan Slow Fog, ditemukan bahwa NOFX AI memiliki dua jenis masalah otentikasi utama di berbagai versi commit.

Versi Kerentanan “Zero Authentication”

Pengajuan pada 31 Oktober 2025 dengan commit 517d0caf6fb091235e56c27889170b53a16e4e6b (termasuk cabang origin/main, origin/dev, dll) memperkenalkan “mode administrator default”, di mana mode administrator untuk versi commit ini diaktifkan secara default dan middleware langsung dilewatkan.

config.json.example:1-24 dan skrip migrasi basis data mengatur admin_mode menjadi true, main.go:42-63 setelah dibaca langsung memanggil auth.SetAdminMode(true).

(Refer:https://github.com/NoFxAiOS/nofx/blob/517d0caf6fb091235e56c27889170b53a16e4e6b/config.json.example)

(Refer:https://github.com/NoFxAiOS/nofx/blob/517d0caf6fb091235e56c27889170b53a16e4e6b/config/database.go#L214)

(Refer:https://github.com/NoFxAiOS/nofx/blob/517d0caf6fb091235e56c27889170b53a16e4e6b/main.go#L42-63)

Yang lebih penting, di kode api/server.go#L799 dapat dilihat bahwa selagi auth.IsAdminMode() bernilai true, middleware akan langsung return, sepenuhnya melewatkan pemeriksaan header otorisasi.

(Refer:https://github.com/NoFxAiOS/nofx/blob/517d0caf6fb091235e56c27889170b53a16e4e6b/api/server.go#L799)

Oleh karena itu, pada commit ini dan sebelumnya, selama penyebaran tetap dalam mode administrator default, siapa pun dapat langsung mengakses /api/exchanges dan mendapatkan semua kunci API/pribadi bursa.

Dalam mode ini, semua API yang dilindungi otentikasi termasuk /api/exchanges akan dijalankan dengan identitas “admin”, sehingga siapa pun hanya perlu melakukan permintaan GET ke API publik untuk mendapatkan konten lengkap ExchangeConfig dalam database.

Field ExchangeConfig mencakup api_key, secret_key, hyperliquid_wallet_addr, dan aster_private_key, semuanya adalah kunci login atau kunci pribadi untuk bursa. Dengan kata lain, selama mode administrator default dipertahankan, siapa pun dapat langsung mengakses /api/exchanges dan mendapatkan semua API/kunci pribadi bursa. Kode dari commit ini setara dengan mengekspos semua kunci bursa di sebuah antarmuka GET yang tidak memerlukan login.

Versi Authorization yang diminta

Dalam pengajuan pada 5 November 2025 be768d91a3969b39741623c9507f3119e583eb16(PR #540 “Aktifkan kata sandi admin dalam mode admin”), pengembang menghapus logika yang sebelumnya langsung memberikan akses tanpa memverifikasi Otorisasi hanya dengan mendeteksi admin_mode.

Perlu dicatat bahwa commit ini saat ini hanya ada di cabang seri dev (termasuk dev lokal dan origin/dev, dll). origin/main tidak mencakup commit ini.

authMiddleware telah diubah menjadi bentuk api/server.go:1471-1511, yang harus menyertakan Authorization: Bearer untuk dapat mengakses rute yang dilindungi. Jika format salah atau verifikasi JWT gagal, akan langsung mengembalikan 401.

(Refer:https://github.com/NoFxAiOS/nofx/blob/be768d91a3969b39741623c9507f3119e583eb16/api/server.go#L1471)

Pengajuan yang sama juga menambahkan /api/admin-login, yang mengharuskan penyebar untuk mengatur variabel lingkungan NOFX_ADMIN_PASSWORD, yang berarti mode administrator tidak lagi “langsung berlaku tanpa login”. Jika admin_mode masih true, main.go:203-226 akan memeriksa variabel lingkungan NOFX_ADMIN_PASSWORD, dan memanggil log.Fatalf untuk langsung menghentikan proses, kecuali variabel tersebut telah diatur sebelumnya. Setelah pengaturan selesai, administrator harus mengirimkan kata sandi ini melalui antarmuka /api/admin-login yang baru untuk mendapatkan JWT; jika tidak mengatur kata sandi dan memulai, akan dipaksa keluar pada tahap inisialisasi.

Namun, perubahan kali ini hanya mengupgrade “tanpa otorisasi sepenuhnya” menjadi “harus menyediakan JWT”, masih belum menyelesaikan dua masalah inti.

Pertama adalah config.json.example:1-27 masih menuliskan jwt_secret secara hardcoded, main.go:203-214 terus kembali ke string publik itu saat variabel lingkungan tidak ada.

Jika pengembang langsung menggunakan file konfigurasi contoh, akan menyebabkan kunci default diaktifkan, sehingga ada risiko keamanan. Sementara itu, skrip penyebaran default dalam proyek, file start.sh, akan langsung menyalin file konfigurasi contoh untuk digunakan saat mendeteksi konfigurasi yang hilang.

Kedua, /api/exchanges masih mengembalikan field sensitif seperti api_key, secret_key, dan kunci pribadi Aster dalam bentuk JSON.

Oleh karena itu, versi ini mengakses /api/exchanges meskipun memerlukan Otorisasi, tetapi penyerang masih dapat membuat JWT melalui kunci default atau memanggil antarmuka login default untuk mendapatkan token, sehingga dapat membaca semua kunci.

Masalah JWT versi saat ini masih ada

Hingga saat ini (sekitar 13 November 2025), HEAD cabang dev adalah b2e4be91523dc606be8708ec6602fecbbb0c20ea (PR #546 “Feature/faq”). Tim keamanan Slow Mist melakukan checkout ulang terhadap commit ini dan menemukan bahwa:

  • authMiddleware masih merupakan implementasi dari api/server.go:1471-1511, memerlukan token Bearer;
  • /api/exchanges masih langsung mengembalikan ExchangeConfig (api/server.go:1009-1021);
  • config.json.example:1-27 dan main.go:198-226 tetap hardcode admin_mode=true dan jwt_secret default.

Oleh karena itu, selama tim operasional tidak secara aktif mengganti jwt_secret dan menonaktifkan mode administrator, penyerang masih dapat memanfaatkan kunci publik untuk membuat JWT tetap, sehingga mengakses /api/exchanges dan mendapatkan semua API/kunci rahasia bursa. Dengan kata lain, perbaikan pada 2025-11-05 hanya mengubah celah dari “tanpa otentikasi” menjadi “otentikasi menggunakan kunci default”, akar masalah masih ada.

Pengaruh

Kami melakukan pencarian di seluruh jaringan berdasarkan karakteristik program, dan menemukan bahwa ada lebih dari 1000 sistem yang telah di-deploy secara privat dan terbuka untuk umum:

Tim keamanan Slow Fog menyadari bahwa serangan dapat terjadi kapan saja, kami segera mempertimbangkan rencana keamanan secara menyeluruh. Akhirnya, kami memutuskan untuk menghubungi tim keamanan Binance dan tim keamanan OKX. Slow Fog, Binance, dan OKX mendirikan ruang operasi keamanan. Kami menyediakan informasi intelijen dan cakupan dampak. Tim keamanan Binance dan tim keamanan OKX masing-masing melakukan verifikasi silang secara independen, berdasarkan api_key yang diperoleh, kami melacak kembali untuk mengidentifikasi pengguna yang terpengaruh dari tingkat sistem, memberi tahu pengguna tentang risiko keamanan yang mereka hadapi, dan segera mengganti api_key, secret_key, dan informasi lainnya untuk mencegah kerugian aset pengguna akibat perdagangan silang, serta melindungi keamanan aset pengguna.

Hingga 17 November, semua pengguna CEX yang terpengaruh telah selesai diberitahu dan telah membatalkan kunci terkait, aset pengguna dalam keadaan aman.

Untuk beberapa pengguna Aster**, Hyperliquid**, Slow Mist dan tim Binance telah mencoba menghubungi secara proaktif, tetapi karena alamatnya adalah alamat dompet terdesentralisasi, kami tidak dapat menghubungi pengguna tertentu secara langsung. Jika Anda sedang menggunakan sistem perdagangan otomatis Aster, Hyperliquid, harap periksa dan tangani risiko terkait dengan segera.

Pada saat yang sama, kami akan berkomunikasi dengan tim NOFX AI mengenai rincian kerentanan ini dan memberikan saran perbaikan untuk membantu mereka menyempurnakan keamanan sistem.

Ringkasan dan Saran

Saat ini, proyek kuantifikasi model AI besar sedang populer, tetapi sebagian besar implementasi sumber terbuka masih berada pada tahap awal. Saat menerapkan sistem sumber terbuka baru ini, sangat penting untuk melakukan audit keamanan kode yang memadai dan memperkuat langkah-langkah pengendalian risiko, untuk menghindari kerugian dana.

Berdasarkan analisis di atas, proyek NOFX meskipun telah dicoba diperbaiki, tetapi masalah inti masih belum teratasi. Setiap deploy proyek NOFX dengan commit 517d0caf dan versi sebelumnya (origin/main saat ini masih terhenti di generasi ini) berada dalam status “Tanpa Authorization”, harus segera ditingkatkan atau manual menutup mode admin.

Bahkan jika diperbarui ke be768d9 atau HEAD saat ini, jika tetap menggunakan jwt_secret default, penyerang masih dapat mendapatkan kunci dengan membuat header Authorization yang tetap. Untuk memperbaiki kerentanan ini sepenuhnya, perlu dilakukan hal-hal berikut:

  1. Acak kunci JWT: Jika menemukan jwt_secret yang sama dengan template saat startup, tolak untuk berjalan; disarankan untuk menulis ke penyimpanan aman atau sistem manajemen kunci.

  2. Nonaktifkan mode administrator default: hanya izinkan mode admin saat dikonfigurasi secara eksplisit, dan memerlukan kata sandi yang kuat + OTP; dalam mode non-admin, /api/admin-login harus langsung ditutup.

  3. Minimalkan /api/exchanges respons: Secara default hanya mengembalikan status aktif, tanda jaringan pengujian, dan bidang non-sensitif lainnya; Ekspor API/kunci pribadi memerlukan antarmuka terpisah dan verifikasi dua langkah, serta server harus melakukan penghapusan atau enkripsi data.

Sebelum tim pengembang menyelesaikan perbaikan ini, setiap penyebaran yang ditujukan ke publik harus dianggap berisiko tinggi. Terutama karena origin/main masih berada dalam tahap “zero authentication” 517d0c, pihak pemelihara harus segera menyinkronkan kode terbaru dan menjalankan kebijakan penguatan kunci dan antarmuka yang disesuaikan dengan ketat.

Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • Sematkan

Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)