mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
46 lines
3.4 KiB
Markdown
46 lines
3.4 KiB
Markdown
# Bağımlılık Karışıklığı
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
|
||
## 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ış**: **`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}}
|