Kees Cook, fost principal administrator de sistem la kernel.org și lider al echipei de securitate Ubuntu, acum angajat la Google pentru a asigura protecția Android și ChromeOS, a publicat un set de patch-uri care implementează randomizarea ofseturilor în stiva nucleului în timpul procesării apelurilor de sistem. Patch-urile cresc securitatea nucleului prin schimbarea amplasării stivei, făcând atacurile asupra stivei mult mai complexe și mai puțin reușite. Implementarea inițială suportă procesoare ARM64 și x86/x86_64.
Ideea inițială a patch-ului aparține proiectului PaX RANDKSTACK. În 2019, Elena Reshetova, inginer de la Intel, a încercat să creeze o implementare a acestei idei, potrivită pentru incluziunea în nucleul Linux de bază. Ulterior, Kees Cook a preluat inițiativa și a prezentat o implementare adecvată pentru versiunea principală a nucleului. Patch-urile sunt planificate pentru a fi incluse în versiunea 5.13. Modificarea va fi dezactivată implicit. Pentru activare, sunt propuse parametrul de linie de comandă a nucleului „randomize_kstack_offset=on/off” și setarea CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Costurile suplimentare la activarea modului sunt estimate la aproximativ 1% din pierderea performanței.
Esenta protecției propuse constă în alegerea unui ofset aleator al stivei la fiecare apel de sistem, ceea ce complică determinarea aranjamentului stivei în memorie, chiar și după obținerea datelor despre adrese, deoarece la următorul apel de sistem, adresa de bază a stivei se va schimba. Spre deosebire de implementarea PaX RANDKSTACK, în patch-urile propuse pentru incluziune în nucleu, randomizarea se efectuează nu în etapa inițială (cpu_current_top_of_stack), ci după setarea structurii pt_regs, ceea ce face imposibilă utilizarea metodelor bazate pe ptrace pentru a determina ofsetul randomizat în timpul unui apel de sistem lung.
Sursa: opennet.ro
