Yazılım Tedarik Zinciri Güvenliği: Reproducible Builds, Vaka Analizleri ve Kod Bütünlüğü Stratejileri

No items found.
ICSFusion Research

Özet

Yazılım tedarik zincirine yönelik sofistike ve hedefli sızma saldırıları, yazılım geliştirme süreçlerinin sınırlarını zorlayan yeni tehditlerle karşı karşıya kalmamıza neden olmaktadır. Bu makalede, özellikle reproducible builds (yeniden üretilebilir derlemeler) kavramı üzerinden kod bütünlüğü denetimlerinin nasıl yapılabileceği incelenmekte; önemli tedarik zinciri saldırılarından XZ backdoor (2024) ve SolarWinds Orion (2020) olayları analiz edilmektedir. Son bölümde ise yazılım ekiplerinin uygulayabileceği somut önlemler sunulmaktadır.

1. Giriş

Yazılım tedarik zinciri sadece kaynak kodu değil; derleme ortamları, bağımlılıklar, yayın kanalları ve geliştirici bilgisayarlarına kadar uzanan karmaşık bir yapıya sahiptir. Bu zincirdeki her halka, potansiyel bir saldırı vektörü haline gelebilir. Yazılım tedarik zinciri saldırılarının etkisi artık sadece teknik sınırlarda değil, tüm ekosisteme yayılmaktadır. F-Droid gibi projelerden alınacak şeffaflık ilkesi ve SolarWinds olayından çıkarılan iç güvenlik zaafları, sadece yazılım değil süreç güvenliğinin de ne kadar önemli olduğunu ortaya koymaktadır. Bu nedenle tedarik zinciri güvenliği hem teknik önlemlerle hem de süreçsel ve sosyal şeffaflıkla birlikte ele alınmalıdır.

2. Kod Bütünlüğü Nasıl Sağlanır?

2.1 Kaynak Kod - İkili Bağını Doğrulama

  • SHA-256 hash üzerinden ikili ve kaynak kod eşlemesi
  • İmzalanmış derleme çıktıları ve tag'ler
  • CI/CD sistemlerinde build için kod imzası denetimi

2.2 Reproducible Builds Nedir?

Reproducible build, aynı kaynak koddan, aynı ortam ve derleme aracı kullanılarak bit düzeyinde aynı çıktının elde edilebilmesini sağlayan bir yapıdır. Bu sayede bir yazılımın gerçekten sunulan kaynak koddan üretildiği bağımsız şekilde doğrulanabilir.

2.3 Neden Hayati Önemde?

  • Sızılmış bir CI/CD pipeline fark edilmeden zararlı binary yayabilir.
  • Görünen kaynak kod ile çalışan kod farklı olabilir.
  • Geleneksel antivirüsler çoğu zaman bu farklılığı tespit edemez.

2.4 Nasıl Uygulanabilir?

Gereklilik Açıklama
Tarih Bilgisi SOURCE_DATE_EPOCH ile sabitlenmeli
Build ortamı Docker, Nix, chroot gibi izole ortamlar kullanılmalı
Metadata UID, GID, timestamp sabitlenmeli, geliştirme sürecinde takip edilmeli ve derleme sonuçlarında kontrolü sağlanmalı
Rastgelelik Rastgele UUID gibi veriler kontrol altına alınmalı
Kullanılabilir Araçlar: diffoscope, reprotest, Gitian, Nix, Bazel

2.5 Uygulamalı Örnek: Kaynak Kod ile Binary Arasındaki Eşleşme

Bir açık kaynak proje örneği olarak `hello` komutu (GNU hello) seçilmiştir. Bu örnekte kaynak kodun gerçekten dağıtılan ikili dosyayla eşleşip eşleşmediği test edilmiştir.

Adımlar:

1. Orijinal kaynak kod `https://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz` üzerinden indirilmiştir.

2. SHA-256 hash değeri doğrulandıktan sonra paket çıkartılmış ve `SOURCE_DATE_EPOCH=...` değeri sabitlenerek `make` ile derlenmiştir.

3. Derleme sonucu elde edilen `hello` ikili dosyası ile dağıtılan `hello` paketinden çıkarılan orijinal binary dosyası `diffoscope` ile karşılaştırılmıştır.

Sonuç:  

Her iki binary’nin birebir aynı olmadığı gözlemlenmiştir. `build-id`, zaman damgası (`timestamp`) ve bazı dosya yollarının sabitlenmediği fark edilmiştir. Bu farklılıklar düzeltilip build ortamı izole hale getirilince bit düzeyinde aynı sonuç elde edilmiştir.

Bu çalışma, reproducible build sistemlerinin sadece teorik değil, pratik olarak da uygulanabileceğini göstermektedir.

3. Saldırı Vaka Analizleri

3.1 XZ Utils Backdoor (2024)

  • XZ projesine katkı yapan bir saldırgan, yıllar içinde yönetici konumuna gelerek liblzma içine arka kapı ekledi.
  • Derleme zinciri manipüle edilerek zararlı kod ancak çıktıda ortaya çıkıyordu.
  • Fedora ve Debian paket süreci sırasında fark edildi.
  • Reproducible build sistemleri ile daha erken tespit sağlanabilirdi.

3.2 SolarWinds Orion Saldırısı (2020–2021)

  • Saldırganlar, CI/CD pipeline' ına sızarak çalışan DLL dosyasına Sunburst adlı arka kapıyı ekledi.
  • SolarWinds, bu zararlı yazılımı yasal imzayla dağıttı.
  • ABD kamu kurumları, Microsoft, Cisco ve diğer büyük firmalar dahil ~18.000 kurum etkilendi.
  • Olay çok geç fark edildi. Erken uyarı sistemleri sessiz kaldı.
  • CISA acil yönergelerle izole etme talimatı yayımladı. Sonraki dönemde SolarWinds SEC yaptırımına uğradı.

3.3 SolarWinds Vakası Üzerine Derinlemesine Dersler

(Kaynak: NPR Röportajı – 2021)

SolarWinds saldırısına dair NPR' nin 2021 tarihli özel röportajında, olayın büyüklüğü ve organizasyonel zafiyetler detaylandırılmıştır:

  • Sessiz ve Uzun Süreli Erişim: Saldırganlar, SolarWinds ağında aylarca fark edilmeden kalabildi. Bu süre zarfında “Sunburst” adlı zararlı yazılım üzerinden sistemlere arka kapılar kuruldu.

  • İçeriden Güvenlik Açığı: SolarWinds geliştirici ortamında saldırganların uzun süreli erişimi, kod imzalama süreçlerini de ele geçirmelerine neden oldu.

  • Geciken Farkındalık: İlk tespit aslında FireEye firmasının kendi araçlarının çalındığını fark etmesiyle geldi. Bu, doğrudan SolarWinds üzerinden olmuştu ve saldırının çapını ortaya koydu.

Alınan Dersler:

  • Güven Zinciri İzlenmeli: Kod imzalama sadece güven vermemeli; izlenebilir, şeffaf ve her aşamada kontrol edilebilir olmalı.

  • Bağımsız İzleme Sistemleri: CI/CD sistemleri harici sistemlerce gözlemlenmeli, içerideki anormallikler için dış tetikleyiciler oluşturulmalı.

  • Kod Bütünlüğü + Anomali Tespiti: SolarWinds olayı, sadece kod imzasının yeterli olmadığını; build ortamındaki davranışsal analizlerin de gerektiğini göstermiştir.

4. Sürekli Saldırganlara Karşı Gelişmiş Savunma Yöntemleri

4.1 İzlenebilirlik ve Kod-Tutarlılık Denetimi

  • Reproducible build sistemleri ile çalışan kodun kaynak kodla eşleştiği doğrulanmalıdır.
  • Build çıktılarının hash değerleri üçüncü taraflarca karşılaştırılabilir olmalıdır.
  • SLSA gibi tedarik zinciri güvenlik seviyeleri uygulanmalıdır.

4.2 Anomali Tespiti ve Kayıt Analizi

  • SIEM çözümleri ile sistem günlükleri merkezi olarak toplanmalı ve analiz edilmelidir.
  • Davranışsal analiz yapan güvenlik yazılımları kullanılmalıdır.
  • Olağan dışı işlem çağrıları, DNS talepleri veya sistem komutları tespit edilmelidir.

4.3 Build ve Geliştirici Ortamı İzolasyonu

  • Geliştirici makineleri internete sınırlı erişimli olmalıdır.
  • CI/CD ortamları izole edilmiş, konteyner tabanlı sistemlerde çalışmalıdır.
  • Build işlemi sonrası ortam temizlenmelidir (disposable build environments).

4.4 Lateral Movement (Yana Yayılma) Önlemleri

  • Mikro segmentasyon uygulanmalı, kullanıcılar minimum yetkilerle sınırlandırılmalıdır.
  • CI sistemlerine sadece belirli IP aralıkları ve MFA ile erişim sağlanmalıdır.

4.5 Tehdit Avcılığı (Threat Hunting)

  • YARA kuralları ile ikili dosyalar taranmalıdır.
  • Zamanlanmış görevler, gizli servisler, şüpheli DLL injection gibi kalıcılık teknikleri denetlenmelidir.
  • Red Team / Blue Team egzersizleri uygulanmalıdır.

5. Gözlemlenebilirlik ve Şeffaflık: Reproducible Build Süreçlerinin Görünür Hale Getirilmesi

(Kaynak: f-droid.org, 2025)

F-Droid topluluğu, reproducible build süreçlerini yalnızca teknik doğrulama değil, aynı zamanda görünür bir güvenlik göstergesi haline getirmeyi amaçlamaktadır. F-Droid’in 2025 tarihli çalışmasında şu önlemler öne çıkmıştır:

  • Rebuild Success Grafikleri: Uygulamaların hangi oranla yeniden üretilebilir olduğu görsel olarak gösterilmektedir. Kullanıcılar, bir uygulamanın reproducibility seviyesini doğrudan arayüzden görebilir.

  • Yapıların Otomatik İzlenmesi: CI sistemleri ile yapılan her build, hash eşlemesiyle geçmiş versiyonlarla kıyaslanır ve bozulmalar tespit edilir.

  • Şeffaflık İlkesi: Bir uygulamanın reproducible olmadığının açıklanması, kullanıcıya risk farkındalığı kazandırır ve geliştiriciye düzeltme baskısı uygular.

6. Reproducibility Araçlarının Uygulanması ve Karşılaşılan Zorluklar

- diffoscope:  

  İki ikili dosya veya dizin arasındaki en küçük farklılıkları bile detaylı şekilde raporlar. Debian ve Arch Linux tarafından aktif kullanılır. Ancak büyük dosyalarda çok yavaş çalışabilir. Bu durumda `--max-report-size` gibi bayraklarla sınırlandırma yapılmalıdır.

Bu komut döngü içerisinde kullanılarak fonksiyonların testi sağlanabilir.

- reprotest:  

  Bir paketi çeşitli varyasyonlarla (zaman, locale, kullanıcı ID'si vb.) test eder. Ancak bazı paketlerin build sistemleri yeterince deterministik olmadığından `false negative` sonuçlar dönebilir. Build sisteminin `autotools` yerine `meson` gibi modern sistemlere geçirilmesi bu sorunu azaltır.

Modern sistemlerin yanında Reproducible Build haline getirilme sürecinde build sistemiyle alakalı incelemeler yapılıp araçlara uygun hale getirilebilir.

- Gitian: 

  Bitcoin Core gibi projelerde kullanılır. Aynı kaynaktan 3 farklı geliştirici tarafından yapılan build çıktılarının eşleştirilmesini sağlar. Ancak sanal makineye dayalı yapısı konfigürasyon açısından karmaşıktır. Docker tabanlı modern alternatifler (ör. `guix`, `nix`) daha kolay uygulanabilir.

Zorluklar:

- Derleyici versiyonlarının farklılığı sonucu ortaya çıkan tutarsızlıklar.

- Derleme sırasında dış sistemlere yapılan ağ çağrılarının sonucu değişen çıktılar.

- `gzip`, `tar`, `ar` gibi araçların non-deterministic davranışları (ör. dosya sırası, timestamp).

Çözüm Önerileri:

- `SOURCE_DATE_EPOCH` standardının build sistemine entegre edilmesi.

- Docker veya chroot ile tam izole ortamda derleme yapılması.

- Derleme araçlarının sabit versiyonlarla container içinde tutulması.

7. Kaynaklar

  1. https://reproducible-builds.org
  2. https://slsa.dev 
  3. "The Untold Story of the Boldest Supply-Chain Hack Ever" - Wired (https://www.wired.com/story/the-untold-story-of-solarwinds-the-boldest-supply-chain-hack-ever )
  4. "The DOJ Detected the SolarWinds Hack 6 Months Earlier Than First Disclosed" - Wired
  5. CISA Emergency Directive 21-01 (2020)
  6. https://nvd.nist.gov/vuln/detail/CVE-2020-10148 
  7. https://www.securityweek.com/more-cybersecurity-firms-confirm-being-hit-solarwinds-hack/
  8. https://f-droid.org/en/2025/05/21/making-reproducible-builds-visible.html 
  9. https://www.npr.org/2021/04/16/985439655/a-worst-nightmare-cyberattack-the-untold-story-of-the-solarwinds-hack