🐹 Mustafa ile Öğreniyorum #23: Yazılım Tedarik Zincirinin Gizli Mayınları: Dependency Confusion ve Zararlı Paketler Yazılım geliştirmede tekerleği yeniden icat etmeyip açık kaynak paket kütüphanelerine (npm, PyPI vb.) güveniyoruz. Ancak saldırganların yazılım tedarik zincirine (Software Supply Chain) sızmak için kullandığı Dependency Confusion (Bağımlılık Karışıklığı) ve Typosquatting teknikleri, tek bir pip install veya npm install komutunu kurumsal bir felakete dönüştürebilir. 📌 Yazılım Tedarik Zinciri Nasıl Sabote Edilir? Typosquatting (Yazım Hatası Tuzakları): Popüler paket isimlerinin harf hatalı versiyonları (requests yerine reqeusts, colorama yerine clorama) halka açık kütüphanelere yüklenir. Geliştirici sehven yanlış yazdığında zararlı paket projeye dahil olur. Dependency Confusion (Sürüm Çakışması): Saldırganlar, büyük şirketlerin iç projelerinde kullandığı dahili (internal) paket isimlerini tespit eder. Aynı isimle public PyPI/npm sunucularında daha yüksek bir sürüm numarasıyla (v99.0.0) zararlı paket yayınlarlar. Paket yöneticisinin çözümleme davranışına ve registry yapılandırmasına bağlı olarak public paket tercih edilebilir ve zararlı kodun projeye dahil olmasına yol açabilir. Zararlı Post-Install Scriptleri: Paket yüklendiği an çalışan kurulum kancaları (hooks) vasıtasıyla geliştirici makinesindeki ortam değişkenleri (API key, AWS credential, SSH key) dışarı sızdırılır. 🛡 Tedarik Zinciri Güvenliği İçin 3 Kritik Savunma Katmanı Private Registry & Scoped Namespaces: Kurumsal paketlerinizi @sirket/paket-adi biçiminde kapsülleyin (scoped). Paket yöneticisini öncelikle şirket içi güvenli sunucuya (Nexus, JFrog vb.) bakacak şekilde konfigüre edin. Hash Pinning ve Lockfile Kullanımı: Yalnızca sürüm numarası belirtmek yetmez. package-lock.json veya poetry.lock dosyalarında paketlerin SHA-256 bütünlük karma (hash) değerlerini doğrulayın. SCA (Software Composition Analysis) ve Otomatik Tarama: CI/CD hatlarınıza Snyk, Trivy veya Socket gibi araçlar ekleyerek bağımlılıkları ve zararlı kod kalıplarını canlıya çıkmadan önce tarayın. 💻 Güvenli Bağımlılık Yapılandırması ve Hash Pinning Örneği Plaintext # ❌ ZAFİYETLİ (Sadece sürüm belirtilmiş, public PyPI'dan zararlı üst sürüm çekebilir) sirket-internal-pkg==1.2.0 requests==2.31.0 # ✅ GÜVENLİ (Private Index Önceliği ve SHA-256 Integrity Verification) --index-url https://nexus.sirket.com/repository/pypi/simple --no-index # Sadece doğrulanmış hash değerine sahip paketin yüklenmesine izin verilir requests==2.31.0 \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f O zaman 💬 Mustafa soruyor: Kurumsal projelerinizde tedarik zinciri güvenliğini nasıl sağlıyorsunuz? Private registry mimarisi mi kullanıyorsunuz yoksa CI/CD katmanında SCA araçlarıyla hash pinning mi yapıyorsunuz? Düşüncelerinizi yorumlarda paylaşın! 👇 Okuduğunuz için teşekkürler! Kendinize, verilerinize ve dijital zırhınıza çok iyi bakın! 🌼