hacktricks/pentesting-web/dependency-confusion.md
2024-02-10 18:14:16 +00:00

5.6 KiB
Raw Blame History

Bağımlılık Karışıklığı

htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

Temel Bilgiler

Özet olarak, bir bağımlılık karışıklığı zafiyeti, bir projenin yanlış yazılmış, var olmayan veya belirtilmemiş bir sürümle bir kütüphaneyi kullandığı durumlarda ve kullanılan bağımlılık deposu, güncellenmiş sürümleri halka açık depolardan toplamaya izin veriyorsa ortaya çıkar.

  • Yanlış yazılmış: requests yerine reqests içe aktar
  • Var olmayan: Artık var olmayan bir dahili kütüphane olan company-loggingi içe aktar
  • Belirtilmemiş sürüm: Bu örnekte olduğu gibi dahili var olan company-requests kütüphanesini içe aktar, ancak depo halka açık depoları kontrol ederek daha büyük sürümler olup olmadığına bakar.

Sömürü

{% hint style="warning" %} Tüm durumlarda saldırganın sadece kurban şirketin kullandığı kütüphanelerin adını taşıyan kötü amaçlı bir paket yayınlaması yeterlidir. {% endhint %}

Yanlış Yazılmış ve Var Olmayan

Şirketinizin dahili olmayan bir kütüphaneyi içe aktarmaya çalıştığı durumlarda, büyük olasılıkla kütüphane deposu bunu halka açık depolarda arayacaktır. Eğer bir saldırgan bunu oluşturmuşsa, kodunuz ve çalışan makineleriniz büyük olasılıkla tehlikeye girecektir.

Belirtilmemiş Sürüm

Geliştiricilerin genellikle kullanılan kütüphanenin herhangi bir sürümünü belirtmemesi veya sadece bir ana sürümü belirtmesi çok yaygındır. Ardından, yorumlayıcı bu gereksinimleri karşılayan en son sürümü indirmeye çalışacaktır.
Eğer kütüphane, python requests gibi bilinen bir harici kütüphaneyse, bir saldırgan çok fazla bir şey yapamaz, çünkü requests adında bir kütüphane oluşturamaz (orijinal yazar değilse).
Ancak, bu örnekte olduğu gibi kütüphane dahili ise, requests-company gibi, eğer kütüphane deposu yeni sürümleri harici olarak kontrol etmeye izin veriyorsa, daha yeni bir sürümü halka açık olarak arayacaktır.
Bu nedenle, bir saldırgan şirketin requests-company kütüphanesini 1.0.1 sürümünü (küçük güncellemelere izin ver) kullandığını biliyorsa, requests-company kütüphanesini 1.0.2 sürümünü yayınlayabilir ve şirket dahili olan yerine bu kütüphaneyi kullanacaktır.

AWS Düzeltmesi

Bu zafiyet AWS CodeArtifact'da bulundu (bu blog yazısındaki detayları okuyun).
AWS, dahili bağımlılıkların harici depolardan indirilmesini önlemek için bir kütüphanenin dahili veya harici olup olmadığını belirtmeye izin vererek bunu düzeltti.

Zafiyetli Kütüphaneleri Bulma

Bağımlılık karışıklığı hakkındaki orijinal yazıda yazar, binlerce açığa çıkarılmış package.json dosyasını arayarak JavaScript projelerinin bağımlılıklarını buldu.

Referanslar

htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!