usuario normal sin privilegios que pasa variables de entorno a /bin/login

usuario normal sin privilegios que pasa variables de entorno a /bin/login

Supongamos que en FreeBSD (o tal vez en Linux) hay un usuario normal sin privilegios (no superusuario). Y hay un telnet independiente (sé que telnet generalmente se ejecuta bajo inetd) ejecutándose bajo (propiedad de) este usuario. (Supongamos que no se está ejecutando ningún telnet original propiedad del root). Este servidor telnet está programado para que no verifique las variables de entorno ld_* antes de pasarlo a /bin/login, propiedad del root que tiene configurado setuid.

La pregunta sería: 1. ¿Funcionará este telnet? 2. Si funciona, ¿podrá siquiera pasar variables de entorno a /bin/login?

Respuesta1

Supongamos que en FreeBSD (o tal vez en Linux) hay un superusuario sin privilegios.

"Superusuario sin privilegios" es una contradicción en los términos; la palabra "superusuario" en sí misma significa un usuario que tiene todos los privilegios.

Este servidor telnet está programado para que no verifique las variables de entorno ld_*

No estoy seguro de si esto es relevante. El servidor telnet no tiene ningún privilegio especial, por lo que eliminar LD_*variables no es muy útil...

  1. ¿Funcionará este telnet? 2. Si funciona, ¿podrá siquiera pasar variables de entorno a /bin/login?

Funcionará parcialmente, pero probablemente no podrá conectarse al puerto Telnet estándar debido a que falta el privilegio CAP_NET_BIND_SERVICE.

Sí, podrá pasar variables de entorno login, como puede hacerlo cualquier otro proceso. Sin embargo, al menos en Linux, el cargador (ld-linux.so) descarta todas LD_*las variables antes de ejecutar un programa setuid, por lo que un setuid- loginno se vería afectado por ellas.

información relacionada