SBOM Nedir? Yazılım Bileşen Envanteri İçin Teknik Rehber
İçindekiler
- Yazı içindeki başlıklardan otomatik oluşturulabilir...
SBOM Neden Ortaya Çıktı?
Modern yazılımların büyük bir kısmı (%70-90 arası) sıfırdan yazılmaz; mevcut açık kaynaklı kütüphaneler, framework'ler ve üçüncü parti bileşenlerin bir araya getirilmesiyle inşa edilir. (Örneğin meşhur Log4j krizini hatırlayın).Eğer şirketler ürettikleri yazılımın içinde hangi kütüphanenin, hangi sürümle çalıştığını bilmiyorsa, o kütüphanede çıkan bir siber güvenlik zafiyetine müdahale edemezler. SBOM, yazılım dünyasının "İçindekiler" etiketidir. Nasıl ki gıda sektöründe alerjen maddeler paketin arkasında yazıyorsa, yazılım endüstrisinde de kodun içindeki "malzemeler" SBOM ile müşteriye sunulur.
SBOM'un Temel Yapı Taşları: Doğrudan ve Geçişli Bağımlılıklar
SBOM, yazılımın bağımlılık (dependency) ağacını çıkarır. Bu ağaç iki ana daldan oluşur:1. **Doğrudan Bağımlılıklar (Direct Dependencies):** Geliştiricinin `package.json`, `requirements.txt` veya `pom.xml` gibi dosyalarda projesine bizzat çağırdığı paketlerdir.
2. **Geçişli Bağımlılıklar (Transitive Dependencies):** Sizin çağırdığınız doğrudan bağımlılıkların, düzgün çalışabilmek için arka planda kendi başlarına çağırdığı alt paketlerdir. (Yazılım zafiyetlerinin büyük bir bölümü, yazılımcının haberi olmadan yüklenen bu geçişli katmanlarda gizlidir).
CISA Güncel SBOM Minimum Gereksinimleri (Temmuz 2026)
ABD Siber Güvenlik ve Altyapı Güvenliği Ajansı (CISA), başlangıçta 2021 yılında NTIA tarafından belirlenen "Minimum Elements" listesini, değişen tehdit ortamı nedeniyle **Temmuz 2026'da** güncellemiştir. Geçerli güncel standartlara göre bir SBOM dosyasının yasal veya kurumsal olarak kabul görebilmesi için şu alanları içermesi zorunludur:- **Tedarikçi Adı (Supplier Name):** Bileşeni üreten kişi veya kurum.
- **Bileşen Adı (Component Name):** Kütüphanenin tam adı.
- **Sürüm (Version):** Kullanılan tam sürüm numarası (Örn: 2.1.4).
- **Benzersiz Tanımlayıcılar (Other Unique Identifiers):** PURL veya CPE.
- **Bağımlılık İlişkisi (Dependency Relationship):** X kütüphanesinin Y kütüphanesini kapsadığına dair ağaç ilişkisi.
- **Yazar ve Zaman Damgası:** SBOM'u kimin, ne zaman ürettiği.
- **[2026 Yeni] Kriptografik Özet (Hash):** Bileşenin değiştirilmediğini kanıtlayan SHA-256 gibi hash değerleri.
- **[2026 Yeni] Lisans Bilgisi:** Bileşenin hangi lisansla (GPL, MIT, Apache) dağıtıldığı.
- **[2026 Yeni] Üretim Bağlamı ve Araç Adı (Generation Context & Tool Name):** SBOM'un CI/CD boru hattında mı yoksa kaynak kod analizinden mi üretildiği ve hangi aracın kullanıldığı.
SBOM Üretim Yöntemleri
SBOM manuel yazılan bir belge değildir. Modern yazılım geliştirme döngüsünde araçlar aracılığıyla üç farklı şekilde üretilebilir:1. **Kaynak Kod (Repository) Taraması:** Yazılım henüz derlenmeden, Git deposundaki konfigürasyon dosyalarına (manifest) bakarak bağımlılıkları çeken statik analizdir.
2. **Derleme (Build) Sırasında Üretim:** En sağlıklı ve tavsiye edilen yöntemdir. Kod derlenirken CI/CD hattına (Örn. GitHub Actions, GitLab CI) entegre edilen bir SBOM aracı, tam olarak o an paketlenen ürünün envanterini çıkarır.
3. **Container / Binary Taraması:** Zaten derlenmiş ve paketlenmiş (Docker imajı gibi) ürünlerin tersine mühendislik araçlarıyla taranarak içindekilerin keşfedilmesidir.
Paket Tanımlayıcıları: PURL ve CPE
Makine tarafından okunabilirlik SBOM'un kalbidir. Müşterinin zafiyet tarama aracı, "Log4j" ismini gördüğünde bunun hangi dilin kütüphanesi olduğunu anlamayabilir. Bu nedenle evrensel tanımlayıcılar kullanılır:- **PURL (Package URL):** Yazılım ekosistemlerindeki (npm, maven, pypi) paketleri standart bir URL formatında tanımlar. (Örn: `pkg:npm/react@18.2.0`). SBOM için en modern ve çok tercih edilen tanımlayıcıdır.
- **CPE (Common Platform Enumeration):** Daha çok Ulusal Zafiyet Veritabanı (NVD) tarafından kullanılan, geleneksel donanım, işletim sistemi ve büyük yazılım tanımlayıcı standarttır.
SBOM ve Zafiyet Yönetimi İlişkisi (VEX)
SBOM size ürünün içinde ne olduğunu söyler ancak o parçaların tehlikeli olup olmadığını söylemez. Bu noktada **VEX (Vulnerability Exploitability eXchange)** devreye girer.Diyelim ki SBOM'unuzda zafiyetli olduğu bilinen (CVE-202X-XXXX) bir kütüphane var. Ancak sizin kod mimariniz bu kütüphanenin zafiyetli fonksiyonunu hiç çağırmıyor. Müşterileriniz SBOM'u tarattıklarında panikleyebilirler. Siz, SBOM ile birlikte bir VEX dosyası yayımlayarak makine dilinde şu mesajı verirsiniz: "Evet ürünümde bu bileşen var, ancak 'not affected' (etkilenmiyor) statüsündedir."
CRA gibi yasal düzenlemeler, SBOM'un VEX ile entegre edilmesini tavsiye eder.
Şirketler İçin SBOM Kalite Kontrol Listesi
> [!TIP]> Temsili örnek — müşteri verisi içermez. SBOM çıktılarınızı doğrulamak için kullanabilirsiniz.
- [ ] SBOM'un formatı uluslararası geçerli bir standartta (SPDX veya CycloneDX) oluşturulmuş mu?
- [ ] Hem doğrudan (direct) hem geçişli (transitive) bağımlılıklar ayrıştırılarak listelenmiş mi?
- [ ] Bileşenlerin sürümleri kesin (fixed) versiyon mu, yoksa belirsiz (latest, ^1.0) mi?
- [ ] Her bileşen geçerli bir PURL adresine sahip mi?
- [ ] CI/CD boru hattına otomasyon sağlandı mı (Her yeni sürümde SBOM güncelleniyor mu)?
- [ ] Hash değerleri hesaplanarak SBOM içerisine gömüldü mü?
- [ ] Açık kaynak lisans çatışmalarını (Örn. GPL copyleft sorunu) tespit edebilecek lisans bilgileri var mı?
TEVSİK'in Sunduğu SBOM ve Envanter Hazırlığı
Yüzlerce mikroservisi olan bir teknoloji şirketinde SBOM'u sadece üretmek yetmez; onu yönetmek, sürümlendirmek ve zafiyet yönetim süreçleriyle (VEX) bağlamak devasa bir operasyondur. TEVSİK, şirketlerin mevcut CI/CD süreçlerini analiz eder, CISA 2026 ve Cyber Resilience Act (CRA) standartlarına tam uyumlu otomatik SBOM ve teknik envanter altyapısını sistemlerinize entegre eder.Hizmet Sınırı
Bu içerik genel teknik bilgilendirme amacı taşır; hukuk görüşü, resmî uygunluk değerlendirmesi veya sertifikasyon hizmeti değildir. TEVSİK; teknik envanter, süreç, veri, kanıt ve hazırlık yapılanması sunar.Sıkça Sorulan Sorular
SBOM (Software Bill of Materials) nedir?
Yazılım Malzeme Listesi (SBOM), bir yazılım ürününü oluşturan tüm açık kaynaklı ve ticari bileşenleri, kütüphaneleri, bu bileşenlerin sürümlerini ve birbirleriyle olan bağımlılıklarını (dependency) makine tarafından okunabilir bir formatta (SPDX veya CycloneDX) belgeleyen şeffaflık envanteridir.
SBOM oluşturmak yasal bir zorunluluk mu?
Evet. Avrupa Birliği'nde Cyber Resilience Act (CRA) kapsamında dijital ürün üreticileri için SBOM oluşturmak zorunludur. ABD'de ise Executive Order 14028 ve CISA direktifleri gereği, federal kurumlara yazılım satan tüm şirketlerin ürünlerine dair SBOM sağlaması yasal bir gerekliliktir.
Doğrudan (Direct) ve Geçişli (Transitive) bağımlılık nedir?
Doğrudan bağımlılık, yazılımcının projesine bizzat eklediği kütüphanedir (Örn: React). Geçişli bağımlılık ise, React kütüphanesinin kendi içinde ihtiyaç duyduğu ve arka planda otomatik yüklenen diğer kütüphanelerdir. İyi bir SBOM her iki katmanı da göstermelidir.
CISA'nın 2026 SBOM asgari gereksinimlerinde neler eklendi?
Temmuz 2026'da güncellenen CISA rehberine göre, eski NTIA (2021) gereksinimlerine ek olarak; bileşenin kriptografik özeti (Hash), lisans bilgisi, SBOM'u üreten aracın adı (Tool Name) ve üretim bağlamı (Generation Context) minimum gereksinimlere dahil edilmiştir.
SBOM sadece bir kez oluşturulan statik bir dosya mıdır?
Hayır. SBOM, yazılım yaşam döngüsünün (SDLC) canlı bir parçasıdır. CI/CD süreçlerine entegre edilmeli ve yazılıma yeni bir bileşen eklendiğinde, sürüm güncellendiğinde veya kod her derlendiğinde (build) otomatik olarak yeniden üretilmelidir.