CyberFlow Logo CyberFlow BLOG
Owasp Software Or Data Integrity Failures

SBOM, Provenance ve Kaynak İzlenebilirliği: Siber Güvenlikte Temel Kavramlar

✍️ Ahmet BİRKAN 📂 Owasp Software Or Data Integrity Failures

Yazılım bileşenlerinin görünürlüğü ve izlenebilirliği, siber güvenlikte kritik öneme sahiptir. Bu blogda SBOM ve provenance kavramlarını keşfedin.

SBOM, Provenance ve Kaynak İzlenebilirliği: Siber Güvenlikte Temel Kavramlar

Siber güvenlikte yazılım bileşenlerinin izlenebilirliği ve görünürlüğü hayati önem taşır. SBOM ve provenance gibi kavramlar, yazılımlarınızın güvenliğini artırmak için kritik araçlardır.

Giriş ve Konumlandırma

Siber güvenlik alanında etkili bir savunma mekanizması oluşturmak, sürekli gelişen tehditler karşısında hayati önem taşımaktadır. Bu bağlamda, yazılım bileşenlerini anlamak ve güvenliğini değerlendirmek için iki temel kavram öne çıkmaktadır: SBOM (Software Bill of Materials) ve provenance (köken bilgisi). Bu kavramlar, yazılımın içindeki bileşenlerin tam olarak ne olduğunu ve bu bileşenlerin nasıl üretildiğini izlemeye yardımcı olur. Bu yazıda, bu kavramların önemini ve siber güvenlikteki yerlerini ele alacağız.

Yazılımın İçindeki Bileşenleri Görünür Hale Getirmek

Günümüz yazılımları genellikle çeşitli üçüncü taraf bileşenler ve bağımlılıklar içermektedir. Bu bileşenlerin hangi paketlerden ve sürümlerden oluştuğunu bilmek, güvenlik tehditlerini ve sistem açıklarını tespit etmenin ilk adımıdır. SBOM, yazılımın tüm bileşenlerini ve bunların sürümlerini görünür hale getirir, böylece geliştiriciler ve güvenlik ekipleri, sistemde kullanmamış oldukları güncel olmayan veya zayıf bileşenleri tespit edebilirler. Örneğin:

syft . -o spdx-json

Yukarıdaki komut, mevcut dizinde bulunan yazılım bileşenlerini SPDX formatında bir SBOM olarak görüntülemeye yardımcı olur. Bu tür bir görünürlük olmadan, zararlı yazılımların veya beklenmeyen bağımlılıkların sistemlere girmesi zorlaşır.

Provenance ve Kaynak İzlenebilirliği

Provenance kavramı ise yalnızca bileşenlerin içeriğini değil, aynı zamanda bu bileşenlerin nasıl üretildiği hakkında bilgi sağlar. Bir yazılım bileşeninin hangi build sürecinden geçtiği ve hangi kaynak kodundan üretildiği gibi veriler, güvenlik açığının kaynaklarını izlemek için kritik öneme sahiptir. Örneğin, bir bileşenin güvenliğini sorgulamak istersek, onun köken bilgisine ulaşmak zorundayız. Bu, şunları içerir:

  • Hangi build pipeline tarafından üretildiği
  • Hangi kaynak commit'inden geldiği
  • Yayımlanma zamanı

Bu bilgileri elde etmek için de error-prone sistemlerde köken doğrulama mekanizmaları uygulamak şarttır. Bunun için aşağıdaki gibi bir komut kullanılabilir:

cosign verify-attestation app-image:1.0

Burada, belirtilen imajın doğrulandığından emin olmak için konumlandırılan gerekli attestation süreci kontrol edilmiştir.

Bütünlük ve Güvenlik: Neden Önemli?

Siber güvenlik, sadece bir dosyanın hash değerinin doğrulanmasından ibaret değildir. Modern yazılım geliştirme süreçlerinde, yazılım güvenliği geniş bir yelpazeye yayılmaktadır. SBOM ve provenance, yazılımın tamamının güvenliğini artırır çünkü:

  1. Görünürlük: Ekiplerin yalnızca nihai ürüne değil, onu oluşturan tüm bağımlılara bakabilmesini sağlar.
  2. Doğrulama: Hangi bileşenlerin gerçekten güvenli olduğunu ve beklenen süreçlerden geçip geçmediğini doğrulamayı kolaylaştırır.
  3. Tedarik Zinciri Güvenliği: Tercih edilmeyen veya zararlı bileşenlerin otomatik olarak tespit edilmesi için önemlidir. Bileşen görünürlüğü eksikliği, sistemlerin siber saldırılara karşı daha savunmasız hale gelmesine yol açabilir.

Eğitimlerde vurgulandığı üzere, görünürlük ve izlenebilirlik, güvenlik süreçlerinin temelleridir. Geliştiriciler ve güvenlik uzmanları, SBOM, provenance ve kaynak izlenebilirliği kavramlarını bir arada düşünerek, yazılım geliştirme ve güvenlik süreçlerini daha etkili ve güvenli hale getirebilirler. Bu yüzden siber güvenlik alanında bu kavramların doğru anlaşılması ve uygulanması, sadece yazılım bütünlüğü değil, aynı zamanda sistemlerin genel güvenliği için de kritik bir öneme sahiptir.

Teknik Analiz ve Uygulama

Yazılımın İçindeki Bileşenleri Görünür Hale Getirmeye Başlamak

Siber güvenlikte, bir yazılım ürününün bileşenleri üzerinde tam bir görünürlük sağlamak, zararlı yazılımların tespiti ve sistem güvenliğinin sağlanması açısından kritik öneme sahiptir. Bu bağlamda, yazılım bileşen envanteri oluşturmak için ilk adım olarak "SBOM" (Software Bill of Materials) kavramı öne çıkmaktadır. SBOM, yazılımın hangi paketlerden, hangi sürümlerden ve hangi bileşenlerden oluştuğuna dair detaylı bir envanter sağlar.

SBOM oluşturmak için syft adlı bir araç kullanılabilir. Bu araç, mevcut dizindeki bileşenleri tarar ve belirtilen formatta bir çıktı üretir. Örneğin, SPDX formatında bir SBOM oluşturmak için aşağıdaki komut kullanılabilir:

syft . -o spdx-json

Bu komut, geçerli dizindeki tüm yazılım bileşenlerini tarar ve ilgili bilgileri JSON formatında çıktı olarak sunar.

Bileşen Envanterinin Güvenlikteki Yerini Tanımak

Bileşen envanteri, tüm bileşenlerin kimliğini ve bu bileşenlerin sürümlerini kayıt altına alarak tedarik zinciri güvenliği açısından kritik bir yapı sunar. Yazılımın karmaşık bağımlılık ağları göz önüne alındığında, sadece son dosyanın değil, onu oluşturan tüm alt bileşenlerin de bilinmesi gerekmektedir. Bu durum, SBOM'u oluşturmak kadar önemlidir ve yazılım bileşenlerinin hangi kaynaklardan geldiğini de kapsamaktadır.

Bu bağlamda, ekiplerin SBOM'u kullanarak bileşenlerin güvenliğini değerlendirirken dikkat etmeleri gereken noktalar arasında bileşenlerin sürümleri, güncellemeleri ve güvenlik açıklarının olup olmadığını kontrol etme yer alır. Örneğin, belirli bir bileşenin güvenlik açığı taşıması durumunda hemen güncellenmesi gerektiği gerçeği, buna bağlı olarak tedarik zinciri güvenliğini tehlikeye atabilir.

Bütünlük Güvenliğinde Kullanılan Üç Temel Görünürlük Yapısını Ayırmak

Bütünlük güvenliği, yalnızca yazılım bileşenlerinin hash değerlerinin doğrulanmasıyla değil, aynı zamanda bu bileşenlerin nasıl oluşturulduğu ve hangi süreçlerden geçtiğiyle de ilgilidir. İşte bu noktada "Provenance" (köken) kavramı devreye girer. SBOM yapısı, bileşenlerin görünürlüğünü sağlarken, provenance bu bileşenlerin üretim sürecinin izlenebilirliğini sağlar.

Her bir bileşenin, hangi build sürecinden geçtiği ve hangi kaynak commit'inden geldiği gibi bilgileri doğrulamak için aşağıdaki komut kullanılabilir:

cosign verify-attestation app-image:1.0

Bu komut, belirtilen image’ın doğruluğunu ve köken bilgisini kontrol etme işlevini yerine getirir.

Artifact'in Sadece İçeriğini Değil Kökenini de Doğrulamayı Görmek

Artifact güvenliğinde, yalnızca dosyanın içeriği değil, aynı zamanda onunla ilişkili üretim sürecinin kanıtlarının doğrulaması da hayati önem taşır. Provanance yaklaşımında, bir artifact'in üretim sürecine dair merkezi unsurlar arasında yer alan bilgileri, güvenlik uygulamalarının etkinliğini belirler. Bu nedenle köken bilgisi eksikliği, güvenlik risklerini artıran bir durumdur.

Artifact'lerin nereden geldiğini, ne zaman oluşturulduğunu ve hangi imzalarla bağlandığını bilmek, güvenlik zincirinin eksiksiz hale gelmesi için zorunludur. Bu bağlamda, kök doğrulama, özellikle güvenlik ihlalleri yaşandığında, analiz yapılabilmesi için kritik rol oynar.

İçerik Bütünlüğüne Ek Olarak Üretim Kaynağının da Neden Önemli Olduğunu Anlamak

Yazılımın güvenliğinde, bileşenlerin sadece içerik bütünlüğünün değil, aynı zamanda üretim sürecinin güvenliğinin sağlanması da kritik öneme sahiptir. Hangi kaynak koddan üretildiği, hangi pipeline aracılığıyla yayımlandığı gibi bilgilere erişimin olmaması, potansiyel tehditlerin etkisini artırabilir. Provenance, bu bağlamda risklerin değerlendirilmesine olanak tanıyan bir yapı sunar.

Görünürlük Eksikliğinin Nasıl Tedarik Zinciri Güvenlik Riskine Dönüştüğünü Parçalamak

Görünürlük eksikliği, tedarik zinciri güvenliği açısından potansiyel bir tehdit oluşturur. SBOM, provenance ve kaynak izlenebilirliği sayesinde sistematik bir izleme ve değerlendirme sağlar. Bu verilerin kaydedilmemesi, ilerleyen dönemlerde bir güvenlik sorunu ortaya çıktığında hangi bileşenlerin etkilendiğinin ve sorunların kökeninin nereden geldiğinin belirlenmesini zorlaştırır.

Modern yazılımlar, karmaşık bağımlılık yapısına sahip olduğundan, bir problemin kökenini izleyerek güvenli çözümleme yapmak gereklidir. Bu tür bir görünürlük sağlanmadığında, güvenlik ekipleri neyin sisteme girdiğini ve bir problemin nereden kaynaklandığını belirlemek konusunda ciddi zorluklar yaşayabilir. Bu nedenle, SBOM, provenance ve izlenebilirlik kavramları, siber güvenlikte temel bir savunma katmanı oluşturur.

Risk, Yorumlama ve Savunma

Siber güvenlikte risk değerlendirmesi, tedarik zinciri güvenliği ve yazılım bütünlüğü gibi konular, son dönemde daha da fazla önem kazanmıştır. Bu bağlamda SBOM (Software Bill of Materials), provenans ve kaynak izlenebilirliği kavramları, yazılım bileşenlerinin güvenli bir şekilde kullanılmasını sağlamak için kritik bir rol oynamaktadır. Riskler ve bu risklerin doğru bir şekilde yorumlanması, çoğu zaman sistem güvenliğini sağlama ya da zafiyetlerin ortaya çıkmasında belirleyici faktörlerdir.

Elde Edilen Bulguların Güvenlik Anlamı

Bir yazılımın iç bileşenleri hakkında eksiksiz bilgi sahibi olmamak, kritik güvenlik açıklarına zemin hazırlayabilir. Örneğin, bir projede kullanılan kütüphanelerin güncel sürümleriyle ilgili bilgi eksikliği, bilinen zafiyetlerin sisteme sızmasına neden olabilir. Böyle bir durumda incelenmesi gereken ilk adım, bileşen envanterinin güncel ve doğru bir şekilde çıkarılmasıdır:

syft . -o spdx-json

Yazılımın içerdiği bileşen ve bağımlılıklar hakkında net bilgi sahibi olunmaması, uyumsuzluklara ve potansiyel veritabanı ihlallerine yol açabilir.

Yanlış Yapılandırma ve Zafiyetlerin Etkileri

Yanlış yapılandırma durumları, genellikle sistemin beklenen işleyişinin aksamasına neden olur. Örneğin, bir uygulamanın bileşenleri üzerinde yapılan bir güncelleme, düzgün bir şekilde test edilmediyse ve eski bir sürüm üzerinde yapılandırılmışsa, bu durum güvenlik zafiyetleri oluşturabilir. Bu tür zafiyetler:

  • Sisteme kötü amaçlı yazılım yerleşmesine,
  • Önyükleme sürecinde güvenlik açıkları yaratmasına,
  • Kullanıcı verilerinin sızdırılmasına yol açabilir.

Zafiyetlerin başında, özellikle bireysel kullanıcıların bilinçsizce varsayılan ayarların korunması ve güncellemelerin göz ardı edilmesi gibi durumlar gelir.

Sızan Veri, Topoloji ve Servis Tespiti

Bir veri ihlali durumunda, sızan verilerin analiz edilmesi oldukça kritiktir. Burada izlenebilirlik önemli bir rol oynamaktadır. Eğer bir saldırgan belirli verileri çalmak istiyorsa, bu sürecin izlenebilir olması, saldırganın kimliğini ve kullandığı yöntemleri belirlemede etkili olabilir. Ayrıca, sistemin topolojisinin tespit edilmesi sayesinde, hangi bileşenlerin potansiyel bir saldırı altında olduğunu anlamak mümkündür. Bununla birlikte, gereksiz açıkların ve zayıf noktaların kapatılması, riskin minimize edilmesi açısından kritiktir.

Sızan veri: Kullanıcı kimlik bilgileri
Saldırının kaynağı: Dışa verilmiş bir güncel kütüphane zafiyeti
Topoloji: Sunucu > Uygulama > Veri Tabanı

Profesyonel Önlemler ve Hardening Önerileri

Yazılım güvenliğini artırmak için alınabilecek bazı önlemler şunlardır:

  1. SBOM Kullanımı: Yazılım bağımlılıklarınız hakkında detaylı bilgi sağlayan bir SBOM oluşturun ve düzenli olarak güncel tutun.

    syft . -o spdx-json
    
  2. Provenance Doğrulaması: Kullanılan bileşenin hangi kaynaklardan geldiğini ve hangi yapı süreçlerinden geçtiğini doğrulayın. Bunun için cosign gibi araçlardan yararlanabilirsiniz.

    cosign verify-attestation app-image:1.0
    
  3. Düzenli Güncellemeler: Yazılım ve bağımlılık güncellemelerinizi düzenli olarak kontrol edin ve uygunsuz sürümleri hızlıca güncelleyin.

  4. Hızlı İzleme ve Yanıt Sistemleri: Güvenlik ihlallerini tespit ettiğiniz an müdahale edebilmek için proaktif izleme sistemleri uygulayın.

  5. Eğitim ve Farkındalık: Ekiplerinizi yazılım güvenliği, güncellemeler ve potansiyel tehditler konusunda eğitin.

Sonuç

Siber güvenlikte riskler, düzgün bir değerlendirme ile minimize edilebilir. SBOM, provenans ve kaynak izlenebilirliği kavramları, yazılım bileşenlerinin güvenli kullanılabilirliği için kritik öneme sahip. Yazılım güvenliği sağlarken, bileşen görünürlüğü ve köken bilgisi, etkili bir savunma mekanizması oluşturmanıza yardımcı olur. Unutulmamalıdır ki, güvenlik sadece bir bileşeni değil, o bileşenin toplandığı süreçle birlikte tüm yazılım zincirini kapsamalıdır.