Apa Itu SBOM? Fungsi, Format, dan Cara Membuatnya dengan Syft dan Trivy

Apa itu SBOM? Pelajari fungsi Software Bill of Materials, format SPDX dan CycloneDX, serta cara membuat dan scan SBOM dengan Syft, Grype, dan Trivy.

SBOM (Software Bill of Materials) adalah daftar lengkap semua komponen, library, dan dependensi yang menyusun sebuah aplikasi, mirip daftar komposisi pada kemasan makanan. Dengan SBOM, tim IT bisa tahu persis "isi" software yang dipakai, sehingga lebih cepat menemukan komponen yang rentan saat muncul celah keamanan baru. Di artikel ini kita bahas apa itu SBOM, fungsinya, format yang umum dipakai, dan cara membuatnya dengan tools gratis seperti Syft dan Trivy.

apa itu SBOM software bill of materials

Apa Itu SBOM?

Aplikasi modern jarang ditulis dari nol. Sebuah proyek Node.js atau Python sederhana bisa menarik ratusan package open-source, termasuk dependensi dari dependensi (transitive dependency) yang tidak pernah Anda pasang secara langsung.

SBOM mencatat semua komponen itu dalam format terstruktur yang bisa dibaca mesin. Isinya biasanya:

  • Nama komponen, misalnya express atau requests.
  • Versi yang dipakai.
  • Pemasok atau pembuat komponen.
  • Identifier unik, seperti PURL (Package URL) atau CPE.
  • Hubungan dependensi: komponen mana bergantung pada komponen mana.
  • Lisensi dan hash file untuk memastikan integritas.
  • Waktu pembuatan dan tools yang menghasilkan SBOM.

Sebagai acuan, NTIA di Amerika Serikat menetapkan elemen minimum SBOM pada 2021, dan CISA merilis draf pembaruannya pada 2025 dengan tambahan elemen seperti hash komponen dan informasi lisensi.

Fungsi SBOM: Kenapa Perlu Dibuat?

1. Respons cepat saat ada celah keamanan baru

Ingat kasus Log4Shell (CVE-2021-44228) di akhir 2021? Banyak perusahaan butuh berhari-hari hanya untuk menjawab satu pertanyaan: "Aplikasi mana saja yang memakai Log4j?" Dengan SBOM, pertanyaan itu bisa dijawab dalam hitungan menit dengan mencari nama komponen di kumpulan SBOM.

2. Scan kerentanan dependensi secara rutin

SBOM bisa diumpankan ke vulnerability scanner seperti Grype atau Trivy untuk dicocokkan dengan database CVE. Hasilnya: daftar komponen yang perlu di-update, lengkap dengan tingkat keparahannya.

3. Melawan serangan supply chain

Serangan seperti typosquatting dan slopsquatting menyusupkan package palsu ke proyek. SBOM membuat setiap dependensi baru terlihat jelas, sehingga package asing lebih mudah terdeteksi saat review.

4. Kepatuhan lisensi open-source

Beberapa lisensi seperti GPL punya kewajiban tertentu jika software didistribusikan. SBOM membantu tim legal dan engineering memastikan tidak ada lisensi yang bertentangan dengan model bisnis perusahaan.

5. Bukti untuk audit dan regulasi

SBOM makin sering diminta oleh auditor, pelanggan enterprise, dan regulator. Detailnya dibahas di bagian regulasi di bawah.

Format SBOM: SPDX vs CycloneDX

Ada dua format SBOM yang paling banyak dipakai. Keduanya didukung oleh hampir semua tools modern.

AspekSPDXCycloneDX
PengelolaLinux FoundationOWASP
Status standarStandar internasional ISO/IEC 5962Standar ECMA-424
Fokus awalLisensi dan kepatuhan open-sourceKeamanan aplikasi dan analisis risiko
Format fileJSON, YAML, RDF, tag-valueJSON, XML, Protobuf
Cocok untukKebutuhan legal dan pertukaran dengan vendorPipeline DevSecOps dan scan kerentanan

Kalau bingung memilih, mulai saja dengan CycloneDX JSON. Formatnya ringkas dan paling banyak didukung tools keamanan. Tools seperti Syft juga bisa menghasilkan kedua format sekaligus.

Cara Membuat SBOM dengan Syft

Syft dari Anchore adalah tools open-source untuk membuat SBOM dari folder proyek, file, atau container image.

Install Syft

curl -sSfL https://get.anchore.io/syft | sudo sh -s -- -b /usr/local/bin

Syft juga tersedia lewat Homebrew, Docker, Scoop, dan Chocolatey.

Buat SBOM dari folder proyek

syft ./my-project -o cyclonedx-json=sbom.json

Buat SBOM dari container image

syft nginx:latest -o cyclonedx-json=nginx-sbom.json

Hasilkan dua format sekaligus

syft nginx:latest -o spdx-json=sbom.spdx.json -o cyclonedx-json=sbom.cdx.json

Scan Kerentanan dari SBOM dengan Grype

SBOM baru benar-benar berguna kalau dianalisis. Pasangan Syft adalah Grype, vulnerability scanner yang bisa membaca SBOM langsung.

# Install Grype
curl -sSfL https://get.anchore.io/grype | sudo sh -s -- -b /usr/local/bin

# Scan file SBOM
grype sbom:./sbom.json

# Gagalkan proses jika ada celah tingkat high atau lebih tinggi (untuk CI)
grype sbom:./sbom.json --fail-on high

Keuntungannya, scan ulang bisa dilakukan kapan saja tanpa build ulang aplikasi. Saat CVE baru muncul, cukup jalankan Grype terhadap SBOM yang sudah tersimpan.

Alternatif: Membuat SBOM dengan Trivy

Kalau Anda sudah memakai Trivy untuk scan container, tools yang sama juga bisa membuat dan memindai SBOM.

# Buat SBOM CycloneDX dari folder proyek
trivy fs --format cyclonedx --output sbom.json .

# Buat SBOM dari container image
trivy image --format cyclonedx --output sbom.json nginx:latest

# Scan kerentanan dari file SBOM
trivy sbom sbom.json

Membuat SBOM Langsung dari Package Manager

Untuk proyek tertentu, CycloneDX menyediakan generator resmi yang membaca lockfile secara akurat:

# Node.js (npm)
npx @cyclonedx/cyclonedx-npm --output-file sbom.json

# Python
pip install cyclonedx-bom
cyclonedx-py requirements requirements.txt -o sbom.json

Cara ini cocok saat Anda ingin SBOM yang persis mengikuti dependensi di lockfile proyek.

Integrasi SBOM ke Pipeline CI/CD

SBOM sebaiknya dibuat otomatis setiap kali aplikasi di-build, bukan manual sesekali. Contoh sederhana di GitHub Actions:

name: sbom
on: [push]
jobs:
  sbom:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Syft dan Grype
        run: |
          curl -sSfL https://get.anchore.io/syft | sudo sh -s -- -b /usr/local/bin
          curl -sSfL https://get.anchore.io/grype | sudo sh -s -- -b /usr/local/bin
      - name: Buat SBOM
        run: syft . -o cyclonedx-json=sbom.json
      - name: Scan kerentanan
        run: grype sbom:./sbom.json --fail-on high
      - uses: actions/upload-artifact@v4
        with:
          name: sbom
          path: sbom.json

Dengan pipeline ini, setiap build menghasilkan SBOM yang tersimpan sebagai artifact, dan build otomatis gagal jika ada celah keamanan tingkat high atau critical.

SBOM dan Regulasi: Siapa yang Mewajibkan?

  • Amerika Serikat. Executive Order 14028 (2021) mendorong kewajiban SBOM untuk software yang dijual ke pemerintah federal AS.
  • Uni Eropa. Cyber Resilience Act (CRA) berlaku sejak 10 Desember 2024. Kewajiban pelaporan kerentanan dan insiden dimulai 11 September 2026, dan kewajiban utama, termasuk SBOM yang bisa dibaca mesin minimal untuk dependensi tingkat atas, berlaku penuh mulai 11 Desember 2027. SBOM tidak wajib dipublikasikan, tetapi harus diserahkan ke otoritas jika diminta.
  • Indonesia. Belum ada regulasi yang secara eksplisit mewajibkan SBOM. Namun bagi perusahaan yang menjalankan ISO 27001:2022, SBOM menjadi bukti kuat untuk kontrol seperti inventaris aset (5.9), keamanan rantai pasok TIK (5.21), dan manajemen kerentanan teknis (8.8). Hal yang sama berlaku untuk pengelolaan risiko pihak ketiga dan aplikasi yang biasa diperiksa auditor di sektor keuangan.

Bagi software house atau vendor yang menjual aplikasi ke pasar Eropa atau ke perusahaan besar, SBOM perlahan menjadi syarat standar dalam proses pengadaan.

Tips Mengelola SBOM

  • Buat SBOM di setiap build, bukan hanya sekali. Dependensi berubah terus.
  • Simpan SBOM bersama artifact rilis supaya Anda tahu persis isi setiap versi yang pernah di-deploy.
  • Scan ulang secara berkala. CVE baru muncul setiap hari, jadi SBOM lama tetap perlu dicek.
  • Minta SBOM dari vendor untuk aplikasi pihak ketiga yang dipakai di lingkungan Anda.
  • Gunakan platform pengelola SBOM seperti OWASP Dependency-Track jika jumlah aplikasinya sudah banyak.

FAQ Seputar SBOM

Apa kepanjangan SBOM?

SBOM adalah singkatan dari Software Bill of Materials, yaitu daftar lengkap komponen dan dependensi yang menyusun sebuah software.

Apa bedanya SBOM dengan lockfile seperti package-lock.json?

Lockfile dipakai package manager untuk memasang versi yang sama setiap kali install, dan formatnya berbeda untuk tiap bahasa pemrograman. SBOM memakai format standar (SPDX atau CycloneDX) yang bisa mencakup banyak bahasa sekaligus, termasuk komponen sistem operasi di dalam container, serta bisa dibaca oleh berbagai tools keamanan.

Tools apa yang gratis untuk membuat SBOM?

Syft, Trivy, dan generator resmi CycloneDX (seperti cyclonedx-npm dan cyclonedx-py) semuanya open-source dan gratis. Untuk scan kerentanan dari SBOM bisa memakai Grype atau Trivy.

Apakah SBOM wajib di Indonesia?

Belum ada regulasi di Indonesia yang secara eksplisit mewajibkan SBOM. Namun SBOM sangat membantu memenuhi kontrol ISO 27001 dan menjadi syarat jika menjual software ke pasar Uni Eropa melalui Cyber Resilience Act.

Format SBOM mana yang sebaiknya dipilih, SPDX atau CycloneDX?

Untuk kebutuhan keamanan dan DevSecOps, CycloneDX biasanya lebih praktis. Untuk kebutuhan lisensi dan pertukaran dokumen dengan vendor, SPDX lebih umum. Banyak tools bisa menghasilkan keduanya sekaligus.

Kesimpulan

SBOM adalah fondasi keamanan supply chain software. Dengan mengetahui persis komponen apa saja yang ada di aplikasi, tim bisa merespons celah keamanan dalam hitungan menit, mendeteksi package mencurigakan, menjaga kepatuhan lisensi, dan menyiapkan bukti untuk audit.

Memulainya pun mudah: install Syft, jalankan satu perintah untuk membuat SBOM, lalu scan dengan Grype. Setelah itu, otomatiskan di pipeline CI/CD supaya setiap rilis selalu punya SBOM yang ter-update.

Sumber

NextGen Digital... Welcome to WhatsApp chat
Howdy! How can we help you today?
Type here...