GitHub, kötü amaçlı paketlere ilişkin Dependabot uyarılarının kapsamını npm ekosisteminden sekiz ekosisteme genişletti. Bunun ardından GitHub Advisory Database, OpenSSF’nin kötü amaçlı paketlere ayrılmış deposundaki verilere bağlandı. Yeni kapsam npm, PyPI, Maven, RubyGems, NuGet, Go, crates.io ve PHP Composer’ı içeriyor. Böylece JavaScript’in ötesindeki dilleri ve araçları kullanan projelerdeki kötü amaçlı bağımlılıklar tespit edilebiliyor.
Dependabot, yılın başlarında npm bağımlılıkları arasındaki kötü amaçlı yazılımları tespit etmeye başlamıştı. Yeni genişleme, her ekosistem için ayrı tespit sistemleri oluşturmak yerine OpenSSF kayıtlarının OSV biçiminde içe aktarılmasına dayanıyor. Yazıya göre OpenSSF deposu, 2023’teki lansmanından bu yana 15 binden fazla rapor içeriyor. Topluluk bildirimleri ve otomatik tespit kaynakları sayesinde büyümeye devam eden bu raporlar arasında ada benzerliği taşıyan paketler, bağımlılık karmaşası paketleri, hesap ele geçirmeleri ve kötü amaçlı önceden derlenmiş ikili dosyalar bulunuyor.
Kötü amaçlı paket verileri için birleşik içe aktarıcı
GitHub’ın tedarik zinciri güvenliği mühendisliği ekibi, genel uyarı depolarıyla kullanılan içe aktarıcıların modelini izleyen tek bir içe aktarıcı geliştirdi. İçe aktarıcı, son çalıştırmadan bu yana değişen dosyaları okuyor; herhangi bir kaydı veritabanına eklemeden önce zorunlu alanları, türleri ve biçimi OSV şemasına göre doğruluyor. Doğrulamadan geçemeyen kayıtlar otomatik olarak düzeltilip işleme alınmak yerine reddediliyor ve incelenmek üzere kayda geçiriliyor.
Doğrulamayı geçen kayıtlar; kaynak, tanımlayıcı ve mevcutsa CVE tanımlayıcısını içeren besleme girdilerine dönüştürülüyor. Ayrıca özgün kayıt, referans kopya olarak tamamen saklanıyor. İçe aktarıcı, kaynaklar arasındaki veri farklılıklarını da işliyor. Örneğin OpenSSF PyPI adını kullanırken GitHub veritabanı pip adını kullanıyor; etkilenen sürümler aralıklar yerine ayrı değerler olarak temsil edilebiliyor; bazı raporlarda kullanılabilir bir sürüm bulunmayabiliyor ve daha sonra yanlış olduğu anlaşılan raporlar geri çekilebiliyor.
Yinelenen kayıtları önleme ve yayımlama hattını koruma
GitHub’ın kendisi OpenSSF deposuna veri katkısında bulunduğu, GitHub’ın kötü amaçlı npm yazılımlarına ilişkin uyarıları da depoya aktarıldığı için ek bir sorun ortaya çıkıyor. Aynı verilerin yeniden içe aktarılmasını önlemek amacıyla içe aktarıcı, OSV’deki kayıt kaynak verilerine dayanıyor ve ghsa-malware etiketini taşıyan tüm girdileri hariç tutuyor; çünkü bunlar başlangıçta GitHub’dan geliyor. Yazıya göre her ay depoya ulaşan yeni npm raporlarının yarısından fazlası GitHub uyarılarına dayanıyordu. Bu nedenle söz konusu raporlar yeniden içe aktarma döngüleri olarak hariç tutuluyor.
Kötü amaçlı yazılım uyarıları, her rapor yayımlanmadan önce insan tarafından tek tek okunmadan otomatik olarak yayımlanıyor. Bunun nedeni, bir paketin kimlik bilgilerini çaldığı durumlarda uyarının birkaç gün gecikmesinin saldırgana ek zaman kazandırabilmesi. Bu uygulama, paket eşleşmelerinin, sürüm aralıklarının ve sorunun önem derecesinin genellikle insan tarafından doğrulanmasını gerektiren güvenlik açığı uyarılarından farklı.
Hatalı verilerle başa çıkmak için üç katman
- Toplu iş sınırları: Her çalıştırma, oluşturulabilecek uyarıların sayısı için yapılandırılabilir bir üst sınır belirliyor. Veriler bu sınırı aşarsa çalıştırma tamamen durduruluyor ve hiçbir şey yayımlanmıyor; gönderilen uyarıların kesin sayısı da bildiriliyor.
- Kaynak takibi: Her uyarı, malicious-packages deposundaki belirli bir işlemle ilişkilendiriliyor. Böylece olaylar sırasında raporun kaynağı belirlenebiliyor.
- Geri alma: Kirlenmiş veriler sızarsa her toplu iş tek bir birim olarak tanımlanıp geri alınabiliyor. Böylece uyarıların veritabanından elle kaldırılması gerekmiyor.
Kullanıcılar için etkinleştirme
Dependabot’daki kötü amaçlı bağımlılık uyarıları isteğe bağlı olarak kullanıma sunuldu. Bu özellik depo, kuruluş veya çalışma alanı güvenlik ayarlarından etkinleştirilebiliyor. Etkinleştirildikten sonra Dependabot, bağımlılıkları GitHub Advisory Database’deki kötü amaçlı yazılım uyarılarıyla eşleştiriyor ve mevcut uyarılarla geriye dönük eşleştirme de yapıyor.