Η ενημέρωση κώδικα έκτακτης ανάγκης για τη διαβόητη ευπάθεια στη βιβλιοθήκη Java Log4j δεν είναι αλάνθαστη. Το Apache Software Foundation κυκλοφορεί μια νέα έκδοση για να διορθώσει την ευπάθεια μια για πάντα.
Μια ευπάθεια σε μια εξαιρετικά δημοφιλή βιβλιοθήκη για Java κλονίζει το παγκόσμιο τοπίο πληροφορικής. Υπολογίζεται ότι η βιβλιοθήκη υπάρχει στα περισσότερα εταιρικά περιβάλλοντα.
Το Log4j χρησιμοποιείται κυρίως για την καταγραφή. Τα συμβάντα σε εφαρμογές μπορούν να καταχωρηθούν με σημειώσεις. Σκεφτείτε μια εκτύπωση των στοιχείων σύνδεσης μετά από μια προσπάθεια σύνδεσης. Ή, στην περίπτωση μιας διαδικτυακής εφαρμογής σε Java, το όνομα του προγράμματος περιήγησης στο οποίο προσπαθεί να συνδεθεί ένας χρήστης.
Τα τελευταία παραδείγματα είναι κοινά. Και στις δύο περιπτώσεις, ένας εξωτερικός χρήστης επηρεάζει το αρχείο καταγραφής που εξάγει το Log4j. Είναι δυνατό να γίνει κατάχρηση αυτής της επιρροής. Τα αρχεία καταγραφής οποιασδήποτε έκδοσης Log4j μεταξύ 13 Σεπτεμβρίου 2013 και 5 Δεκεμβρίου 2021 μπορούν να δώσουν εντολή στις εφαρμογές Java να εκτελέσουν τον κώδικα από έναν απομακρυσμένο διακομιστή σε μια τοπική συσκευή.
Από το 2013, το Log4j επεξεργάζεται ένα API: JNDI ή Java Naming and Directory Interface. Η προσθήκη του JNDI επιτρέπει σε μια εφαρμογή Java να εκτελεί κώδικα από έναν απομακρυσμένο διακομιστή σε μια τοπική συσκευή. Οι προγραμματιστές καθοδηγούν προσθέτοντας μια γραμμή λεπτομερειών σχετικά με τον απομακρυσμένο διακομιστή σε μια εφαρμογή.
Το πρόβλημα είναι ότι όχι μόνο οι προγραμματιστές μπορούν να προσθέσουν τον κανόνα στις εφαρμογές. Ας υποθέσουμε ότι το Log4j καταγράφει τα ονόματα χρήστη των προσπαθειών σύνδεσης. Όταν κάποιος εισάγει την προαναφερθείσα γραμμή στο πεδίο ονόματος χρήστη, το Log4j εκτελεί τη γραμμή και η εφαρμογή Java ερμηνεύει μια εντολή για την εκτέλεση του κώδικα στον καθορισμένο διακομιστή. Το ίδιο ισχύει για περιπτώσεις όπου το Log4j καταγράφει ένα αίτημα HTTPS. Εάν αλλάξετε το όνομα ενός προγράμματος περιήγησης στη γραμμή, το Log4j εκτελεί τη γραμμή, δίνοντάς του έμμεσα εντολή να εκτελέσει τον κώδικα όπως επιθυμεί.
Το έμπλαστρο έκτακτης ανάγκης μπορεί επίσης να είναι μη ασφαλές
Στις 9 Δεκεμβρίου, η ευπάθεια ήρθε στο φως σε μεγάλη κλίμακα. Το Apache Software Foundation, προγραμματιστής του Log4j, κυκλοφόρησε μια ενημέρωση κώδικα έκτακτης ανάγκης (2.15) για να διορθώσει την ευπάθεια. Έκτοτε, αποτελεί κορυφαία προτεραιότητα για τους προμηθευτές λογισμικού να επεξεργάζονται την έκδοση 2.15 και να παρέχουν μια ενημέρωση κώδικα για οργανισμούς.
Ωστόσο, η οργάνωση ασφαλείας LunaSec δηλώνει ότι το έμπλαστρο δεν είναι εντελώς στεγανό. Παραμένει δυνατή η προσαρμογή μιας ρύθμισης και η εκτέλεση καταγεγραμμένων εντολών JNDI.
Σημειώστε: η σχετική ρύθμιση πρέπει να προσαρμοστεί χειροκίνητα, έτσι ώστε οι μη τροποποιημένες παραλλαγές του 2.15 να είναι όντως ασφαλείς. Ωστόσο, η Luna Sec συνιστά στους προμηθευτές και τους οργανισμούς να ενημερώνονται στο Log4j 2.16. Το 2.16 δημοσιεύτηκε από το Apache Software Foundation ως απάντηση στο LunaSec. Η νέα έκδοση αφαιρεί εντελώς την ευάλωτη ρύθμιση, καθιστώντας αδύνατη τη δημιουργία των συνθηκών για κατάχρηση.