An SBOM Membuktikan Apa yang Anda Instal. Ia Tidak Bisa Membuktikan Apakah Anda Seharusnya Menginstalnya.
SBOM adalah sebuah tanda terima. Ia memberi tahu Anda apa yang telah Anda instal. Ia tidak memberi tahu Anda apakah keputusan Anda untuk menginstalnya sudah benar.
Sebagian besar tim menggunakan SBOM dan pemindaian CVE dalam pipeline CI/CD mereka. Alat-alat ini sangat bagus untuk menemukan kerentanan yang sudah diketahui pada paket yang ada. Namun, alat-alat tersebut memiliki titik buta yang besar saat menggunakan agen pengodean AI.
Seorang agen AI mengusulkan nama paket. Ia melakukannya dengan tingkat kepercayaan yang sama, baik nama tersebut nyata, sebuah halusinasi, atau typosquat.
Jika seorang penyerang mendaftarkan nama paket berbahaya kemarin, paket tersebut belum memiliki CVE. Pemindaian pasca-instalasi Anda akan melihatnya dan menandainya sebagai bersih. Pemindaian tersebut jujur, tetapi ia menjawab pertanyaan yang salah. Ia menjawab "apakah ini diketahui buruk?" alih-alih "apakah nama ini seharusnya ada dalam stack kita?"
Pada saat SBOM mencatat paket berbahaya, kerusakan sudah terjadi. Kode berbahaya sering kali berjalan selama fase instalasi melalui skrip postinstall. Kode tersebut dapat mencuri variabel lingkungan (environment variables) dan rahasia CI Anda bahkan sebelum pemindai Anda melihat struktur filenya.
Anda membutuhkan keputusan sebelum efek samping terjadi.
Saya membangun alat sederhana untuk mengatasi hal ini. Ini adalah gerbang proveniensi pra-instalasi (pre-install provenance gate). Cara kerjanya berbeda dari pemindai:
• Ia memeriksa nama SEBELUM npm install dijalankan.
• Ia menggunakan pendekatan default-deny terhadap baseline yang telah terverifikasi.
• Ia menandai typosquat dengan mengukur edit distance dari paket-paket populer.
• Ia menangkap halusinasi yang tidak cocok dengan nama-nama baik yang diketahui.
• Ia memverifikasi .npmrc Anda untuk memastikan Anda tidak mengakses registri palsu (rogue registry).
Alat ini bersifat luring (offline), tanpa kunci (keyless), dan hanya menggunakan pustaka standar Python. Ia tidak terhubung ke jaringan. Ia tidak menyelesaikan (resolve) paket. Ia hanya melihat nama-nama yang diusulkan dan bertanya: "Apakah kita menjamin nama ini?"
Jika nama tersebut tidak ada dalam snapshot yang telah Anda verifikasi dan tidak ada dalam baseline populer, gerbang tersebut akan mengembalikan DENY.
Berhentilah hanya mengandalkan catatan tentang apa yang telah terjadi. Mulailah memutuskan apa yang diizinkan untuk terjadi.
Source: https://dev.to/alex_spinov/an-sbom-proves-what-you-installed-it-cant-prove-you-should-have-117c
Optional learning community: https://t.me/GyaanSetuAi
