Estoy trabajando en una "aplicación" de binario raíz SUID que ejecuta el comando system("ls -la /dir") . Logré explotarlo al escribir un reemplazo malicioso ls que inicia un shell, y cambié $PATH de mi usuario para que se ejecute ls en lugar del que está en /bin .
Noté que ejecutarlo como usuario devuelve un shell de root mientras lo ejecuta con sudo "./example" usa la ruta de root y simplemente lista los archivos en dir. Por lo que sé, setuid hereda los privilegios del propietario (en este caso, la raíz) al usuario y sudo se ejecuta como raíz.
¿Cómo se llaman tales vulnerabilidades?
¿Cómo un desarrollador de aplicaciones parchearlo?
¿Hay alguna forma en que pueda forzar a los usuarios a usar sudo ./app para ejecutar un programa?
** el binario es un ejecutable estáticamente vinculado