L’ultimo lavoro su Rust per il kernel Linux è incentrato sulla preparazione del codice del kernel per varie mitigazioni di sicurezza della CPU. Recentemente, lo sviluppatore Miguel Ojeda ha inviato le ultime patch per implementare tali mitigazioni e, inoltre, abilitare il supporto di objtool per Rust.
Come riportato da Ojeda sulla pagina della patch: “Questa è una serie aggiornata per il supporto alle mitigazioni della CPU in Rust. Include anche la patch per abilitare objtool. Sarebbe utile applicarla presto, in modo da iniziare a eliminare gli avvertimenti (riceviamo già avvertimenti durante le build con IBT tramite vmlinux.o). Sono felice di occuparmene attraverso l’albero di Rust se i manutentori di x86 e objtool danno il loro “Acked-by”, o attraverso qualsiasi altro albero. Altrimenti, a questo punto, dovremmo rendere Rust esclusivo per le mitigazioni, il che non è l’ideale. Con questa serie, ancora una volta, x86_64 è privo di avvertimenti con objtool abilitato. Ho testato -O2/-Os e le versioni di Rust che supportiamo con -O2 (principalmente per la patch noreturn, che utilizza euristiche), così come IBT rispetto a no IBT (cioè eseguendo su singoli file oggetto rispetto a vmlinux). Ho fatto anche una build per arm64”.
Rust: maggiore sicurezza con mitigazioni per Retpolines, Rethunk e SLS
Come accennato, il focus è rivolto al passaggio dei flag del compilatore rilevanti per la compilazione del codice alla luce delle mitigazioni di Retpolines, Rethunk e Straight Line Speculation (SLS) gestite dal compilatore. Con queste patch, i flag appropriati saranno passati al compilatore Rust. In questo modo sarà possibile per garantire protezioni adeguate nelle mitigazioni di sicurezza che richiedono azioni da parte del compilatore.
Gli utenti che sono interessati alla gestione delle mitigazioni della CPU per il codice del kernel Rust Linux possono consultare le patch pubblicate. Ojeda spera di poter applicare queste patch al più presto per evitare gli avvisi di objtool presenti durante la compilazione del codice Rust del kernel.