Η Anthropic αποκάλυψε μια κρίσιμη ευπάθεια (CVE-2026-98432) στη στοίβα TCP του πυρήνα. Linux, το οποίο επιτρέπει την απομακρυσμένη εκτέλεση κώδικα μέσω της αποστολής ειδικά κατασκευασμένων πακέτων. Έχει αναφερθεί ένα λειτουργικό exploit, το οποίο επιτρέπει την εκτέλεση κώδικα σε επίπεδο πυρήνα και την απομακρυσμένη απόκτηση δικαιωμάτων root στο σύστημα. Το exploit είναι κατάλληλο για επιθέσεις σε συστήματα με διεργασίες διακομιστή που δέχονται συνδέσεις μέσω υποδοχών δικτύου που υποστηρίζουν το πρωτόκολλο Multipath TCP (MPTCP). Η υποστήριξη MPTCP μπορεί να ενεργοποιηθεί σε βάση υποδοχής ανά δίκτυο, η οποία είναι η προεπιλογή στη βιβλιοθήκη προτύπων Go, ξεκινώντας από την έκδοση 1.24 του Go (Φεβρουάριος 2025).
Το προετοιμασμένο exploit μπορεί να χρησιμοποιηθεί με οποιαδήποτε εφαρμογή διακομιστή γραμμένη σε Go, συμπεριλαμβανομένου του διακομιστή HTTP Caddy, εφόσον μπορεί να στείλει πακέτα δικτύου στην υποδοχή ακρόασης που δημιουργεί. Δεδομένου ότι η ευπάθεια υπάρχει απευθείας στη στοίβα IPv4 και δεν αφορά συγκεκριμένα το MPTCP, είναι δυνατό να δημιουργηθούν exploits που λειτουργούν χωρίς να βασίζονται στο MPTCP, αλλά τέτοια exploits δεν έχουν ακόμη αποδειχθεί. Για παράδειγμα, είναι δυνατό να εκμεταλλευτείτε την ευπάθεια κατά την επεξεργασία αιτημάτων μετεγκατάστασης υποδοχής, η οποία είναι διαθέσιμη σε διαμορφώσεις με την παράμετρο net.ipv4.tcp_migrate_req=1 ή όταν χρησιμοποιείτε προγράμματα eBPF με την επιλογή BPF_SK_REUSEPORT_SELECT_OR_MIGRATE.
Το θέμα ευπάθειας προκαλείται από μια συνθήκη κούρσας που προκύπτει κατά την ταυτόχρονη επεξεργασία των αναμεταδιδόμενων αιτημάτων SYN κατά τη δημιουργία σύνδεσης TCP. Δεδομένου ότι η συνάρτηση tcp_v4_syn_recv_sock() μεταβιβάζει παραμέτρους από τη δομή ireq->ireq_opt στην θυγατρική υποδοχή μέσω μιας αναφοράς αντί να τις αντιγράφει, υπό ορισμένες συνθήκες προκύπτει μια κατάσταση όπου η μνήμη για τις δομές inet_opt και ireq_opt που περιέχουν τις παραμέτρους υποδοχής έχει ήδη ελευθερωθεί, αλλά οι σχετικές επιλογές υποδοχής συνεχίζουν να χρησιμοποιούνται (use-after-free).
Η απομακρυσμένη εκμετάλλευση επιτυγχάνεται με την αποστολή μιας σειράς χρονικά συγχρονισμένων αιτημάτων δικτύου. Η εκμετάλλευση εφαρμόζεται με επιτυχία σε πυρήνες που χρησιμοποιούν τυχαιοποίηση διευθύνσεων (KASLR), αλλά η επίτευξη του παραθύρου συνθήκης κούρσας απαιτεί σημαντικό χρόνο και μεγάλο αριθμό επαναλήψεων. Η εκμετάλλευση απλοποιείται από το γεγονός ότι η παράλειψη του παραθύρου συνθήκης κούρσας οδηγεί μόνο σε χειραψία, αντί για κατάρρευση του πυρήνα, επιτρέποντας απεριόριστες προσπάθειες. Στο πρωτότυπο της εκμετάλλευσης, η επίθεση χρειάστηκε περίπου μία ώρα - 48 λεπτά - για να προσδιοριστεί η διάταξη μνήμης και άλλα 5 λεπτά για να οργανωθεί η εκτέλεση κώδικα.
Δεν υπάρχουν ακόμη διαθέσιμες λύσεις που να εγγυώνται μια διόρθωση για το θέμα ευπάθειας—η εγκατάσταση μιας ενημέρωσης πυρήνα είναι η μόνη αξιόπιστη επιλογή. Το πρόβλημα εκδηλώνεται ξεκινώντας από τον πυρήνα. Linux 4.4 και διορθώθηκαν στις εκδόσεις 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.56, 7.2.10 και 7.3. Η κατάσταση των διορθώσεων ευπάθειας στις διανομές μπορεί να αξιολογηθεί σε αυτές τις σελίδες: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Μαλακό καπέλλο.
Οι συστάσεις για την αντιμετώπιση συγκεκριμένων μεθόδων εκμετάλλευσης που δεν μπλοκάρουν την ευπάθεια γενικά περιλαμβάνουν την απενεργοποίηση της υποστήριξης MPTCP και τον ορισμό της παραμέτρου sysctl του πυρήνα net.ipv4.tcp_migrate_req σε 0:
sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0
Για να προσδιορίσετε εάν υπάρχουν διεργασίες στο σύστημα που χρησιμοποιούν υποδοχές με
MPTCP, μπορείτε να χρησιμοποιήσετε τις εντολές:
εμφάνιση τελικού σημείου ip mptcp
Εμφανίζονται τα όρια ip mptcp
Για να απενεργοποιήσετε την υποστήριξη MPTCP σε προγράμματα Go, χρησιμοποιήστε τη σημαία "multipathtcp=0", η οποία μπορεί να οριστεί ορίζοντας τη μεταβλητή περιβάλλοντος "GODEBUG=multipathtcp=0". Για να απενεργοποιήσετε την υποστήριξη MPTCP κατά τη στιγμή της δημιουργίας, προσθέστε την εντολή "godebug multipathtcp=0" στο αρχείο go.mod. Στον κώδικα της εφαρμογής σας, μπορείτε να απενεργοποιήσετε το MPTCP χρησιμοποιώντας τις συναρτήσεις net.Dialer.SetMultipathTCP και net.ListenConfig.SetMultipathTCP.
Εκτός από το θέμα που συζητήθηκε, η Anthropic ανακοίνωσε επίσης μια σειρά από τοπικά εκμεταλλεύσιμα τρωτά σημεία στον πυρήνα. Linux, OpenBSD και FreeBSD που επιτρέπουν την πρόσβαση root στο σύστημα και την απόδραση από απομονωμένα κοντέινερ· ευπάθειες στο Chrome και το Safari που οδηγούν σε εκτέλεση κώδικα στο σύστημα κατά το άνοιγμα ειδικά σχεδιασμένων ιστοσελίδων· μια ευπάθεια στον πυρήνα Windows, που οδηγεί σε σφάλμα· ευπάθεια πλατφόρμας Android, το οποίο σας επιτρέπει να παρακάμψετε το κλείδωμα οθόνης και να αποκτήσετε πρόσβαση σε προσωπικές πληροφορίες και φωτογραφίες χωρίς να ξεκλειδώσετε τη συσκευή (η επίθεση αποδείχθηκε σε ένα smartphone Google Pixel 9).
Προσθήκη:
- Στο nginx, η δυνατότητα ενεργοποίησης της επιλογής IPPROTO_MPTCP για μια υποδοχή δικτύου ακρόασης υπάρχει από την έκδοση 1.29.7, αλλά δεν χρησιμοποιείται από προεπιλογή.
- Στο Lighttpd, η επιλογή ενεργοποίησης του MPTCP είναι διαθέσιμη από την έκδοση 1.4.76.
- Στο Apache httpd, προστέθηκαν ενημερώσεις κώδικα για την υποστήριξη του MPTCP στον κλάδο Apache httpd 2.5-HEAD το 2024.
- Στο systemd, προστέθηκε υποστήριξη για την ενεργοποίηση του MPTCP όταν ενεργοποιείται μέσω socket στην έκδοση 257.
- Στον Apache Traffic Server, η επιλογή ενεργοποίησης του MPTCP υποστηρίζεται από την έκδοση 9.2.4.
- Στο HAProxy, ξεκινώντας από την έκδοση 3.1.0, είναι διαθέσιμη η επιλογή "mptcp{,4,6}@" ".
- Στο Traefik, η ρύθμιση της σημαίας IPPROTO_MPTCP είναι ενεργοποιημένη από προεπιλογή από τις εκδόσεις 2.11.26, 3.4.2 και v3.5.0-rc1.
- Στο Valkey DBMS, ξεκινώντας από την έκδοση 9.0.0, είναι διαθέσιμες η επιλογή "--mptcp" και οι ρυθμίσεις "mptcp yes" και "repl-mptcp yes".
Πηγή: opennet.ru
