Fondul Latino-American pentru Software-ul Liber a publicat o versiune complet liberă a nucleului Linux 6.12 — Linux-libre 6.12-gnu, curățat de elemente de firmware și drivere care conțin componente nesigure sau părți de cod ale căror utilizări sunt limitate de producător. De asemenea, Linux-libre dezactivează funcțiile nucleului pentru încărcarea de componente externe nesigure care nu sunt incluse în livrarea nucleului și elimină mențiunile despre utilizarea componentelor nesigure din documentație.
Pentru curățarea nucleului de părți nesigure, proiectul Linux-libre a creat un script shell universal, care conține mii de șabloane pentru a determina prezența inserțiilor binare și pentru a exclude alertele false. De asemenea, sunt disponibile pentru descărcare patch-uri gata realizate, create pe baza utilizării scriptului menționat anterior. Nucleul Linux-libre este recomandat pentru utilizare în distribuții care respectă criteriile Fondului pentru SPU pentru construirea de distribuții GNU/Linux complet libere. De exemplu, Linux-libre este utilizat în distribuții precum Dragora Linux, Trisquel, Dyne:Bolic, gNewSense, Parabola, Musix și Kongoni.
În versiunea Linux-libre 6.12-gnu a fost adăugat cod pentru curățarea blob-urilor din driverele pentru SoC CPM/QE QMC, cipurile wireless Realtek 8852BE-VT, adaptoarele bluetooth Amlogic, adaptoarele de rețea amcc qt2025, senzorii aw96103/aw96105 și codec-urile TI TLV320AIC31XX. A fost efectuată o curățare suplimentară a blob-urilor în driverele pentru controlerele xHCI Renesas și Intel ISH (Integrated Sensor Hub) HID. A fost actualizat codul de eliminare a blob-urilor în driverele și subsistemele MHI PCI host, Adreno 620/621, r8169, Qualcomm q6v5 remoteproc, rtw8852c, rtw8922a, precum și în fișierele dts pentru cipurile ARM54 TI PRU și Qualcomm. Curățarea driverele pentru plăcile wireless ks7010 și subsistemul audio Intel SkyLake a fost oprită, deoarece aceste drivere au fost eliminate din compunerea nucleului.
Deosebit este remarcabilă identificarea într-unul dintre textele sursă a unui driver al codului obiect executabil, generat din texte sursă nepublicate și integrat sub formă de secvență de numere hexazecimale. Driverul problematic nu este menționat explicit, dar, având în vedere modificările, se referă la prezența microcodului shader în fișierul gfx_v9_4_3_cleaner_shader.h, care face parte din driverul AMDGPU. Prima astfel de inserție a fost identificată în kernelul 6.11 și apoi propusă de un dezvoltator pentru ștergere, deoarece textele sursă nu au fost furnizate (a apărut o situație de livrare sub licența GPL a unui program disponibil doar în format binar). Totuși, în kernelul 6.12, codul binar menționat a fost păstrat, iar în același driver a fost adăugată o altă astfel de inserție.
În plus, în anunțul Linux-libre 6.12 au fost menționate alte două evenimente:
- Pentru a fi inclus în cadrul kernelului, a fost propusă o corecție care blochează driverelor pentru laptopurile Tuxedo accesul la subsistemele kernelului, disponibile doar pentru codul sub licența GPLv2 (EXPORT_SYMBOL_GPL). Capacitatea de blocare a fost inițial introdusă pentru a limita legarea driverelor proprietare cu componentele kernelului Linux, exportate doar pentru module sub licența GPLv2, dar este ocolită cu succes prin crearea de module intermediare care transceie accesul driverului proprietar la API-urile necesare ale kernelului. În cazul driverelor Tuxedo, situația este inversă — deși driverelor Tuxedo se dezvoltă separat de kernel, acestea sunt livrate sub licența GPLv3, care, pe de o parte, nu este compatibilă cu GPLv2, dar, pe de altă parte, susține mai multe libertăți, de exemplu, protejează împotriva tivoizării.
Se remarcă faptul că compania Tuxedo a propus de mult timp schimbarea licenței pentru driverii săi, dar a continuat să furnizeze cod sub licența GPLv3 și, în același timp, a indicat în codul driverului macro-ul 'MODULE_LICENSE("GPL")' în loc de 'MODULE_LICENSE("GPL v3")' pentru a obține acces la toate subsistemele kernelului. Compania Tuxedo a acceptat critica și a schimbat licența la GPLv2+ pentru o parte din driverii săi. Modificarea a fost aplicată driverilor gxtp7380, ite_8291, ite_8291_lb, ite_8297, ite_8297, stk8321, tuxedo_compatibility_check, tuxedo_nb02_nvidia_power_ctrl și tuxedo_tuxi. Peste zece driveri nu au fost încă relicențiați, deoarece schimbarea licenței pe ele necesită obținerea acordului de la dezvoltatorii terți.
Utilizarea în cod a 'MODULE_LICENSE("GPL")' în loc de 'MODULE_LICENSE("GPL v3")' a fost explicată de un reprezentant Tuxedo prin lipsa unei clarificări în documentația kernelului, că markerul "GPL" nu poate fi folosit pentru licența GPLv3. De asemenea, acesta a menționat că compania intenționează să transfere driverele sale în nucleul principal Linux și că lucrează la rescrierea lor completă sub licența GPLv2, ținând cont de cerințele pentru componentele nucleului.
- Dezvoltatorii nucleului discută inițiativa de a adăuga un flag X86_BUG_OLD_MICROCODE, care semnalizează că în sistem este utilizată o versiune de microcod CPU nu foarte recentă. Atunci când acest flag este activat, se sugerează că sistemul să fie considerat ca având potențiale vulnerabilități necorectate. Încercările de a echivala starea sistemului cu microcod neactualizat cu situația în care există vulnerabilități reale necorectate în cod au fost criticate de unul dintre cei care susțin proiectul Linux-libre.
În opinia unui dezvoltator de la Linux-libre, nucleul nu ar trebui să limiteze dreptul utilizatorilor de a nu instala firmware-uri și microcoduri proprietare neverificate pe propriile dispozitive. Discuția despre vulnerabilități ar trebui să fie conectată la corecțiile specifice în anumite versiuni de firmware, și nu să se declare vulnerabile toate sistemele pe care nu este instalat cel mai recent microcod, fără a analiza dacă în acest sistem se manifestă vulnerabilități și dacă firmware-ul recent conține corecturi pentru vulnerabilități.
Sursa: opennet.ro
