hacktricks/pentesting-web/dependency-confusion.md

6 KiB
Raw Blame History

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

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

{% embed url="https://websec.nl/" %}

Temel Bilgiler

Özetle, bir bağımlılık karışıklığı zafiyeti, bir proje yanlış yazılmış bir kütüphaneyi kullandığında, var olmayan veya belirtilmemiş bir sürümle ve kullanılan bağımlılık deposunun güncellenmiş sürümleri toplamaya izin verdiğinde meydana gelir.

  • Yanlış yazılmış: requests yerine reqests içe aktar
  • Var olmayan: Artık var olmayan bir iç kütüphane olan company-loggingi içe aktar
  • Belirtilmemiş sürüm: Var olancompany-requests kütüphanesini içe aktar, ancak depo genel depolardan daha büyük sürümler var mı diye kontrol eder.

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ış & Var Olmayan

Şirketinizin iç olmayan bir kütüphaneyi içe aktarmaya çalıştığında, kütüphanelerin deposunun bunu genel depolarda arayacağı oldukça olasıdır. Bir saldırgan bunu oluşturduysa, kodunuz ve çalışan makineleriniz büyük olasılıkla tehlikeye girecektir.

Belirtilmemiş Sürüm

Geliştiricilerin kütüphanenin sürümünü belirtmemesi veya sadece bir ana sürümü belirtmesi oldukça 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 bilinen harici bir kütüphane ise (örneğin python requests), bir saldırgan pek bir şey yapamaz, çünkü requests adında bir kütüphane oluşturamaz (asıl yazar değilse).
Ancak, kütüphane içsel ise, bu örnekte olduğu gibi requests-company gibi, eğer kütüphane deposu dışarıdan da yeni sürümleri kontrol etmeye izin veriyorsa, genelde bulunan daha yeni bir sürüm arayacaktır.
Bu nedenle, bir saldırganın şirketin requests-company kütüphanesini 1.0.1 sürümü olarak kullandığını bildiğini varsayalım (küçük güncellemelere izin verir). O, requests-company kütüphanesini 1.0.2 sürümü olarak yayınlayabilir ve şirket iç kütüphanenin yerine bu kütüphaneyi kullanacaktır.

AWS Düzeltmesi

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

Zafiyetli Kütüphanelerin Bulunması

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

Referanslar

{% embed url="https://websec.nl/" %}

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