Masalah
- Tadi malam, saat menelusuri isi basis data checksum Go, ditemukan hasil yang menarik.
- Setelah menjalankan perintah
sqlite> select path, count(path) from modules group by path order by count(path) desc;, hasilnya adalah:
github.com/homebrew/homebrew-core|39438
github.com/Homebrew/homebrew-core|30896
github.com/concourse/concourse|25372
github.com/openshift/release|24065
github.com/cilium/cilium|22138
- Homebrew dikenal menggunakan Ruby, sehingga kaitannya dengan Go terasa janggal.
- Statistik bahasa GitHub juga mengonfirmasi hal ini.
- Repositori dikloning untuk mencari file terkait Go (
go.mod atau file sumber Go), tetapi tidak ditemukan apa pun.
Riset
- Hari baru dimulai, dan rasa ingin tahu menuntut jawaban.
- Jika repositori Git tidak terkait dengan kode Go, muncul pertanyaan bagaimana repositori itu bisa muncul di basis data checksum Go.
- Diketahui bahwa
proxy.golang.org adalah proxy modul bawaan, dan sum.golang.org adalah basis data checksum.
- Setelah membaca dokumentasi Go, diketahui bahwa jika versi modul belum tercatat di log, basis data checksum akan mencoba mengambil modul dari server asal.
- Untuk memastikan apakah repositori modul Go baru ditambahkan ke basis data checksum dan proxy, endpoint
lookup dicoba.
- Setelah membuat modul Go baru dan mengunggahnya ke akun GitHub, perintah
lookup dicoba dalam dua bentuk, tetapi keduanya menghasilkan error.
- Versi pseudo yang benar kemudian dibuat, lalu basis data checksum dikueri lagi untuk memastikan apakah modul telah diunduh.
- Dengan mengueri proxy dan mengunduh
zip modul, terbukti bahwa data arbitrer dapat disimpan di infrastruktur Go.
Potensi penyalahgunaan
- Dapat digunakan untuk melewati pembatasan unduhan di mesin developer dan server CI/CD.
- Malware dapat menyimpan payload dan mengambilnya dari proxy saat dibutuhkan.
- Serangan penolakan layanan (DoS) terhadap
proxy.golang.org mungkin dimungkinkan.
- Sistem command and control (C2) dapat diimplementasikan dengan mudah.
Kesimpulan
- Kini cara kerja proses basis data checksum lebih dipahami.
- Untuk saat ini, ini bukan masalah serius pada infrastruktur Go, tetapi ada potensi penyalahgunaan.
- Masih ada pertanyaan lanjutan tentang mengapa proyek non-Go ada di basis data tersebut.
- Riset ini memunculkan banyak ide, dan akan terus dieksplorasi.
Opini GN⁺
- Kerentanan keamanan: Artikel ini menyoroti kerentanan keamanan pada basis data checksum Go yang memungkinkan penyimpanan data arbitrer. Hal ini dapat membuka jalur distribusi malware dengan lebih mudah.
- Perlu perbaikan: Untuk memperkuat keamanan dan integritas infrastruktur Go, kontrol akses pada basis data checksum dan server proxy perlu ditingkatkan.
- Integrasi dengan bahasa lain: Alasan mengapa proyek non-Go masuk ke basis data checksum Go perlu diperjelas, dan dibutuhkan prosedur verifikasi tambahan untuk mencegahnya.
- Edukasi developer: Developer perlu diedukasi agar memahami kerentanan keamanan semacam ini dan mengetahui praktik terbaik untuk mencegahnya.
- Solusi alternatif: Basis data checksum dan server proxy dari bahasa lain dengan fungsi serupa dapat dibandingkan untuk dijadikan referensi dalam meningkatkan infrastruktur Go.
1 komentar
Komentar Hacker News
Ringkasan kumpulan komentar Hacker News
Potensi penyalahgunaan layanan online
Masalah hosting file Google
Perbandingan dengan GitHub
Proyek non-Python di PyPI
Proxy Golang dan log checksum
Penelusuran domain
Masalah yang sudah diketahui
Sistem modul CUE
Masalah cache web
Masalah proxy cache