Tedarik Zinciri Saldırıları: Yazılım Bağımlılıkları, Güncelleme Riskleri ve Savunma
Tedarik zinciri saldırısı sizi doğrudan değil, güvendiğiniz bir üçüncü tarafı (yazılım kütüphanesi, güncelleme sunucusu, tedarikçi) ele geçirerek vurur. Tek bir ele geçirme binlerce kurumu aynı anda etkileyebilir. Tedarik zinciri saldırılarının biçimlerini, neden geleneksel savunmaların kaçırdığını ve SBOM, bağımlılık taraması, kaynak doğrulama ve tedarikçi risk yönetimi ile nasıl savunulacağını kaynaklı anlattık.
Tedarik Zinciri Saldırıları: Yazılım Bağımlılıkları, Güncelleme Riskleri ve Savunma
Hızlı Cevap: Tedarik zinciri saldırısı, bir saldırganın sizi doğrudan değil, güvendiğiniz bir üçüncü tarafı (bir yazılım kütüphanesi, bir güncelleme sunucusu, bir tedarikçi ya da bir hizmet sağlayıcı) ele geçirerek dolaylı yoldan vurmasıdır. Bu, saldırıların en yıkıcı biçimlerinden biridir, çünkü tek bir başarılı ele geçirme, o üçüncü tarafı kullanan binlerce kurumu aynı anda etkileyebilir. Modern yazılım, onlarca hatta yüzlerce dış bağımlılık üzerine kurulur, ve her bağımlılık, güncelleme kanalı ve tedarikçi, bir güven noktasıdır. Saldırgan, sizin güvenlik duvarınızı aşmak yerine, sizin zaten güvendiğiniz bir bileşeni zehirler, ve siz o zehirli bileşeni kendi elinizle içeri alırsınız. Savunma, kullandığınız her bileşeni bir yazılım malzeme listesi (SBOM) ile bilmek, bağımlılıkları taramak ve sürüm sabitlemek, bileşenlerin kaynağını ve imzasını doğrulamak, derleme hattını (CI/CD) sıkılaştırmak ve tedarikçileri düzenli değerlendirmekle sağlanır.
Bir kurum kendi kodunu ne kadar iyi korursa korusun, kullandığı dış bileşenler kadar güvenlidir. Bir açık kaynak kütüphanesi, bir yazılım güncellemesi ya da bir bulut hizmeti ele geçirildiğinde, o bileşene güvenen herkes risk altına girer. Kaynak kodun bütünsel güvenliğini kaynak kodu güvenlik denetimi, SAST, DAST, SCA yazımızda, sızan sırların risklerini sızan API anahtarları ve sırlar yazımızda anlattık. Bu yazı, en dolaylı ama en yıkıcı tehdidi ele alır, tedarik zinciri saldırıları.
Neden bu kadar yıkıcı
Geleneksel bir saldırıda, saldırgan tek bir hedefi tek tek aşmaya çalışır. Tedarik zinciri saldırısında ise saldırgan, çok sayıda hedefin ortak güvendiği tek bir noktayı ele geçirir. Bir yazılım kütüphanesi milyonlarca projede kullanılıyorsa, o kütüphaneyi zehirlemek, milyonlarca projeye aynı anda ulaşmak demektir. Bir güncelleme sunucusu ele geçirilirse, o güncellemeyi alan her kurum zararlı kodu güvenle içeri alır, çünkü güncelleme meşru ve imzalı görünür.
Bu, saldırıyı hem verimli hem sinsi yapar. Verimli, çünkü tek bir çabayla çok sayıda kurbana ulaşılır. Sinsi, çünkü kurban zararlı bileşeni kendi güvenlik kontrollerinden geçirmez, o bileşen zaten güvenilir kabul edilir. İşte tedarik zinciri saldırısının gücü budur, güveni silah olarak kullanmak.
Saldırı biçimleri
Tedarik zinciri saldırıları birkaç ana biçimde gelir, ve her biri farklı bir güven noktasını hedef alır.
- Bağımlılık (kütüphane) saldırısı. Saldırgan, popüler bir açık kaynak paketine zararlı kod ekler ya da ona benzer isimli sahte bir paket yayınlar. İki yaygın tekniği vardır. Yazım hatası avcılığı (typosquatting), popüler bir paketin adına çok benzeyen bir isimle sahte paket yayınlamaktır, geliştirici yanlış yazınca zararlı paketi indirir. Bağımlılık karışıklığı (dependency confusion), bir kurumun iç paketiyle aynı isimli bir paketi genel bir depoya yükleyip sistemin yanlışlıkla dıştakini indirmesini sağlamaktır.
- Güncelleme ve derleme ele geçirme. Saldırgan, meşru bir yazılımın güncelleme sunucusunu ya da derleme hattını ele geçirir ve zararlı kodu resmi, imzalı bir güncellemenin içine yerleştirir. Kurumlar bu güncellemeyi güvenle kurar, çünkü kaynağı meşrudur.
- İmza anahtarı çalma. Saldırgan, bir yazılımın imzalama anahtarını çalarsa, kendi zararlı kodunu o yazılımın adına imzalayabilir, ve doğrulama sistemleri buna güvenir.
- Bağımlılığa sızan kötü niyetli katkı. Bir saldırgan, uzun süre güvenilir bir katkıcı gibi davranıp bir açık kaynak projesine gizli bir arka kapı yerleştirebilir. Bu, en sabırlı ve en sinsi biçimdir.
- Tedarikçi ve hizmet sağlayıcı ele geçirme. Sizin sistemlerinize erişimi olan bir tedarikçi ya da hizmet sağlayıcı ele geçirilirse, saldırgan o erişimi sizin ağınıza sıçramak için kullanır.
Neden geleneksel savunmalar kaçırır
Tedarik zinciri saldırısını tehlikeli yapan, tam da güvenlik kontrollerinizin dışından gelmesidir. Bir güvenlik duvarı, dışarıdan gelen saldırıyı durdurur, ama güvendiğiniz bir güncelleme meşru göründüğü için içeri alınır. Bir zafiyet tarayıcı, sizin kodunuzu tarar, ama üçüncü taraf bir kütüphaneye gizlenmiş bir arka kapıyı fark etmeyebilir. Sorun şudur, tedarik zinciri saldırısı sizin zaten güvendiğiniz bir kanaldan gelir, ve güven, kontrolü devre dışı bırakır. Bu yüzden savunma, güveni körü körüne değil, doğrulayarak vermeyi gerektirir.
| Saldırı biçimi | Hedef güven noktası | Örnek teknik |
|---|---|---|
| Bağımlılık saldırısı | Açık kaynak paket | Typosquatting, dependency confusion |
| Güncelleme ele geçirme | Güncelleme sunucusu | İmzalı güncellemeye zararlı kod |
| İmza anahtarı çalma | Kod imzalama | Zararlı kodu meşru imzalama |
| Kötü niyetli katkı | Açık kaynak projesi | Gizli arka kapı yerleştirme |
| Tedarikçi ele geçirme | Üçüncü taraf erişimi | Erişimle ağa sıçrama |
Savunma, görünürlük ve SBOM
İlk savunma, ne kullandığınızı bilmektir. Çoğu kurum, yazılımlarının hangi bileşenlerden oluştuğunu tam olarak bilmez, çünkü bağımlılıklar başka bağımlılıkları getirir ve zincir hızla derinleşir. Bir yazılım malzeme listesi (SBOM, Software Bill of Materials), bir yazılımın içindeki tüm bileşenleri ve sürümlerini listeler. Bu liste olmadan, bir bileşende zafiyet çıktığında onu kullanıp kullanmadığınızı bile bilemezsiniz. SBOM, tedarik zinciri güvenliğinin temelidir, çünkü koruyamayacağınız tek şey, var olduğunu bilmediğiniz şeydir. Dış saldırı yüzeyi ve varlık görünürlüğünün genelini dış saldırı yüzeyi ve OSINT yazımızda anlattık.
Savunma, bağımlılık taraması ve sürüm sabitleme
Bileşenleri bilmek yeterli değildir, onların güvenliğini sürekli izlemek gerekir. Yazılım kompozisyon analizi (SCA), kullandığınız bağımlılıkları bilinen zafiyetlere ve zararlı paketlere karşı otomatik tarar. Bunu derleme hattınıza eklemek, riskli bir bileşenin fark edilmeden içeri girmesini engeller. Bir diğer önemli uygulama, sürüm sabitlemedir, bağımlılıkların hangi sürümünü kullandığınızı sabitleyip her sürümün bütünlüğünü doğrulamak, saldırganın sessizce zararlı bir sürüm sızdırmasını zorlaştırır. SCA ve güvenli kod denetiminin genelini kaynak kodu güvenlik denetimi yazımızda ele aldık.
Savunma, kaynak ve imza doğrulama
Bir bileşeni içeri almadan önce, gerçekten iddia ettiği kaynaktan geldiğini ve değiştirilmediğini doğrulamak gerekir. Kod imzalama ve bütünlük doğrulama, bir bileşenin yolda zehirlenmediğini kanıtlar. Modern tedarik zinciri güvenliğinde, bir yazılımın nereden geldiğini ve nasıl derlendiğini kanıtlayan kaynak (provenance) kayıtları öne çıkar. Bir güncellemeyi ya da paketi körü körüne değil, kaynağını ve imzasını doğrulayarak kabul etmek, güncelleme ele geçirme saldırılarına karşı temel savunmadır.
Savunma, derleme hattı ve en az ayrıcalık
Saldırganın en değerli hedeflerinden biri, derleme hattınızdır (CI/CD), çünkü orayı ele geçiren, ürettiğiniz her yazılıma zararlı kod ekleyebilir. Derleme hattı sıkılaştırılmalı, erişimi en az ayrıcalık ilkesiyle sınırlanmalı, ve içindeki sırlar korunmalıdır. Derleme sırasında kullanılan anahtarların ve tokenların sızması, tüm tedarik zincirini tehlikeye atar, sızan sırların risklerini sızan API anahtarları ve sırlar yazımızda anlattık. Her bileşene ve her sürece yalnızca ihtiyacı olan en dar yetkiyi vermek, bir ele geçirmenin etkisini sınırlar.
Savunma, tedarikçi risk yönetimi
Tedarik zinciri yalnızca yazılım bağımlılıkları değildir, sistemlerinize erişimi olan her tedarikçi ve hizmet sağlayıcı da zincirin bir halkasıdır. Bir tedarikçi ele geçirilirse, onun erişimi sizin riskiniz olur. Bu yüzden tedarikçileri düzenli değerlendirmek, onlara verilen erişimi sınırlamak ve sözleşmelerle güvenlik yükümlülüklerini netleştirmek gerekir. Kişisel veri bir tedarikçi üzerinden sızarsa, bu da KVKK kapsamında bir ihlaldir, süreci KVKK veri ihlali bildirimi, 72 saat yazımızda anlattık.
Yapay zeka tedarik zinciri, yeni bir cephe
Tedarik zinciri riski artık yazılıma özgü değil, yapay zeka modellerini de kapsıyor. Hazır indirilen bir model ya da bir eğitim veri kümesi, kaynağında zehirlenmiş olabilir. Bir modeli körü körüne kullanmak, tıpkı bir yazılım bağımlılığına körü körüne güvenmek gibi risklidir. Yapay zeka model tedarik zinciri saldırılarını ve veri zehirlenmesini yapay zeka veri zehirlenmesi ve model güvenliği yazımızda ayrıntılı anlattık.
Gerçek dünya saldırı desenleri
Tedarik zinciri saldırıları teorik değildir, sektör son yıllarda birkaç yıkıcı deseni defalarca gördü. Bunları belirli olaylar olarak değil, tekrar eden kalıplar olarak anlamak önemlidir.
- Güncelleme sunucusu ele geçirme. Yaygın kullanılan bir kurumsal yazılımın güncelleme altyapısı ele geçirilir ve zararlı kod, resmi ve imzalı bir güncellemenin içine yerleştirilir. Binlerce kurum güncellemeyi güvenle kurar ve hepsi aynı anda etkilenir. Bu desen, tek bir noktanın ele geçirilmesinin neden bu kadar geniş bir yıkım yarattığını gösterir.
- Popüler paketin ele geçirilmesi. Milyonlarca projede kullanılan bir açık kaynak paketin bakımı, sosyal mühendislikle bir saldırgana devredilir ya da bir katkıcı hesabı ele geçirilir, ardından pakete zararlı kod eklenir. Paketi indiren her proje zararlı kodu alır.
- Sabırla yerleştirilen arka kapı. Bir saldırgan, uzun süre güvenilir bir katkıcı gibi davranıp kritik bir bileşene gizli bir arka kapı yerleştirir. Bu desen, saldırının aylar hatta yıllar sürebilen bir sabır işi olabileceğini gösterir.
- Bağımlılık karışıklığı. Bir kurumun iç paket adıyla aynı isimli bir paket genel bir depoya yüklenir, ve yanlış yapılandırılmış sistem dıştaki zararlı paketi indirir.
Bu desenlerin ortak dersi şudur, saldırgan sizin en zayıf noktanızı değil, en çok güvendiğiniz noktayı hedefler.
Tedarik zinciri güvenliği çerçeveleri
Tedarik zinciri güvenliği artık olgun çerçevelerle desteklenir, ve bir kurum bunlara dayanarak sistemli bir savunma kurabilir.
- NIST SSDF (Güvenli Yazılım Geliştirme Çerçevesi, SP 800-218). Güvenli yazılım geliştirmenin uçtan uca uygulamalarını tanımlar, bileşen doğrulamadan derleme güvenliğine kadar.
- SLSA (Yazılım Artefaktları için Tedarik Zinciri Seviyeleri). Bir yazılımın nasıl üretildiğine dair güven seviyelerini tanımlar, özellikle kaynak (provenance) ve derleme bütünlüğüne odaklanır.
- SBOM standartları (SPDX, CycloneDX). Yazılım malzeme listesini standart bir biçimde üretmenin yollarıdır, böylece bileşenler makine tarafından okunabilir ve taranabilir hale gelir.
Bu çerçeveler, tedarik zinciri güvenliğini gelişigüzel bir çabadan sistemli bir disipline dönüştürür. Yapay zeka tarafındaki karşılığını, yani model tedarik zinciri güvenliğini yapay zeka veri zehirlenmesi ve model güvenliği yazımızda anlattık.
Tedarik zinciri güvenliği kontrol listesi
Bir kurum, tedarik zinciri riskini şu maddeleri doğrulayarak kontrol altına alabilir.
- Yazılımınızın tüm bileşenlerini ve sürümlerini listeleyen güncel bir SBOM var mı?
- Bağımlılıklar, bilinen zafiyetlere ve zararlı paketlere karşı otomatik taranıyor mu (SCA)?
- Bağımlılık sürümleri sabitleniyor ve bütünlüğü doğrulanıyor mu?
- İndirilen paket ve güncellemelerin kaynağı ve imzası doğrulanıyor mu?
- Derleme hattı (CI/CD) sıkılaştırılmış, erişimi en az ayrıcalıkla sınırlı mı?
- Derleme sırasında kullanılan sırlar korunuyor mu?
- Sistemlerinize erişimi olan tedarikçiler düzenli değerlendiriliyor mu?
- Kullandığınız hazır yapay zeka modelleri ve veri kümelerinin kaynağı doğrulanıyor mu?
Bu listeyi tamamlayan bir kurum, tedarik zinciri saldırılarına karşı çok daha dayanıklıdır. DSET olarak yazılım ve tedarikçi zincirini bu çerçeveyle denetliyoruz.
Sıkça Sorulan Sorular
Tedarik zinciri saldırısı sadece büyük yazılım şirketlerini mi ilgilendirir? Hayır. Dış bir kütüphane, bir güncelleme ya da bir tedarikçi kullanan her kurum risk altındadır, ki bu neredeyse her kurum demektir. Aksine, bağımlılıklarını takip etmeyen küçük ekipler daha savunmasızdır.
Açık kaynak kullanmak güvensiz mi? Hayır. Açık kaynak, doğru yönetildiğinde güvenlidir ve şeffaflık avantajı sunar. Risk, açık kaynağı denetimsiz ve doğrulamadan kullanmakta, kaynağını takip etmemektedir. SBOM ve SCA ile güvenle kullanılır.
SBOM nedir ve neden gerekli? SBOM, bir yazılımın içindeki tüm bileşenleri ve sürümleri listeleyen bir yazılım malzeme listesidir. Gereklidir, çünkü bir bileşende zafiyet çıktığında onu kullanıp kullanmadığınızı ancak SBOM ile bilirsiniz.
Tedarik zinciri saldırısını nasıl fark ederim? Genelde doğrudan fark edilmez, çünkü meşru bir kanaldan gelir. Bu yüzden savunma tespit değil, önlemedir, bileşenleri doğrulamak, taramak ve kaynağını denetlemek. Anormal davranış izleme, sonradan bir ele geçirmeyi yakalayabilir.
Kaynaklar
- NIST SP 800-218, Secure Software Development Framework (SSDF): https://csrc.nist.gov/pubs/sp/800/218/final
- CISA, Yazılım Tedarik Zinciri Güvenliği: https://www.cisa.gov/
- OWASP, Software Component Verification Standard: https://owasp.org/www-project-software-component-verification-standard/
- SLSA, Supply chain Levels for Software Artifacts: https://slsa.dev/
Kurumunuzun yazılım ve tedarikçi zincirini denetlemek, SBOM ve bağımlılık güvenliği kurmak için DSET ile iletişime geçin.
Kimliğinizi doğrulayın
Yetkilendirilmiş erişim alanı. Tüm giriş denemeleri kayıt altına alınır.