나는 데비안 시스템에 관한 문서를 읽고 있었는데 seccomp(2)
, 아래 문단에서 다음 문장을 우연히 발견했습니다:
setuid(2)
예를 들어 이러한 악의적인 필터는 호출자의 사용자 ID를 0이 아닌 값으로 설정하려고 시도할 때 실제로 시스템 호출을 수행하지 않고 대신 0을 반환하도록 할 수 있습니다 .
seccomp
위에서 설명한 내용을 달성하기 위해 필터를 어떻게 남용할 수 있습니까 ?
악성 필터가 를 허용하지 않으면 setuid(2)
프로세스가 SIGSYS
신호를 수신하고 종료될 가능성이 높으며 syscall은 실행되지 않습니다.
악성 필터가 허용하는 경우 setuid(2)
' execve(2)
d 프로그램은 사용자의 UID를 올바르게 변경합니다.
내가 무엇을 놓치고 있나요?
man seccomp
:
...
그렇지 않으면 SECCOMP_SET_MODE_FILTER 작업이 실패하고 errno에 EACCES가 반환됩니다. 이 요구 사항은 권한이 없는 프로세스가 악성 필터를 적용한 다음 를 사용하여 set-user-ID 또는 기타 권한이 있는 프로그램을 호출하여
execve(2)
잠재적으로 해당 프로그램을 손상시킬 수 없도록 보장합니다. (예를 들어 이러한 악의적인 필터는 호출자의 사용자 ID를 0이 아닌 값으로 설정하려고 시도하여setuid(2)
실제로 시스템 호출을 하지 않고 대신 0을 반환하도록 할 수 있습니다. 따라서 프로그램은 속여서 수퍼유저 권한을 유지하도록 할 수 있습니다. 실제로 권한을 떨어뜨리지 않았기 때문에 위험한 일을 하도록 영향을 미칠 수 있는 상황에서는.)...