Saat CVE baru meledak, pertanyaan pertama selalu sama: apakah kita memakai komponen itu?; di episode ini kalian memahami mengapa SBOM wajib, membandingkan format SPDX vs CycloneDX, generate dan attach SBOM di pipeline dengan syft/trivy, serta mengelola dependency risk termasuk pelajaran dari backdoor xz-utils

Setelah episode 11 menutup Fase 2, kita masuk Fase 3: software supply chain. Mulai episode ini hingga episode 13, kita menjawab satu ancaman besar: kode yang kalian deploy bukan hanya kode kalian — ia adalah gabungan ribuan dependency pihak ketiga yang tidak kalian audit satu per satu.
Kasus xz-utils (2024) adalah peringatan kerasnya: backdoor disusupi ke library kompresi yang dipakai SSH di banyak distro — berkat proses maintainance yang panjang dan sabar oleh penyerang. Ketika insiden seperti ini (atau sekadar CVE baru) meledak, organisasi siap menjawab dalam hitungan menit; organisasi tanpa persiapan butuh berhari-hari hanya untuk mencari tahu "apakah kita kena?".
Alat jawabannya adalah SBOM — Software Bill of Materials.
SBOM adalah daftar isi resmi sebuah artefak software: semua package, versi, lisensi, dan hubungan dependensinya. Analoginya seperti label nutrisi di kemasan makanan — saat ada bahan tercemar (CVE baru), kalian tinggal cek label, bukan membongkar dapur.
Nilai praktisnya:
| Situasi | Tanpa SBOM | Dengan SBOM |
|---|---|---|
| CVE baru keluar untuk lib X | Gali repo satu-satu | Query semua SBOM dalam detik |
| Audit/regulator minta inventaris | Manual, tidak akurat | Ekspor otomatis per release |
| Due diligence vendor | Percaya klaim | Minta SBOM resmi produknya |
| Analisis dampak upgrade | Trial-error | Lihat grafik dependensi |
Regulasi juga mengarah ke sini: EO 14028 di AS dan EU CRA mendorong/mewajibkan SBOM untuk vendor tertentu — tren yang pada 2026 sudah menjadi ekspektasi standar enterprise.
Dua format standar industri:
| Aspek | SPDX | CycloneDX |
|---|---|---|
| Pengelola | Linux Foundation | OWASP |
| Fokus | Lisensi & compliance | Security & risk |
| Kekuatan | Matang untuk legal/compliance | Rich untuk security metadata (VEX, scoring) |
| Dipakai luas oleh | Kernel Linux, vendor enterprise | Tool security (Trivy, syft default opsional) |
Praktik pragmatis: pilih satu format sebagai standar organisasi (CycloneDX populer untuk tim yang security-first), tapi pastikan toolchain bisa ekspor keduanya — biaya konversinya nyaris nol.
Dengan tool yang sudah kalian punya:
trivy image --format cyclonedx --output sbom-image.cdx.json myapp:1.0.0
trivy fs --format cyclonedx --output sbom-fs.cdx.json .Integrasikan ke build workflow — generate setiap rilis dan simpan sebagai artifact:
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write # untuk attestasi, dibahas episode 13
steps:
- uses: actions/checkout@v4
- name: Build image
run: docker build -t myapp:${{ github.sha }} .
- name: Generate SBOM
run: |
trivy image --format cyclonedx \
--output sbom-${{ github.sha }}.cdx.json \
myapp:${{ github.sha }}
- uses: actions/upload-artifact@v4
with:
name: sbom
path: sbom-*.cdx.jsonPoin penting: SBOM dibuat dari hasil build final, dengan tag SHA yang unik — bukan dari working directory yang bisa berbeda isinya.
SBOM tanpa validasi bisa kosong atau cacat diam-diam. Validasi minimum di CI:
cyclonedx validate --input-file sbom.cdx.json
# pastikan jumlah component masuk akal
jq '.components | length' sbom.cdx.json # harusnya ratusan+, bukan 0Lalu gunakan SBOM untuk pertanyaan dunia nyata — "apakah kita memakai lib X versi rentan?":
grype sbom:sbom.cdx.json # scan langsung dari SBOM
jq -r '.components[].name' sbom.cdx.json \
| grep -x "xz" # cari paket spesifikgrype sbom: adalah pola kuat: analisis kerentanan bisa jalan dari SBOM historis tanpa image asli masih ada di registry.
SBOM menyelesaikan visibility, tetapi risiko supply chain lebih dalam. Pelajaran dari xz-utils:
ifunc, tersembunyi dari source biasa).Mitigasi praktis level organisasi:
depcheck, cargo udeps).Important
Aturan emas supply chain: kalian hanya bisa mengamankan yang bisa kalian daftar. Tanpa SBOM per-artefak, setiap insiden dependency dimulai dari kepanikan manual. Buat visibility dulu, optimisasi kemudian.
Inti yang harus dibawa pulang:
Di episode 13 selanjutnya kita lanjut supply chain dengan SLSA & Artifact Signing — framework SLSA untuk menilai integritas build pipeline kalian, signing cosign keyless, provenance/attestation GitHub, dan verifikasi signature sampai ke admission cluster. Sampai jumpa!