El llançament de la nova versió del nucli Linux 6.13 s'ha vist endarrerida a causa de problemes d'estabilitat generats per un canvi introduït per un empleat de Microsoft. S'esmenta que aquest canvi va ser acceptat a la branca principal el passat mes de novembre d'una manera que n'ha sorprès molts, ja que no va seguir les pràctiques habituals.
El pegat va ser enviat de manera no estàndard i aprovat sense rebre acusaments de rebut (ACK) per parell dels mantenidors de l'arquitectura x86, fet que constitueix una violació de les normes acceptades en el desenvolupament del nucli.
El pegat en qüestió va introduir suport per a l'ús de pàgines de memòria grans en mode ROX (només lectura i executable) en assignar memòria destinada a codi executable i la finalitat del pegat enviat era reforçar la seguretat del sistema en dificultar l'explotació de vulnerabilitats mitjançant l'execució de codi maliciós en memòria marcada com a només lectura.
L'ús de pàgines grans per mapejar àrees de text redueix la pressió iTLB i millora el rendiment.
Amplieu execmem_alloc() amb la capacitat d'usar pàgines grans amb permisos ROX com a memòria cau per a assignacions més petites. Per omplir la memòria cau, s'assigna una pàgina gran escrivible des de vmalloc amb VM_ALLOW_HUGE_VMAP, s'omple amb instruccions no vàlides i després es torna a mapejar com a ROX.
L'àlies de mapa directe d'aquesta pàgina gran s'exclou del mapa directe S'entreguen parts d'aquesta pàgina gran als que anomenen execmem_alloc() sense cap canvi en els permisos. perquè no contingui instruccions obsoletes.
S'esmenta que el retard en el llançament del nucli 6.13 es deu al fet que l'ús d'un memòria cau de pàgines de memòria executables grans en mode ROX va ser habilitat per defecte per als mòduls en sistemes x86_64.El canvi va abordar un problema tècnic important: l'assignació de pàgines en mode ROX per a codi executable que encara no estava completament preparat.
Això va permetre evitar la necessitat de reassignar temporalment les pàgines de manera ROX com a escriptura fins que els mòduls del kernel estiguessin llestos per a la seva execució. Tot i els beneficis previstos, però, els problemes d'estabilitat identificats posen en dubte la qualitat i la seguretat del pegat, cosa que porto a la necessitat d'estendre les proves abans del llançament definitiu.
I tal sembla que els desenvolupadors no es van equivocar, ja que durant la fase final de proves del nucli Linux 6.13, un enginyer d'Intel va detectar un problema crític que afectava el funcionament del sistema en algunes portàtils amb processadors basats en la microarquitectura Alderlake. El problema es manifestava en intentar reactivar el nucli des del mode de suspensió, un error particularment rellevant en dispositius mòbils.
x86: Deshabilitar la compatibilitat amb EXECMEM_ROX
El module_writable_address() va causar un desastre gegant.
alternative.c, sense esmentar que encara conté errors, alguns dels quals són notables.
Les variants del CFI fracassen i fracassen.Mike ha estat treballant en pegats per netejar tot això novament, però atesa la situació actual, això simplement no està llest.
Desactivar ara com ara, intentem novament en el proper cicle.
L'inconvenient va sorgir en compilar el nucli amb el compilador Clang i habilitar el mode de protecció CFI (Control Flow Integrity). Aquest mode està dissenyat per reforçar la seguretat en bloquejar manipulacions indegudes del flux de control, com les que ocorren en atacs que alteren punters de funció a la memòria. No obstant això, la interacció entre CFI i les noves optimitzacions introduïdes al nucli per al maneig de pàgines de memòria ROX (només lectura i executables) va resultar problemàtica.
el mecanisme EXECMEM_ROX, que permet utilitzar una memòria cau de pàgines de memòria executables marcades com a només lectura, semblava ser la causa arrel de les fallades observades en la reactivació del sistema. Com a solució temporal, els mantenidors d'Intel i AMD responsables de l'arquitectura x86 van proposar deshabilitar EXECMEM_ROX a la versió 6.13 del nucli. Això permetrà llançar el nucli mentre es treballa en un pegat definitiu que resolgui el problema sense comprometre l'estabilitat ni la seguretat.