Ευπάθεια στο πακέτο Node-Netmask NPM που χρησιμοποιείται σε 270 χιλιάδες έργα

Το πακέτο NPM node-netmask, το οποίο έχει περίπου 3 εκατομμύρια λήψεις την εβδομάδα και χρησιμοποιείται ως εξάρτηση σε περισσότερα από 270 χιλιάδες έργα στο GitHub, έχει μια ευπάθεια (CVE-2021-28918) που του επιτρέπει να παρακάμπτει ελέγχους που χρησιμοποιούν τη μάσκα δικτύου για να προσδιορίσετε την εμφάνιση περιοχών διεύθυνσης ή φιλτραρίσματος. Το πρόβλημα διορθώθηκε στην κυκλοφορία του node-netmask 2.0.0.

Η ευπάθεια καθιστά δυνατή την αντιμετώπιση μιας εξωτερικής διεύθυνσης IP ως διεύθυνση από το εσωτερικό δίκτυο και αντίστροφα, και με μια συγκεκριμένη λογική χρήσης της μονάδας μάσκας κόμβου στην εφαρμογή για την πραγματοποίηση SSRF (πλαστογράφηση αιτημάτων από την πλευρά του διακομιστή), RFI (Remote File Inclusion) και LFI (Local File Inclusion) επιθέσεις ) για πρόσβαση σε πόρους στο εσωτερικό δίκτυο και συμπερίληψη εξωτερικών ή τοπικών αρχείων στην αλυσίδα εκτέλεσης. Το πρόβλημα είναι ότι σύμφωνα με την προδιαγραφή, οι τιμές συμβολοσειράς διευθύνσεων που ξεκινούν με μηδέν θα πρέπει να ερμηνεύονται ως οκταδικοί αριθμοί, αλλά η μονάδα node-netmask δεν το λαμβάνει υπόψη και τις αντιμετωπίζει ως δεκαδικούς αριθμούς.

Για παράδειγμα, ένας εισβολέας θα μπορούσε να ζητήσει έναν τοπικό πόρο καθορίζοντας την τιμή "0177.0.0.1", η οποία αντιστοιχεί στο "127.0.0.1", αλλά η λειτουργική μονάδα "node-netmask" θα απορρίψει το null και θα αντιμετωπίσει το 0177.0.0.1" ως " 177.0.0.1", το οποίο στην εφαρμογή κατά την αξιολόγηση κανόνων πρόσβασης, δεν θα είναι δυνατός ο προσδιορισμός ταυτότητας με το "127.0.0.1". Ομοίως, ένας εισβολέας μπορεί να καθορίσει τη διεύθυνση "0127.0.0.1", η οποία θα πρέπει να είναι πανομοιότυπη με την "87.0.0.1", αλλά θα αντιμετωπίζεται ως "127.0.0.1" στη λειτουργική μονάδα "node-netmask". Ομοίως, μπορείτε να εξαπατήσετε την επιταγή για πρόσβαση σε διευθύνσεις intranet καθορίζοντας τιμές όπως "012.0.0.1" (ισοδύναμο με "10.0.0.1", αλλά θα υποβληθεί σε επεξεργασία ως 12.0.0.1 κατά τον έλεγχο).

Οι ερευνητές που εντόπισαν το πρόβλημα αποκαλούν το πρόβλημα καταστροφικό και παρέχουν πολλά σενάρια επίθεσης, αλλά τα περισσότερα από αυτά φαίνονται εικαστικά. Για παράδειγμα, μιλάει για τη δυνατότητα επίθεσης σε μια εφαρμογή που βασίζεται στο Node.js που δημιουργεί εξωτερικές συνδέσεις για να ζητήσει έναν πόρο με βάση τις παραμέτρους ή τα δεδομένα του αιτήματος εισόδου, αλλά η εφαρμογή δεν ονομάζεται ή λεπτομερώς. Ακόμα κι αν βρείτε εφαρμογές που φορτώνουν πόρους με βάση τις καταχωρημένες διευθύνσεις IP, δεν είναι απολύτως σαφές πώς μπορεί να γίνει εκμετάλλευση της ευπάθειας στην πράξη χωρίς σύνδεση σε τοπικό δίκτυο ή χωρίς να αποκτηθεί ο έλεγχος των διευθύνσεων IP «κατοπτρισμού».

Οι ερευνητές υποθέτουν μόνο ότι οι κάτοχοι των 87.0.0.1 (Telecom Italia) και 0177.0.0.1 (Brasil Telecom) μπορούν να παρακάμψουν τον περιορισμό πρόσβασης στο 127.0.0.1. Ένα πιο ρεαλιστικό σενάριο είναι η εκμετάλλευση της ευπάθειας για την παράκαμψη διαφόρων μπλοκ λιστών από την πλευρά της εφαρμογής. Το ζήτημα μπορεί επίσης να εφαρμοστεί στην κοινή χρήση του ορισμού περιοχών intranet στη λειτουργική μονάδα NPM "private-ip".

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο