Dependency Confusion

HackTricks'i Destekleyin

Temel Bilgiler

Ö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.

Sömürü

Tüm durumlarda, saldırganın sadece kurban şirketin kullandığı kütüphanelerin adıyla kötü niyetli bir paket yayınlaması yeterlidir.

Yanlış Yazılmış & Mevcut Olmayan

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.

Belirtilmemiş Versiyon

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.

AWS Düzeltmesi

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.

Açık Kütüphaneleri Bulma

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ı.

Referanslar

HackTricks'i Destekleyin

Last updated