hacktricks/pentesting-web/dependency-confusion.md

73 lines
8.9 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.

# Dependency Confusion
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## Βασικές Πληροφορίες
Συνοπτικά, μια ευπάθεια στην εξάρτηση συμβαίνει όταν ένα έργο χρησιμοποιεί μια βιβλιοθήκη με **λάθος γραμματικό λάθος**, **μη ύπαρξη** ή με **μη καθορισμένη έκδοση** και το αποθετήριο εξαρτήσεων που χρησιμοποιείται επιτρέπει τη **συγκέντρωση ενημερωμένων εκδόσεων από δημόσια** αποθετήρια.
* **Λάθος γραμματικό λάθος**: Εισαγωγή **`reqests`** αντί για `requests`
* **Μη ύπαρξη**: Εισαγωγή `company-logging`, μια εσωτερική βιβλιοθήκη που **δεν υπάρχει πλέον**
* **Μη καθορισμένη έκδοση**: Εισαγωγή μιας **εσωτερικής υπάρχουσας** βιβλιοθήκης `company-requests`, αλλά το αποθετήριο ελέγχει **δημόσια αποθετήρια** για να δει αν υπάρχουν **μεγαλύτερες εκδόσεις**.
## Εκμετάλλευση
{% hint style="warning" %}
Σε όλες τις περιπτώσεις ο επιτιθέμενος απλώς χρειάζεται να δημοσιεύσει ένα **κακόβουλο πακέτο με το όνομα** των βιβλιοθηκών που χρησιμοποιεί η εταιρεία θύμα.
{% endhint %}
### Λάθος γραμματικό λάθος & Μη ύπαρξη
Αν η εταιρεία σας προσπαθεί να **εισάγει μια βιβλιοθήκη που δεν είναι εσωτερική**, είναι πολύ πιθανό το αποθετήριο των βιβλιοθηκών να την αναζητά σε **δημόσια αποθετήρια**. Αν ένας επιτιθέμενος την έχει δημιουργήσει, τον κώδικά σας και τις μηχανές που τρέχουν είναι πολύ πιθανό να διακινδυνευτούν.
### Μη καθορισμένη Έκδοση
Είναι πολύ συνηθισμένο για τους προγραμματιστές να **μην καθορίζουν καμία έκδοση** της χρησιμοποιούμενης βιβλιοθήκης, ή να καθορίζουν μόνο μια **κύρια έκδοση**. Στη συνέχεια, ο μεταφραστής θα προσπαθήσει να κατεβάσει τη **τελευταία έκδοση** που πληροί αυτές τις απαιτήσεις.\
Αν η βιβλιοθήκη είναι μια **γνωστή εξωτερική βιβλιοθήκη** (όπως το python `requests`), ένας **επιτιθέμενος δεν μπορεί να κάνει πολλά**, καθώς δεν θα μπορεί να δημιουργήσει μια βιβλιοθήκη με το όνομα `requests` (εκτός αν είναι ο αρχικός συγγραφέας).\
Ωστόσο, αν η βιβλιοθήκη είναι **εσωτερική**, όπως το `requests-company` σε αυτό το παράδειγμα, αν το **αποθετήριο της βιβλιοθήκης** επιτρέπει να **ελέγχει για νέες εκδόσεις και εξωτερικά**, θα αναζητήσει μια νεότερη έκδοση διαθέσιμη δημόσια.\
Έτσι, αν ένας **επιτιθέμενος γνωρίζει** ότι η εταιρεία χρησιμοποιεί τη βιβλιοθήκη `requests-company` **έκδοση 1.0.1** (επιτρέπει μικρές ενημερώσεις). Μπορεί να **δημοσιεύσει** τη βιβλιοθήκη `requests-company` **έκδοση 1.0.2** και η εταιρεία θα **χρησιμοποιήσει αυτήν τη βιβλιοθήκη αντί** της εσωτερικής.
## Διόρθωση AWS
Αυτή η ευπάθεια βρέθηκε στο AWS **CodeArtifact** (διαβάστε τις [**λεπτομέρειες σε αυτήν την ανάρτηση στο blog**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
Το AWS διόρθωσε αυτό επιτρέποντας να καθορίζετε αν μια βιβλιοθήκη είναι εσωτερική ή εξωτερική, για να αποφεύγετε τη λήψη εσωτερικών εξαρτήσεων από εξωτερικά αποθετήρια.
## Εύρεση Ευπάθειών Βιβλιοθηκών
Στην [**αρχική ανάρτηση για την ευπάθεια στην εξάρτηση**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) ο συγγραφέας αναζήτησε χιλιάδες αρχεία package.json που περιέχουν τις εξαρτήσεις έργων JavaScript.
## Αναφορές
* [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)
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>