- Το
drm_gem_change_handle_ioctl, ένα DRM PRIME interface που ανέπτυξαν μηχανικοί της AMD για CRIU με ROCm, απενεργοποιείται στον πυρήνα Linux 7.1 λόγω αλληλουχίας αποτυχημένων διορθώσεων ασφαλείας. - Το CVE-2026-23149, που δημοσιεύτηκε τον Φεβρουάριο του 2026, επέτρεπε σε κώδικα χώρου χρήστη να προκαλεί kernel warnings αποστέλλοντας GEM handle μεγαλύτερο από INT_MAX.
- Η απενεργοποίηση επηρεάζει αποκλειστικά σενάρια checkpoint/restore για φορτία εργασίας AMD ROCm· η συγχώνευση δοκιμών (IGT tests) αποτελεί προϋπόθεση για την επανενεργοποίησή του.
Η ανάπτυξη του Linux 7.1 δεν περνά ήσυχα τις τελευταίες εβδομάδες πριν την κυκλοφορία της σταθερής έκδοσης. Ο David Airlie της Red Hat, που συντονίζει τα DRM pull requests για τον πυρήνα, περιγράφει τη φετινή εβδομαδιαία ροή διορθώσεων ως ιδιαίτερα βαριά — με bounds checks, memory leaks και UAF (use-after-free) σφάλματα να συσσωρεύονται, κυρίως στον οδηγό amdgpu.
Στο επίκεντρο όμως της τελευταίας DRM pull request για το Linux 7.1 βρίσκεται κάτι πιο συγκεκριμένο: η απενεργοποίηση του drm_gem_change_handle_ioctl(), ενός interface που είχαν αναπτύξει μηχανικοί της AMD τον προηγούμενο χρόνο.
Τι είναι το drm_gem_change_handle_ioctl και γιατί χρειαζόταν
Το συγκεκριμένο ioctl αποτελεί μέρος του DRM PRIME interface — του μηχανισμού που επιτρέπει την κοινή χρήση αντικειμένων buffer μεταξύ διεργασιών και οδηγών στο Linux. Η λειτουργία του είναι να επανεκχωρεί GEM handles (αριθμητικά αναγνωριστικά αντικειμένων γραφικών στη μνήμη) σε υπάρχοντα buffer objects.
Η AMD ανέπτυξε αυτό το interface στο πλαίσιο της υποστήριξης του CRIU (Checkpoint/Restore In Userspace) για φορτία εργασίας ROCm. Ο στόχος ήταν πρακτικός: να μπορεί κάποιος να «παγώσει» μια εκτελούμενη εφαρμογή ή container με φορτία επεξεργασίας ROCm, να αποθηκεύσει την κατάστασή του και να την επαναφέρει αργότερα — για παράδειγμα σε σενάρια live migration ή δημιουργίας snapshot.
CVE-2026-23149: Η αφετηρία των προβλημάτων
Στις αρχές του 2026 εντοπίστηκε η ευπάθεια CVE-2026-23149, η οποία αφορά ακριβώς αυτό το ioctl: επειδή τα GEM buffer object handles στο userspace API είναι τύπου u32, αλλά η εσωτερική υλοποίηση χρησιμοποιεί idr_alloc() με εύρη τύπου int, η αποστολή ενός νέου handle με τιμή μεγαλύτερη από INT_MAX προκαλούσε trivially kernel warning. Η αρχική διόρθωση απέρριπτε νέα handles άνω του INT_MAX — το CVE δημοσιεύτηκε στις 14 Φεβρουαρίου 2026.
Η διόρθωση αυτή, ωστόσο, δεν αρκούσε. Ακολούθησαν τρεις ακόμη προσπάθειες επίλυσης race condition μεταξύ του gem_close και του gem_change_handle ioctl, καθεμία από τις οποίες εισήγαγε νέα σφάλματα — σύγχυση μεταβλητών, ελλιπή error handling και ασυνεπείς διορθώσεις στο IDR (Internal Data Representation) του πυρήνα.
Τέσσερις αποτυχίες και η απόφαση της Simona Vetter
Η Simona Vetter (γνωστή ως «Sima» στην κοινότητα DRM) ήταν από την αρχή επιφυλακτική απέναντι στο interface. Σύμφωνα με τον Airlie, «Sima was right» — η σωστή κίνηση από την αρχή θα ήταν η απενεργοποίησή του. Το πρόβλημα επιδεινώθηκε και από το γεγονός ότι δεν είχαν συγχωνευτεί έγκαιρα τα αντίστοιχα IGT tests (δοκιμές ολοκλήρωσης για τον πυρήνα), πράγμα που αποτελεί βασική απαίτηση για οποιαδήποτε νέα διεπαφή χρήστη στον Linux πυρήνα.
Στην τέταρτη και τελευταία προσπάθεια, η Vetter επέλεξε να διορθώσει το race condition με βάση εδραιωμένα μοτίβα του πυρήνα — μετονομασία της μεταβλητής σε new_handle για αποφυγή σύγχυσης, συγχώνευση του GEM object lookup με το two-stage idr_replace, και αναδιοργάνωση των error paths — και στη συνέχεια να απενεργοποιήσει πλήρως το ioctl ωσότου υπάρξουν τυποποιημένες δοκιμές και συναίνεση στην κοινότητα. Η Vetter σημείωσε χαρακτηριστικά ότι η συζήτηση μεταφέρθηκε στις δημόσιες mailing lists επειδή «the cat is out of the bag» και οι ιδιωτικές συζητήσεις δεν οδήγησαν σε αξιόπιστη λύση.
Επίπτωση και επόμενα βήματα
Η απενεργοποίηση του ioctl επηρεάζει αποκλειστικά σενάρια checkpoint/restore για φορτία εργασίας AMD ROCm — ένα εξειδικευμένο use case που δεν αφορά την πλειονότητα των χρηστών Linux με AMD GPU. Για την επανενεργοποίησή του, η κοινότητα ζητά: συγχώνευση επαρκών IGT tests, πλήρη επίλυση του race condition μέσω δημόσιας συζήτησης στις mailing lists, και γενική συναίνεση για την ορθότητα του κώδικα.
Η αλλαγή σημειώνεται επίσης για backport σε προηγούμενες σταθερές εκδόσεις του πυρήνα, ώστε να αντιμετωπιστεί το CVE-2026-23149 και στις ενεργές σειρές υποστήριξης.

TheLab Weekly Digest
Recommended Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now