Au fost publicate versiunile corective X.Org Server 21.1.12 și DDX (Device-Dependent X) xwayland 23.2.5, care permit rularea X.Org Server pentru a organiza executarea aplicațiilor X11 în medii bazate pe Wayland. În noua versiune a X.Org Server au fost remediate 4 vulnerabilități. O vulnerabilitate poate fi exploatată pentru a obține privilegii în sistemele în care serverul X rulează cu drepturi de root, precum și pentru executarea de cod de la distanță în configurațiile în care accesul este realizat prin redirecționarea sesiunii X11 folosind SSH.
Celelalte trei vulnerabilități pot duce la scurgerea conținutului memoriei server sau la închiderea bruscă a aplicației. Aceste trei vulnerabilități sunt exploatate prin utilizarea unei ordini de bytes diferite de cea a server. În acest sens, noua versiune oferă posibilitatea de a bloca conexiunile clienților din sisteme cu o altă ordine de bytes. Pentru dezactivare, se poate utiliza parametrul de configurare „AllowByteSwappedClients” sau opțiunea din linia de comandă „+byteswappedclients”.
Modificarea valorii implicite protejează împotriva posibilelor vulnerabilități neidentificate care manipulează ordinea de bytes. Esența acestor vulnerabilități este că modificarea ordinii de bytes pentru valori de dimensiune duce la interpretarea și citirea greșită sau la scrierea în memorie a unor dimensiuni mai mari decât bufferul alocat.
În prezent, se menține suportul pentru clienți cu o altă ordine de bytes, deși, în practică, conversia ordinii de bytes a fost utilizată extrem de rar în ultima vreme, deoarece stațiile de lucru pe care rulează serverul X sunt, de obicei, echipate cu procesoare cu ordine de bytes little-endian (de la byte-ul cel mai mic la cel mai mare) și conectarea la acestea a clienților X cu ordine big-endian, cum ar fi platforma s390x (IBM zSystems), este o raritate.
Problemele identificate:
- CVE-2024-31080, CVE-2024-31081, CVE-2024-31082 — citirea datelor dintr-o zonă în afara buffer-ului prin manipularea funcțiilor ProcXIGetSelectedEvents, ProcXIPassiveGrabDevice și ProcAppleDRICreatePixmap, care utilizează un câmp de dimensiune fără a ține cont de ordinea byte-urilor în valoarea trimisă de client. Prin urmare, în cazul diferențelor în ordinea byte-urilor între client și server, funcțiile returnează clientului mai multe date. Primele două probleme apar începând cu versiunea xorg-server-1.7.0 (2009) și a treia cu xorg-server-1.15.0 (2012).
- CVE-2024-31083 — accesarea memoriei deja eliberate (User-after-free) în funcția ProcRenderAddGlyphs, care apelează funcția AllocateGlyph() pentru a salva noi glyph-uri trimise de client. Funcția AllocateGlyph() returnează un nou glyph cu un contor de referințe zero (refcount=0), iar referințele repetate la glyph nu determină creșterea contorului, ceea ce face ca array-ul glyph_new să poată include mai multe intrări care indică spre un glyph fără contor de referințe. Atunci când funcția ProcRenderAddGlyphs() eliberează memoria alocată pentru glyph, în array rămâne și poate fi utilizat un exemplu suplimentar de pointer la glyph, pentru care memoria a fost deja eliberată. Problema apare în X.Org Server și nu afectează xwayland.
Sursa: opennet.ro
