Kees Cook, tidigare huvudsystemadministratör för kernel.org och ledare för Ubuntu Security Team, som nu arbetar på Google för att skydda Android och ChromeOS, har publicerat en uppsättning patchar med implementering av randomisering av stackförskjutningar vid hantering av systemanrop. Patcharna ökar säkerheten i kärnan genom att ändra placeringen av stacken, vilket gör attacker mot stacken betydligt mer komplicerade och mindre framgångsrika. Den initiala implementeringen stöder ARM64- och x86/x86_64-processorer.
Den ursprungliga idén med patchen kommer från PaX RANDKSTACK-projektet. År 2019 försökte Elena Reshetova, ingenjör på Intel, att skapa en implementation av denna idé som skulle kunna inkluderas i kärnan för Linux. Senare tog Kees Cook över initiativet och presenterade en implementation som är lämplig för huvudversionen av kärnan. Patcharna planeras att inkluderas i version 5.13. Läge kommer att vara avstängt som standard. För att aktivera det föreslås kernelparametern "randomize_kstack_offset=on/off" och inställningen CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Kostnaden vid aktivering av läget uppskattas till cirka 1% av förlusten i prestanda.
Kärnan i det föreslagna skyddet är valet av en slumpmässig stackförskjutning vid varje systemanrop, vilket komplicerar fastställandet av stackens layout i minnet, även om man får information om adresser, eftersom den grundläggande stackadressen förändras vid nästa systemanrop. Till skillnad från implementeringen av PaX RANDKSTACK genomförs randomiseringen i de föreslagna patcharna för kärnintegration inte i ett tidigt skede (cpu_current_top_of_stack), utan efter att strukturen pt_regs har ställts in, vilket gör det omöjligt att använda ptrace-baserade metoder för att fastställa det randomiserade förskjutningen under en långvarig systemanrop.
Källa: opennet.ru
