Patches geïntroduceerd om Linux-kernelstackadressen willekeurig te maken voor systeemaanroepen

Kees Cook, voormalig hoofdsysteembeheerder van kernel.org en leider van het Ubuntu Security Team, nu bij Google bezig met het beveiligen van Android en ChromeOS, publiceerde een reeks patches om verschuivingen in de kernelstack willekeurig te maken bij het verwerken van systeemaanroepen. Patches verbeteren de kernelbeveiliging door de plaatsing van de stapel te veranderen, waardoor aanvallen op de stapel veel moeilijker en minder succesvol worden. De initiële implementatie ondersteunt ARM64- en x86/x86_64-processors.

Het oorspronkelijke idee voor de patch behoort tot het PaX RANDKSTACK-project. In 2019 probeerde Elena Reshetova, een ingenieur van Intel, een implementatie van dit idee te creëren die geschikt was voor opname in de belangrijkste Linux-kernel. Later werd het initiatief overgenomen door Kees Cook, die een implementatie presenteerde die geschikt was voor de hoofdversie van de kernel. Het is de bedoeling dat de patches worden opgenomen als onderdeel van release 5.13. De modus is standaard uitgeschakeld. Om dit in te schakelen, worden de kernelopdrachtregelparameter “randomize_kstack_offset=on/off” en de CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT instelling voorgesteld. De overhead van het inschakelen van de modus wordt geschat op ongeveer 1% prestatieverlies.

De essentie van de voorgestelde bescherming is het kiezen van een willekeurige stapeloffset voor elke systeemaanroep, wat het moeilijk maakt om de stapelindeling in het geheugen te bepalen, zelfs na het ontvangen van adresgegevens, aangezien de volgende systeemaanroep het basisadres van de stapel zal veranderen. In tegenstelling tot de PaX RANDKSTACK-implementatie wordt de randomisatie in de patches die zijn voorgesteld voor opname in de kernel niet uitgevoerd in de beginfase (cpu_current_top_of_stack), maar na het instellen van de pt_regs-structuur, wat het onmogelijk maakt om op ptrace gebaseerde methoden te gebruiken om de gerandomiseerde offset te bepalen tijdens een langdurige systeemoproep.

Bron: opennet.ru

Voeg een reactie