ΑρχικήsecurityΧρησιμοποιείτε αρχεία PAC; Προσοχή στο σφάλμα του πακέτου NPM

Χρησιμοποιείτε αρχεία PAC; Προσοχή στο σφάλμα του πακέτου NPM

Πρόσφατα, ο ανεξάρτητος προγραμματιστής λογισμικού Tim Perry, δημιουργός του HTTP Toolkit για υποκλοπή και εντοπισμό σφαλμάτων επισκεψιμότητας ιστού, αποφάσισε να προσθέσει υποστήριξη διακομιστή μεσολάβησης στο προϊόν του, το οποίο όπως πολλά λογισμικά αυτές τις μέρες, γράφεται χρησιμοποιώντας το Node.js.

PAC

Το Node.js είναι το έργο που έβγαλε τη JavaScript από το πρόγραμμα περιήγησής σας και την μετέτρεψε σε ένα ολοκληρωμένο σύστημα ανάπτυξης εφαρμογών, κάτι σαν την Java.

Δείτε επίσης: Google Chrome V8 JavaScript engine ευπάθεια: Κάντε άμεσα update

Μαζί με τον πυρήνα JavaScript που χρησιμοποιεί τη μηχανή V8 JavaScript από το Chromium της Google, το λογισμικό Node.js συνήθως βασίζεται επίσης στο NPM, στο διαχειριστή πακέτων Node και στο μητρώο NPM, ένα πραγματικά τεράστιο αποθετήριο εργαλείων και προγραμματισμού ανοιχτού κώδικα.

Το μητρώο NPM καλύπτει τα πάντα, από τη βασική μορφοποίηση κειμένου έως την πλήρη αναγνώριση προσώπου και σχεδόν οτιδήποτε υπάρχει ενδιάμεσα.

Αντί να γράψετε μόνοι σας ολόκληρο τον κώδικα στο έργο σας, ή ακόμα και το μεγαλύτερο μέρος του, απλώς αναφέρετε τα πρόσθετα πακέτα που θέλετε να χρησιμοποιήσετε και το NPM θα τα παραλάβει για εσάς, μαζί με τυχόν πρόσθετα πακέτα που χρειάζεται το πακέτο που έχετε επιλέξει και όλα τα υπόλοιπα πακέτα που χρειάζονται αυτά τα πακέτα, έως ότου τελικά εντοπιστεί και εγκατασταθεί αυτόματα κάθε κομμάτι πρόσθετου κώδικα που απαιτείται για την ολοκλήρωση του έργου.

Όπως μπορείτε να φανταστείτε, αυτό μπορεί να εξελιχθεί σε πιθανό εφιάλτη για την ασφάλεια. Η προσθήκη ενός μόνο πακέτου στο δικό σας έργο ενδέχεται να απαιτεί ένα σωρό πρόσθετα πακέτα, καθένα από τα οποία μπορεί να έχει γραφτεί από διαφορετικό άτομο που δεν γνωρίζετε.

Αυτή η μέθοδος είναι γνωστή ως dependency tree και μπορεί να είναι ιδιαίτερα επικίνδυνη. Ο ίδιος ο Perry ανακάλυψε αυτόν τον κίνδυνο πρόσφατα, όταν αποφάσισε να χρησιμοποιήσει ένα δημοφιλές πακέτο NPM που ονομάζεται Proxy-Agent για να παρέχει την υποστήριξη μεσολάβησης που ήθελε στο προϊόν HTTP Toolkit του.

Ο Perry εγκατέστησε και άρχισε να χρησιμοποιεί το Proxy-Agent και ολόκληρο το dependency tree χωρίς να κάνει ανασκόπηση των νεοαποκτηθέντων στοιχείων στο έργο του. Έτσι, συνάντησε ένα ελάττωμα ασφαλείας, που ονομάστηκε CVE-2021-23406, σε μια εξάρτηση μεσολάβησης που ονομάζεται Pac-Resolver, το οποίο είναι ένα δευτερεύον συστατικό που βοηθά τον κώδικά σας να αντιμετωπίσει τη διαδικασία PAC ή αυτόματη διαμόρφωση διακομιστή μεσολάβησης.

Δείτε ακόμα: Νέο toolkit δημιουργεί custom phishing σελίδες σε πραγματικό χρόνο

Τα αρχεία PAC, δεν αποτελούν μόνο λίστες αριθμών IP ή ονομάτων διακομιστών για δεδομένα όπου βρίσκονται οι επίσημοι διακομιστές μεσολάβησης του δικτύου σας. Προορίζονται να απορροφηθούν και να χρησιμοποιηθούν στο πρόγραμμα περιήγησής σας και ως εκ τούτου σχεδιάστηκαν σκόπιμα για να είναι πιο ευέλικτα από μια απλή λίστα στατικών δεδομένων.

Πράγματι, ένα αρχείο PAC αποτελείται από JavaScript που μπορεί να καθορίσει δυναμικά εάν χρειάζεται διακομιστής μεσολάβησης και αν ναι πού να τον βρείτε στο δίκτυο. Όπως σημειώνει ο Perry, η μορφή αρχείου PAC χρονολογείται ένα τέταρτο του αιώνα και εμφανίστηκε για πρώτη φορά ως «χαρακτηριστικό» στο πρόγραμμα περιήγησης Netscape.

Φυσικά, ο Perry δεν σχεδίαζε να εκτελέσει αρχεία PAC σε ένα πρόγραμμα περιήγησης, αλλά ως μέρος του λογισμικού HTTP Toolkit, το οποίο λειτουργεί ως κανονική εφαρμογή, δίνοντας ενδεχομένως στην JavaScript εκκίνηση πολύ μεγαλύτερης εμβέλειας και ισχύος αυτού του σεναρίου.

Ως εκ τούτου, αποφάσισε να ρίξει μια ματιά στον τρόπο με τον οποίο οι προγραμματιστές του κώδικα διαμόρφωσης διακομιστή μεσολάβησης που είχε επιλέξει είχαν αντιμετωπίσει τις επιπτώσεις στην ασφάλεια της ανάκτησης και εκτέλεσης εξωτερικής JavaScript.

Ανακάλυψε ότι ο κώδικας χρησιμοποίησε ένα στοιχείο κόμβου που ονομάζεται vm, συντομογραφία για την εικονική μηχανή, το οποίο σας επιτρέπει να ρυθμίσετε μια νέα παρουσία JavaScript ή κατάσταση, όπου δεν θα παρεμβαίνετε στον κώδικα που εκτελείται σε άλλες παρουσίες κόμβου στην εφαρμογή σας.

Αυτή είναι μια εύχρηστη προφύλαξη εάν θέλετε δύο μέρη του κώδικα σας να κάνουν ξεχωριστά πράγματα με τέτοιο τρόπο ώστε να μην μπορούν να πατήσουν το ένα το άλλο κατά λάθος.

Ο Perry συνειδητοποίησε ότι ο αρχικός προγραμματιστής, χρησιμοποιούσε τη βιβλιοθήκη vm τόσο για ασφάλεια προγραμματισμού όσο και για ασφάλεια γενικότερα, υποθέτοντας προφανώς ότι μια νέα παρουσία vm δεν ήταν μόνο ξεχωριστή από άλλες παρουσίες vm στην εφαρμογή, αλλά και αυστηρά sandboxed στο δικό του μικρό απομονωμένο κόσμο JavaScript.

Ο Perry επεξεργάστηκε γρήγορα πώς να χρησιμοποιήσει μια κανονική τεχνική προγραμματισμού JavaScript για να εκτελέσει κώδικα μέσα στη νέα παρουσία vm που είχε πλήρη πρόσβαση στα εξωτερικά δεδομένα της κύριας εφαρμογής του Node.js.

Τεχνικά, αυτό αποτελεί σφάλμα RCE στη διαδικασία διαμόρφωσης διακομιστή μεσολάβησης, όπου το RCE χρησιμοποιείται για απομακρυσμένη εκτέλεση κώδικα.

Δείτε επίσης: Το WooCommerce διορθώνει μια σοβαρή ευπάθεια

NPM κενό ασφαλείας

Το RCE σημαίνει ότι το αναξιόπιστο περιεχόμενο που προέρχεται από μη αξιόπιστη πηγή μπορεί να κάνει σκόπιμα κάτι ύπουλο που υποτίθεται ότι δεν επιτρέπεται, χωρίς να εμφανίζονται προειδοποιήσεις.

Η εκμετάλλευση αυτού του σφάλματος, συνήθως επιτρέπει την αλλαγή του επίσημου αρχείου PAC διακομιστή μεσολάβησης ενός ιδιωτικού δικτύου, ώστε να περιλαμβάνει JavaScript που έχει παγιδευτεί.

Τι μπορούμε να κάνουμε;

Εάν έχετε λογισμικό Node.js που χρησιμοποιεί Pac-Resolve, Pac-Proxy-Agent ή Proxy-Agent, βεβαιωθείτε ότι διαθέτετε την έκδοση 5.0.0 ή νεότερη για αυτά τα πακέτα.

Αναθεωρείτε τακτικά τις ενότητες Node.js στις οποίες βασίζονται τα προϊόντα σας. Θα πρέπει να λαμβάνετε υπόψη τον επιπλέον χρόνο και την τεχνογνωσία στη διαδικασία έκδοσης λογισμικού.

Εξετάστε τους περιορισμούς ασφαλείας των βιβλιοθηκών που χρησιμοποιείτε.

Μην θεωρείτε ότι τα πακέτα που χρησιμοποιούνται ευρέως είναι ασφαλή. Σφάλματα όπως το CVE-2021-23406 είναι πιθανό να μην αποκαλυφθούν για μεγάλο χρονικό διάστημα αν κάποιος δεν ψάξει γι’ αυτά.

Absenta Mia
Absenta Miahttps://www.secnews.gr
Being your self, in a world that constantly tries to change you, is your greater achievement

Εγγραφή στο Newsletter

* indicates required

FOLLOW US

LIVE NEWS