SROP
·
Tips & theory
이론 시그널이 발생하면 커널 모드에서 실행되는데, 유저 모드의 내용을 보존하기 위해 레지스터에 값을 저장해두었다가 다시 가져오게 되며, 이를 이용해 임의의 코드를 실행할 수 있게 된다. 우선 시그널은 커널의 버전에 따라 do_signal arch_do_signal arch_do_signal_or_restart 의 이름의 함수로 시작되는데, syscall number에 따라 해당 시그널을 작동시킨다. 취약점 많은 syscall 중 특히 sigreturn이 취약한데, sigreturn 시스템 콜을 호출하면 restore_sigcontext 함수에 의해 스택의 데이터를 레지스터에 등록하게 되며, static bool restore_sigcontext(struct pt_regs *regs, struct sigc..