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
kütüphanesini içe aktarmak, 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ı muhtemeldir. Eğer bir saldırgan bunu oluşturmuşsa, kodunuz ve çalışan makinelerinizin büyük ihtimalle tehlikeye girecektir.
Geliştiricilerin kullandıkları kütüphanenin herhangi bir versiyonunu belirtmemesi veya sadece bir ana versiyon belirtmesi oldukça 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ın yapabileceği pek bir şey yoktur, çünkü requests
adında bir kütüphane oluşturamayacaktır (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)