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

46 lines
5.1 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
{{#include ../banners/hacktricks-training.md}}
## Basic Information
Συνοπτικά, μια ευπάθεια εξάρτησης συμβαίνει όταν ένα έργο χρησιμοποιεί μια βιβλιοθήκη με **λάθος** όνομα, **ανύπαρκτη** ή με **μη καθορισμένη έκδοση** και το αποθετήριο εξαρτήσεων που χρησιμοποιείται επιτρέπει να **συγκεντρωθούν ενημερωμένες εκδόσεις από δημόσιες** αποθήκες.
- **Λάθος**: Εισαγωγή **`reqests`** αντί για `requests`
- **Ανύπαρκτη**: Εισαγωγή `company-logging`, μιας εσωτερικής βιβλιοθήκης που **δεν υπάρχει πια**
- **Μη καθορισμένη έκδοση**: Εισαγωγή μιας **εσωτερικής** **υπάρχουσας** βιβλιοθήκης `company-requests`, αλλά ο έλεγχος του αποθετηρίου **δημόσιων αποθηκών** για να δει αν υπάρχουν **μεγαλύτερες εκδόσεις**.
## Exploitation
> [!WARNING]
> Σε όλες τις περιπτώσεις, ο επιτιθέμενος χρειάζεται απλώς να δημοσιεύσει ένα **κακόβουλο πακέτο με το όνομα** των βιβλιοθηκών που χρησιμοποιεί η εταιρεία-θύμα.
### Misspelled & Inexistent
Αν η εταιρεία σας προσπαθεί να **εισαγάγει μια βιβλιοθήκη που δεν είναι εσωτερική**, είναι πολύ πιθανό το αποθετήριο βιβλιοθηκών να την αναζητά σε **δημόσιες αποθήκες**. Αν ένας επιτιθέμενος την έχει δημιουργήσει, ο κώδικας και οι μηχανές που τρέχουν είναι πολύ πιθανό να έχουν παραβιαστεί.
### Unspecified Version
Είναι πολύ συνηθισμένο για τους προγραμματιστές να **μην καθορίζουν καμία έκδοση** της βιβλιοθήκης που χρησιμοποιείται, ή να καθορίζουν μόνο μια **κύρια έκδοση**. Στη συνέχεια, ο διερμηνέας θα προσπαθήσει να κατεβάσει την **τελευταία έκδοση** που πληροί αυτές τις απαιτήσεις.\
Αν η βιβλιοθήκη είναι μια **γνωστή εξωτερική βιβλιοθήκη** (όπως η python `requests`), ένας **επιτιθέμενος δεν μπορεί να κάνει πολλά**, καθώς δεν θα μπορεί να δημιουργήσει μια βιβλιοθήκη που ονομάζεται `requests` (εκτός αν είναι ο αρχικός συγγραφέας).\
Ωστόσο, αν η βιβλιοθήκη είναι **εσωτερική**, όπως η `requests-company` σε αυτό το παράδειγμα, αν το **αποθετήριο βιβλιοθηκών** επιτρέπει να **ελέγχει για νέες εκδόσεις και εξωτερικά**, θα αναζητήσει μια νεότερη έκδοση που είναι διαθέσιμη δημόσια.\
Έτσι, αν ένας **επιτιθέμενος γνωρίζει** ότι η εταιρεία χρησιμοποιεί τη βιβλιοθήκη `requests-company` **έκδοση 1.0.1** (επιτρέποντας μικρές ενημερώσεις). Μπορεί να **δημοσιεύσει** τη βιβλιοθήκη `requests-company` **έκδοση 1.0.2** και η εταιρεία θα **χρησιμοποιήσει αυτή τη βιβλιοθήκη αντί** της εσωτερικής.
## AWS Fix
Αυτή η ευπάθεια βρέθηκε στο AWS **CodeArtifact** (διαβάστε τις [**λεπτομέρειες σε αυτή την ανάρτηση blog**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
Η AWS το διόρθωσε επιτρέποντας να καθοριστεί αν μια βιβλιοθήκη είναι εσωτερική ή εξωτερική, για να αποφευχθεί η λήψη εσωτερικών εξαρτήσεων από εξωτερικά αποθετήρια.
## Finding Vulnerable Libraries
Στην [**αρχική ανάρτηση σχετικά με την ευπάθεια εξάρτησης**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) ο συγγραφέας αναζήτησε χιλιάδες εκτεθειμένα αρχεία package.json που περιέχουν τις εξαρτήσεις έργων javascript.
## References
- [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}}