hacktricks/src/pentesting-web/dependency-confusion.md

46 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Bağımlılık Karışıklığı
{{#include ../banners/hacktricks-training.md}}
## Temel Bilgiler
Özetle, bir bağımlılık karışıklığıığı, 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ış**: **`reqests`** yerine `requests` 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 **iç** `company-requests` kütüphanesini içe aktarmak, ancak repo **kamuya açık repos** kontrol ederek **daha büyük versiyonlar** olup olmadığını kontrol eder.
## Sömürü
> [!WARNING]
> 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ı yüksek ihtimaldir. Eğer bir saldırgan bunu oluşturduysa, 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 ç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ı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 deposu** **yeni versiyonları dışarıdan kontrol etmeye** izin veriyorsa, kamuya açık olarak mevcut olan daha yeni bir versiyonu arayacaktır.\
Yani eğer bir **saldırgan** şirketin `requests-company` kütüphanesinin **versiyon 1.0.1** (küçük güncellemeleri kabul eder) kullandığını biliyorsa, `requests-company` **versiyon 1.0.2** kütüphanesini **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**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
AWS, bir kütüphanenin içsel veya dışsal olup olmadığını belirtmeye izin vererek, iç bağımlılıkların dışarıdan depolardan indirilmesini önleyerek bunu düzeltti.
## Açık Kütüphaneleri Bulma
[**bağımlılık karışıklığı hakkında orijinal yazıda**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) yazar, javascript projelerinin bağımlılıklarını içeren binlerce ifşa edilmiş package.json dosyasını aradı.
## Referanslar
- [https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
- [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
{{#include ../banners/hacktricks-training.md}}