¿Qué es lo que impide que un atacante compile su propio binario sudo personalizado que le permita ejecutarse con cualquier uid?
Hay un malentendido básico aquí. El programa se ejecuta, simplemente se detiene cuando se da cuenta de que no se está ejecutando como usuario root. Recompilar el programa para eliminar la comprobación solo le permitiría ejecutar la tarea como el usuario que ejecutó sudo, no root. En otras palabras, la verificación para ejecutarse como root en sudo es solo una verificación y diagnóstico de errores, no una característica de seguridad.
El malentendido es que los programas no tienen una capacidad especial para ejecutarse como otro usuario, el privilegio adicional es una propiedad de los permisos de archivo en el archivo. Cualquier programa con el conjunto de bits setuid se ejecutará como el propietario del archivo. Si tuviera que compilar su propio programa, el archivo sería propiedad de usted. Si bien puede establecer el bit setuid en su propio archivo, no puede cambiar la propiedad del archivo sin privilegios adicionales. Por lo tanto, establecer el bit setuid solo permitiría a otros ejecutar su programa como usted mismo.