¿Cómo puede un filtro seccomp malicioso provocar que se intente utilizar `setuid(2)` para devolver 0, sin realizar realmente la llamada al sistema?

¿Cómo puede un filtro seccomp malicioso provocar que se intente utilizar `setuid(2)` para devolver 0, sin realizar realmente la llamada al sistema?

Estaba leyendo la documentación de seccomp(2)mi sistema Debian y me topé con la siguiente oración del párrafo siguiente:

Un filtro malicioso de este tipo podría, por ejemplo, provocar que un intento de utilizar setuid(2) para establecer los ID de usuario de la persona que llama en valores distintos de cero devuelva 0 sin realizar realmente la llamada al sistema.

¿Cómo se puede seccompabusar de los filtros para lograr lo descrito anteriormente?

Si el filtro malicioso no lo permite setuid(2), entonces el proceso probablemente recibirá una SIGSYSseñal y finalizará y la llamada al sistema no se ejecutará.

Si el filtro malicioso lo permite setuid(2), entonces el execve(2)programa cambiará correctamente los UID del usuario.

¿Qué me estoy perdiendo?

man seccomp:

...

De lo contrario, la operación SECCOMP_SET_MODE_FILTER fallará y devolverá EACCES en error. Este requisito garantiza que un proceso sin privilegios no pueda aplicar un filtro malicioso y luego invocar un ID de usuario establecido u otro programa privilegiado mediante execve(2), comprometiendo así potencialmente ese programa. (Un filtro malicioso de este tipo podría, por ejemplo, hacer que un intento de utilizar setuid(2) para establecer los ID de usuario de la persona que llama en valores distintos de cero devuelva 0 sin realizar realmente la llamada al sistema. Por lo tanto, se podría engañar al programa para que conserve privilegios de superusuario. en circunstancias en las que es posible influir en él para que haga cosas peligrosas porque en realidad no perdió privilegios).

...

información relacionada