Abstract:
Robust system call RBSTCALL and return RBSTRET instructions are executed by processors including execution circuitry and registers storing pointers to data structures in memory. The registers comprise segment registers, e.g. GS. For RBSTCALL the execution circuitry receives system call instructions from requesters which transfer control from a privilege level of the requester, e.g. ring 3 (user mode) or ring 0, to a privilege level of an operating system kernel, e.g. ring 0 (step 611). In response, the execution circuitry swaps the data structures that are pointed to by the registers between the requester and the operating system kernel in one atomic transition (step 612). Use of a SWAPGS instruction following a SYSCALL/SYSRET instruction is no longer needed. Privilege escalation attacks are avoided because using one single atomic instruction instead of a sequence prevents occurrence of faults in the middle. Faster RBSTCALL/RBSTRET assumes target ring is zero and removes segment validations.
Abstract:
Robust system call and system return instructions are executed by a processor to transfer control between a requester and an operating system kernel. The processor includes execution circuitry and registers that store pointers to data structures in memory. The execution circuitry receives a system call instruction from a requester to transfer control from a first privilege level of the requester to a second privilege level of an operating system kernel. In response, the execution circuitry swaps the data structures that are pointed to by the registers between the requester and the operating system kernel in one atomic transition.
Abstract:
Robuste Systemaufruf- und Systemrückstellungsbefehle werden von einem Prozessor ausgeführt, um eine Steuerung zwischen einer anfragenden Stelle und einem Betriebssystem-Kernel zu übertragen. Der Prozessor enthält einen Ausführungsschaltkreis und Register, die Zeiger zu Datenstrukturen im Speicher speichern. Der Ausführungsschaltkreis empfängt einen Systemaufrufbefehl von einer anfragenden Stelle, um die Steuerung von einer ersten Privilegstufe der anfragenden Stelle zur einer zweiten Privilegstufe eines Betriebssystem-Kernels zu übertragen. Als Reaktion wechsel der Ausführungsschaltkreis die Datenstrukturen, auf die die Register verweisen, zwischen der anfragenden Stelle und dem Betriebssystem-Kernel in einem ungeteilten Übergang.
Abstract:
An example processing system may comprise: a lower stack bound register configured to store a first memory address, the first memory address identifying a lower bound of a memory addressable via a stack segment; an upper stack bound register configured to store a second memory address, the second memory address identifying an upper bound of the memory addressable via the stack segment; and a stack bounds checking logic configured to detect unauthorized stack pivoting, by comparing a memory address being accessed via the stack segment with at least one of the first memory address and the second memory address.