Peringatan Keamanan

Peringatan Keamanan: Kunci JWT Bawaan pada go-base Memungkinkan Pemalsuan Token

Adam  ·  27 Agt 2026  ·  KUTIM-SA-2026-041  ·  TLP:CLEAR

Peringatan Keamanan: Kunci JWT Bawaan pada go-base Memungkinkan Pemalsuan Token
Sumber: Artikel ini diterbitkan ulang oleh KUTIM-CSIRT berdasarkan Security Advisory (Imbauan Keamanan) yang diedarkan Direktorat Operasi Keamanan Siber BSSN kepada Ketua TTIS Organisasi dan TTIS Sektor pada 26 Agustus 2026. Nomor CVE, skor, dan versi terdampak bersumber dari edaran tersebut beserta lampiran resminya, dan telah kami verifikasi ulang ke NVD serta advisory proyek go-base. Dokumen asli: Security Advisory CVE-2026-48031 Kerentanan pada Perangkat go-base – BSSN/Id-SIRTII.

KUTIM-CSIRT mengimbau seluruh Perangkat Daerah di lingkungan Pemerintah Kabupaten Kutai Timur yang mengembangkan aplikasi API berbasis bahasa Go dengan templat go-base untuk memeriksa kode dan konfigurasinya serta menindaklanjuti CVE-2026-48031, kerentanan authentication bypass berskor CVSS 9,1 (Critical).

Ikhtisar

go-base (github.com/dhax/go-base) adalah templat awal (boilerplate) untuk membuat RESTful API dengan Go, autentikasi JWT, dan basis data PostgreSQL. CVE-2026-48031 adalah kerentanan Use of Hard-coded Credentials (CWE-798) dengan vektor CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N.

Kunci penandatangan JWT (JWT signing secret) pada templat ini tertanam dengan nilai bawaan yang diketahui publik, tertulis pada berkas contoh dev.env dan dipakai kembali sebagai nilai bawaan di kode aplikasi. Karena kunci ini dapat dibaca siapa pun dari repositori publik, penyerang dapat membuat token JWT palsu (algoritma HS256) yang diterima aplikasi sebagai sah.

Penegasan: edaran BSSN menyebut kunci tersebut bernilai “acak”. Berdasarkan advisory proyek dan NVD, nilai bawaannya justru berupa kata sederhana “random”, bukan nilai yang dibangkitkan secara acak, sehingga mudah ditebak oleh siapa pun. Selain itu, nomor CWE pada lampiran edaran tertulis 789; yang benar untuk hard-coded credentials adalah CWE-798, sebagaimana tercatat di NVD. Perlu diperhatikan pula bahwa kerentanan ini mengenai aplikasi yang dibangun dari templat go-base dan membiarkan nilai bawaan, bukan perangkat lunak yang dipasang sebagai produk jadi.

Dampak

  • Penyerang tanpa akun dapat memalsukan identitas pengguna mana pun, termasuk peran administrator.
  • Token palsu membuka akses ke seluruh endpoint API yang dilindungi: membaca data pengguna dan sumber daya terlindungi, serta mengubah data yang dapat dijangkau API (C:H/I:H).
  • Penyerang juga dapat memperoleh token baru melalui mekanisme refresh token, sehingga akses bertahan sampai kunci diganti dan token dicabut.

Sistem yang Terdampak

ProdukVersi TerdampakVersi Perbaikan
go-base (github.com/dhax/go-base, paket Go)Semua commit/versi sebelum 0.0.0-20260517152733-cc82b9740fa6 (sebelum 18 Mei 2026)Commit cc82b9740fa6 atau yang lebih baru

go-base adalah templat; aplikasi turunan yang disalin dari versi lama membawa nilai bawaan tersebut dan perlu diperiksa sendiri meskipun templat induknya sudah diperbarui.

Detail Teknis

Aplikasi memverifikasi token JWT dengan kunci rahasia simetris (HS256). Pada versi terdampak, kunci itu bernilai bawaan yang sama untuk setiap instalasi dan tertera di repositori publik. Siapa pun yang mengetahuinya dapat menerbitkan token bertanda tangan sah dengan klaim apa pun. Menurut advisory proyek, pemeriksaan bawaan sebelumnya hanya menolak satu nilai tertentu, sehingga kunci lemah lain seperti secret atau string kosong tetap lolos. Rincian teknis yang lebih dalam tidak kami muat karena dapat langsung dimanfaatkan.

Rekomendasi

  1. Periksa seluruh aplikasi yang dibangun dari go-base, termasuk berkas konfigurasi (.env, dev.env) dan kode yang memuat nilai bawaan kunci JWT.
  2. Perbarui go-base ke commit cc82b9740fa6 atau yang lebih baru, atau terapkan perubahan setara pada aplikasi turunan.
  3. Ganti kunci penandatangan JWT dengan nilai acak sungguhan sepanjang minimal 32 karakter, disimpan di pengelola rahasia atau variabel lingkungan, bukan di repositori.
  4. Hapus nilai bawaan yang lemah seperti random, secret, changeme, change-me, default, atau string kosong.
  5. Setelah kunci diganti, cabut semua token dan sesi yang beredar (termasuk refresh token) agar token palsu tidak tetap berlaku.
  6. Tinjau log akses API untuk aktivitas administratif yang tidak dikenal atau akses dari akun yang tidak pernah masuk secara sah.
  7. Laporkan indikasi penyalahgunaan ke KUTIM-CSIRT melalui kanal pelaporan resmi.

Catatan Status Eksploitasi

CVE-2026-48031 belum tercatat di katalog KEV CISA pada saat artikel ini diterbitkan. Meski demikian, karena kunci bawaan terbuka bagi siapa pun yang membaca repositori publik, pemalsuan token tidak memerlukan keahlian khusus. Kerentanan jenis ini sebaiknya ditangani segera.

Referensi