Eu estava lendo a documentação seccomp(2)
do meu sistema Debian e me deparei com a seguinte frase do parágrafo abaixo:
Esse filtro malicioso pode, por exemplo, fazer com que uma tentativa de
setuid(2)
definir os IDs de usuário do chamador para valores diferentes de zero retorne 0 sem realmente fazer a chamada do sistema.
Como seccomp
os filtros podem ser abusados para alcançar o que está descrito acima?
Se o filtro malicioso não permitir setuid(2)
, o processo provavelmente receberá um SIGSYS
sinal e será encerrado e o syscall não será executado.
Se o filtro malicioso permitir setuid(2)
, o execve(2)
programa 'd alterará corretamente os UIDs do usuário.
o que estou perdendo?
man seccomp
:
...
Caso contrário, a operação SECCOMP_SET_MODE_FILTER falhará e retornará EACCES em errno. Este requisito garante que um processo sem privilégios não possa aplicar um filtro malicioso e, em seguida, invocar um set-user-ID ou outro programa privilegiado usando
execve(2)
, comprometendo potencialmente esse programa. (Esse filtro malicioso pode, por exemplo, fazer com que uma tentativa desetuid(2)
definir os IDs de usuário do chamador para valores diferentes de zero retorne 0 sem realmente fazer a chamada do sistema. Assim, o programa pode ser enganado e reter privilégios de superusuário em circunstâncias em que é possível influenciá-lo a fazer coisas perigosas porque na verdade não retirou privilégios.)...