Pengantar
Software modern tidak lagi dibangun sepenuhnya dari kode yang ditulis oleh satu tim. Sebuah aplikasi dapat menggunakan ratusan bahkan ribuan komponen dari berbagai sumber, seperti open-source library, framework, package, container image, dan dependency pihak ketiga.
Kondisi tersebut membuat keamanan software supply chain menjadi semakin penting. Satu komponen yang memiliki kerentanan dapat memberikan dampak terhadap aplikasi yang menggunakannya.
Di sinilah Software Bill of Materials (SBOM) berperan.
SBOM adalah daftar terstruktur yang berisi informasi mengenai komponen software serta hubungan antar-komponen yang digunakan untuk membangun sebuah aplikasi. NIST menjelaskan SBOM sebagai catatan formal yang mendokumentasikan detail dan hubungan supply chain dari berbagai komponen yang digunakan dalam pembuatan software (dikutip dari: NIST – Software Bill of Materials (SBOM)).
Secara sederhana, SBOM dapat dianalogikan seperti daftar bahan pada kemasan makanan. Pengguna dapat mengetahui apa saja yang digunakan untuk membuat sebuah produk software.
Apa Itu Software Bill of Materials (SBOM)?
Pengertian SBOM
Software Bill of Materials atau SBOM merupakan inventaris komponen yang terdapat dalam sebuah software.
Komponen tersebut dapat mencakup:
- Open-source library.
- Third-party dependency.
- Framework.
- Package.
- Module.
- Operating system component.
- Container component.
- Proprietary component.
Contohnya, sebuah aplikasi web mungkin menggunakan:
Aplikasi Web
│
├── Node.js
├── Express
├── JSON Library
├── Database Driver
├── Authentication Library
└── Third-Party Package
Tanpa SBOM, developer atau tim keamanan mungkin kesulitan mengetahui seluruh komponen tersebut.
Dengan SBOM, hubungan antar-komponen dapat didokumentasikan secara lebih terstruktur.
baca juga : Consistent Hashing: Cara Membagi Data Secara Efisien di Sistem Terdistribusi
Mengapa SBOM Penting?
Kompleksitas Software Supply Chain
Aplikasi modern sering menggunakan dependency dari banyak sumber.
Misalnya sebuah aplikasi hanya memiliki 100 package secara langsung. Namun, setiap package tersebut dapat memiliki dependency lain.
Hasilnya bisa menjadi:
Application
│
├── Package A
│ ├── Library X
│ └── Library Y
│
├── Package B
│ ├── Library Z
│ └── Library X
│
└── Package C
└── Library Q
Jumlah dependency dapat bertambah dengan cepat.
Masalahnya, tim keamanan tidak hanya perlu mengetahui kode yang mereka tulis sendiri. Mereka juga perlu memahami komponen yang berasal dari pihak ketiga.
Risiko Kerentanan Dependency
Bayangkan sebuah aplikasi menggunakan library versi tertentu.
Beberapa bulan kemudian ditemukan vulnerability pada library tersebut.
Jika organisasi tidak mengetahui bahwa library tersebut digunakan, proses mitigasi dapat menjadi lambat.
Dengan SBOM, tim dapat melakukan pencarian:
CVE ditemukan
↓
Cari komponen terdampak
↓
Cari software yang menggunakannya
↓
Identifikasi versi
↓
Lakukan patch/update
Inilah salah satu manfaat utama SBOM dalam vulnerability management.
SBOM dan Transparansi Software
SBOM memberikan visibilitas terhadap isi sebuah software.
CISA juga menyediakan berbagai panduan SBOM yang membahas konsep, manfaat, implementasi, pembuatan, serta penggunaan SBOM dalam software supply chain (dikutip dari: CISA – SBOM Resources Library).
Dengan transparansi tersebut, organisasi dapat lebih mudah menjawab pertanyaan seperti:
- Komponen apa yang digunakan?
- Versi berapa yang digunakan?
- Siapa pembuat komponennya?
- Dari mana komponen berasal?
- Apakah komponen memiliki vulnerability?
- Software mana saja yang menggunakan komponen tersebut?
Komponen yang Biasanya Dicatat dalam SBOM
Nama Komponen
SBOM perlu mengidentifikasi nama komponen yang digunakan.
Contohnya:
openssl
curl
nginx
lodash
express
Nama yang jelas membantu proses inventarisasi.
Versi Komponen
Selain nama, versi juga sangat penting.
Contohnya:
Component: ExampleLibrary
Version: 2.4.1
Hal ini karena vulnerability sering kali hanya berdampak pada versi tertentu.
Identitas Supplier atau Author
Informasi mengenai pihak yang membuat atau menyediakan komponen juga dapat dicatat.
Hal ini membantu organisasi memahami asal-usul dependency.
Dependency Relationship
SBOM juga dapat menggambarkan hubungan antar-komponen.
Misalnya:
Application
│
└── Library A
│
└── Library B
Informasi ini membantu security team memahami bagaimana sebuah komponen masuk ke dalam software.
Format SBOM
SBOM bukan hanya berupa file teks biasa. Terdapat beberapa format yang digunakan untuk membuat data SBOM dapat diproses oleh tools.
SPDX
SPDX atau Software Package Data Exchange merupakan salah satu format standar yang digunakan untuk mendokumentasikan komponen dan metadata software.
Format ini banyak digunakan untuk kebutuhan software supply chain transparency.
baca juga : Cross-Site Request Forgery (CSRF): Cara Kerja Serangan dan Strategi Efektif untuk Melindungi Web
CycloneDX
CycloneDX merupakan format SBOM yang dirancang untuk berbagai kebutuhan seperti application security, supply chain security, dan dependency management.
Format ini juga mendukung penggunaan dalam ekosistem modern seperti aplikasi, container, dan cloud.
SWID
Software Identification Tags atau SWID merupakan standar untuk mendeskripsikan identitas software.
NIST mencantumkan SPDX, CycloneDX, dan SWID sebagai format standar yang dapat digunakan dalam konteks SBOM.
Bagaimana SBOM Dibuat?
SBOM dari Source Code
SBOM dapat dibuat dengan menganalisis dependency yang terdapat dalam source code.
Contohnya pada aplikasi Node.js:
package.json
↓
Dependency Analysis
↓
Component Identification
↓
SBOM Generation
Tool kemudian membaca dependency dan menghasilkan daftar komponen.
SBOM dari Build Process
SBOM juga dapat dibuat pada saat proses build.
Contohnya:
Source Code
↓
Build
↓
Dependency Resolution
↓
SBOM Generation
↓
Software Artifact
Pendekatan ini dapat membantu menghasilkan SBOM yang lebih dekat dengan software yang benar-benar dibangun.
SBOM dari Container
Pada aplikasi berbasis container, SBOM dapat digunakan untuk mengetahui komponen yang terdapat di dalam image.
Contohnya:
Container Image
│
├── Base OS
├── Runtime
├── Libraries
├── Packages
└── Application
Hal tersebut penting karena vulnerability tidak selalu berasal dari source code aplikasi.
Kerentanan dapat berasal dari package sistem operasi atau dependency lain di dalam container.
SBOM dalam Software Development Lifecycle
Tahap Development
Pada tahap development, SBOM dapat membantu developer mengetahui dependency yang digunakan.
Developer dapat memeriksa apakah package yang digunakan:
- Sudah terlalu lama.
- Memiliki vulnerability.
- Tidak lagi dipelihara.
- Memiliki dependency berisiko.
Tahap Build
Pada proses build, SBOM dapat dibuat secara otomatis.
Contohnya:
Git Commit
↓
CI Pipeline
↓
Build
↓
Security Scan
↓
SBOM Generation
↓
Artifact
Dengan otomatisasi, pembuatan SBOM tidak harus dilakukan secara manual.
Tahap Deployment
SBOM dapat digunakan untuk memeriksa software sebelum masuk production.
Misalnya organisasi memiliki kebijakan:
Critical Vulnerability
↓
SBOM Scan
↓
Ditemukan
↓
Build Ditolak
Pendekatan tersebut dapat menjadi bagian dari security gate pada CI/CD.
Tahap Production
SBOM tetap berguna setelah software dirilis.
Jika vulnerability baru ditemukan, security team dapat melakukan pencarian terhadap seluruh SBOM yang tersedia.
Contohnya:
New CVE
↓
Affected Package
↓
Search SBOM Database
↓
Affected Application
↓
Patch / Mitigation
Dengan demikian, organisasi tidak harus memeriksa setiap aplikasi dari awal.

SBOM dan Vulnerability Management
Mempercepat Identifikasi Dampak
Salah satu masalah terbesar ketika vulnerability baru ditemukan adalah mengetahui apakah organisasi terdampak.
Misalnya terdapat vulnerability pada:
Library-X 1.2.3
Tim keamanan dapat mencari:
Library-X 1.2.3
di seluruh inventory SBOM.
Jika ditemukan pada beberapa aplikasi, tim dapat segera memprioritaskan mitigasi.
SBOM Bukan Vulnerability Scanner
Hal penting yang perlu dipahami adalah SBOM bukan pengganti vulnerability scanner.
SBOM berfungsi untuk memberikan informasi mengenai komponen software.
Sedangkan vulnerability scanner digunakan untuk menganalisis apakah komponen tersebut memiliki vulnerability tertentu.
Hubungannya dapat digambarkan seperti:
SBOM
↓
Mengetahui komponen
↓
Vulnerability Database
↓
Mencocokkan vulnerability
↓
Risk Assessment
Dengan kata lain, SBOM menyediakan inventory, sementara sistem vulnerability management dapat menggunakan inventory tersebut untuk melakukan analisis risiko.
SBOM dan Software Supply Chain Attack
Serangan terhadap software supply chain dapat terjadi ketika attacker menyusupi komponen, dependency, build process, atau distribusi software.
Contohnya:
Developer
↓
Dependency
↓
Build System
↓
Software
↓
Customer
Jika salah satu bagian dikompromikan, dampaknya dapat menyebar ke banyak pengguna.
SBOM tidak secara otomatis mencegah serangan supply chain. Namun, SBOM dapat meningkatkan visibility terhadap komponen yang digunakan.
Dengan inventory yang jelas, organisasi memiliki informasi yang lebih baik untuk melakukan assessment ketika sebuah dependency atau supplier diketahui bermasalah.
SBOM untuk Third-Party Software
Mengurangi Blind Spot
Organisasi sering menggunakan software dari vendor eksternal.
Masalahnya, organisasi mungkin tidak mengetahui seluruh dependency yang digunakan vendor.
SBOM dapat membantu mengurangi blind spot tersebut.
Dalam proses procurement, organisasi dapat meminta vendor menyediakan SBOM untuk produk yang digunakan.
SBOM dan Open Source Software
Open-source software memberikan banyak manfaat bagi developer.
Namun, penggunaan open-source dalam jumlah besar juga dapat meningkatkan kompleksitas dependency.
SBOM membantu organisasi membuat inventory terhadap komponen tersebut.
Misalnya:
Open Source
↓
Library A
Library B
Library C
↓
SBOM
↓
Security Monitoring
Dengan begitu, organisasi dapat memantau dependency open-source secara lebih sistematis.
Tantangan Implementasi SBOM
Akurasi Data
SBOM yang tidak akurat dapat memberikan rasa aman palsu.
Jika dependency yang sebenarnya digunakan tidak tercatat, security team dapat mengambil keputusan berdasarkan informasi yang salah.
Karena itu, SBOM harus dibuat sedekat mungkin dengan proses build dan terus diperbarui.
Dependency Transitive
Masalah lain adalah transitive dependency.
Misalnya:
Application
↓
Library A
↓
Library B
↓
Library C
Developer mungkin hanya memasang Library A.
Namun, Library A membutuhkan Library B dan C.
Karena itu, SBOM sebaiknya mampu menggambarkan dependency secara lengkap.
Integrasi dengan Tool
SBOM akan lebih berguna jika dapat diintegrasikan dengan:
- CI/CD.
- Vulnerability scanner.
- Dependency management.
- Asset inventory.
- SIEM.
- Security dashboard.
- Risk management platform.
Tanpa integrasi, SBOM berisiko hanya menjadi file dokumentasi yang jarang digunakan.
Best Practice Implementasi SBOM
Otomatiskan Pembuatan SBOM
Hindari proses manual jika memungkinkan.
SBOM sebaiknya dibuat secara otomatis pada pipeline build.
Gunakan Format Standar
Pilih format yang sesuai dengan kebutuhan organisasi, seperti:
SPDX
CycloneDX
SWID
Format standar membantu interoperabilitas dengan berbagai tool.
Simpan SBOM Secara Terpusat
Organisasi dapat menyimpan SBOM dalam inventory terpusat.
Contohnya:
SBOM Repository
│
├── Application A
├── Application B
├── Application C
└── Application D
Dengan begitu, pencarian terhadap dependency terdampak dapat dilakukan dengan lebih cepat.
Hubungkan SBOM dengan Vulnerability Management
SBOM sebaiknya tidak berdiri sendiri.
Hubungkan data SBOM dengan vulnerability database dan proses remediation.
Tujuannya adalah:
Discover
↓
Identify
↓
Assess
↓
Prioritize
↓
Remediate
Perbarui Setiap Release
Software berubah dari waktu ke waktu.
Dependency dapat diperbarui, ditambahkan, atau dihapus.
Karena itu, SBOM harus mengikuti perubahan software.
CISA dalam panduan minimum elements terbarunya menekankan bahwa setiap versi atau update software sebaiknya memiliki SBOM yang sesuai dengan perubahan komponennya.
Contoh Alur SBOM dalam CI/CD
Implementasi sederhana dapat terlihat seperti berikut:
Developer
↓
Git Repository
↓
CI/CD Pipeline
↓
Dependency Analysis
↓
SBOM Generation
↓
Vulnerability Scan
↓
Security Gate
↓
Build Artifact
↓
Production
Jika ditemukan vulnerability dengan tingkat risiko tinggi, pipeline dapat dikonfigurasi untuk menghentikan proses deployment sampai masalah ditangani.
Manfaat SBOM bagi Tim Keamanan
SBOM dapat memberikan beberapa manfaat penting:
Visibility
Tim keamanan mengetahui komponen yang digunakan.
Faster Response
Tim dapat lebih cepat mencari software yang terdampak vulnerability.
Risk Management
Dependency dapat dimasukkan ke dalam proses penilaian risiko.
Supply Chain Transparency
Organisasi memiliki gambaran lebih jelas mengenai asal dan hubungan komponen software.
Compliance
SBOM dapat membantu organisasi memenuhi kebutuhan transparansi software supply chain tertentu.
baca juga : Kernel Samepage Merging (KSM): Cara Linux Menghemat Memori dengan Berbagi Halaman yang Identik
Kesimpulan
Software Bill of Materials (SBOM) merupakan bagian penting dari strategi keamanan software supply chain modern. SBOM memberikan inventaris terstruktur mengenai komponen, dependency, versi, serta hubungan antar-komponen yang digunakan dalam sebuah software.
Dengan SBOM, organisasi dapat mengetahui apa yang terdapat di dalam software, bukan hanya siapa yang membuatnya.
Informasi tersebut menjadi sangat berharga ketika vulnerability baru ditemukan. Security team dapat mencari komponen yang terdampak, mengetahui aplikasi yang menggunakannya, kemudian menentukan langkah mitigasi.
Namun, SBOM bukan solusi tunggal untuk keamanan supply chain. Implementasinya perlu dikombinasikan dengan vulnerability management, secure software development, dependency management, CI/CD security, monitoring, dan risk assessment.
Semakin kompleks software yang dibangun, semakin penting pula organisasi memiliki visibility terhadap komponen di dalamnya. Karena itu, SBOM dapat menjadi salah satu fondasi penting untuk membangun software supply chain yang lebih transparan, terukur, dan aman.








