Dependency Confusion
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Özetle, bir bağımlılık karışıklığı açığı, bir projenin yanlış yazılmış, mevcut olmayan veya belirtilmemiş bir versiyona sahip bir kütüphane kullanması ve kullanılan bağımlılık deposunun güncellenmiş versiyonları kamuya açık depolardan toplamasına izin vermesi durumunda meydana gelir.
Yanlış yazılmış: requests
yerine reqests
içe aktarımı
Mevcut olmayan: artık mevcut olmayan bir iç kütüphane olan company-logging
içe aktarımı
Belirtilmemiş versiyon: mevcut bir company-requests
iç kütüphanesini içe aktarma, ancak repo daha büyük versiyonlar olup olmadığını görmek için kamuya açık repos kontrol eder.
Tüm durumlarda, saldırganın sadece kurban şirketin kullandığı kütüphanelerin adıyla kötü niyetli bir paket yayınlaması yeterlidir.
Eğer şirketiniz iç kütüphane olmayan bir kütüphaneyi içe aktarmaya çalışıyorsa, kütüphaneler deposunun kamuya açık depolarda arama yapması yüksek ihtimaldir. Eğer bir saldırgan bunu oluşturmuşsa, kodunuz ve çalışan makineleriniz büyük ihtimalle tehlikeye girecektir.
Geliştiricilerin kullandıkları kütüphanenin herhangi bir versiyonunu belirtmemesi veya sadece bir ana versiyon belirtmesi çok yaygındır. Sonra, yorumlayıcı bu gereksinimlere uyan en son versiyonu indirmeye çalışacaktır.
Eğer kütüphane bilinen bir dış kütüphane ise (örneğin python requests
), bir saldırgan çok fazla şey yapamaz, çünkü requests
adında bir kütüphane oluşturamaz (eğer orijinal yazar değilse).
Ancak, eğer kütüphane içsel ise, bu örnekteki gibi requests-company
, eğer kütüphane reposu yeni versiyonları dışarıdan kontrol etmeye izin veriyorsa, kamuya açık olarak mevcut daha yeni bir versiyonu arayacaktır.
Yani eğer bir saldırgan şirketin requests-company
kütüphanesinin 1.0.1 versiyonunu kullandığını biliyorsa (küçük güncellemeleri kabul eder). O, requests-company
kütüphanesinin 1.0.2 versiyonunu yayınlayabilir ve şirket bu kütüphaneyi iç kütüphanesi yerine kullanacaktır.
Bu açık AWS CodeArtifact'ta bulundu (bu blog yazısında detayları okuyun). AWS, bir kütüphanenin içsel veya dışsal olup olmadığını belirtmeye izin vererek, iç bağımlılıkların dış reposlardan indirilmesini önleyerek bunu düzeltmiştir.
bağımlılık karışıklığı hakkında orijinal yazıda yazar, javascript projelerinin bağımlılıklarını içeren binlerce ifşa edilmiş package.json dosyasını aradı.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)