Manual de administración de sistemas de UNIX y Linux: ¿Por qué las páginas de manual almacenadas en caché son un "riesgo para la seguridad"?

Manual de administración de sistemas de UNIX y Linux: ¿Por qué las páginas de manual almacenadas en caché son un "riesgo para la seguridad"?

ElManual de administración de sistemas UNIX y Linuxdice:

man mantiene un caché de páginas formateadas en /var/cache/man o /usr/share/man si se puede escribir en los directorios apropiados; sin embargo, esto supone un riesgo para la seguridad. La mayoría de los sistemas preformatean las páginas de manual una vez durante la instalación (ver catman) o nunca.

¿Cuáles son los "riesgos de seguridad" aquí?

Existe el riesgo de seguridad obvio de que alguien pueda alterar las páginas de manual para engañar a un usuario (novato) para que ejecute algo no deseado, como lo señalóUlrich Schwartz en su respuesta, pero estoy buscando otras formas de aprovechar esto. ¡Gracias!

Respuesta1

No es seguro permitir que los usuarios manipulen el contenido de las páginas de manual (o cualquier dato en realidad) que también serán utilizados por otros usuarios, porque existe el peligro deenvenenamiento de caché. Como dice el viejo chiste de BOFH:

Para aprender todo sobre su sistema, desde la raíz, use el comando "leer manual" con el interruptor "leer más rápido" como este: rm -rf /

(Para ser claro,noejecute este comando.) Pero si controlo el caché de la página de manual, puede escribir man rmpara ver una página de manual falsa almacenada en caché que le indica rmque en realidad es "rm - leer manual" y no "rm - eliminar archivos o directorios". O inclusosecuencias de escape del terminal de salida que inyectan código en su shell.

Respuesta2

Digamos que el sistema en cuestión es un servidor web. Digamos también que el administrador del servidor pone a disposición del público en general (o de una intranet corporativa) algún software instalado en el sistema a través de una página web. Podría ser tan simple como un redimensionador de imágenes, una calculadora o un diccionario.

Si el software tenía páginas de manual asociadas cuando se instaló, entonces el administrador, siendo la persona amable y considerada que es, podría decidir que poner esas páginas de manual a disposición de los usuarios del servicio web también sería una buena idea.

Entonces, el ícono 'Ayuda' en la página web inicia una secuencia de comandos que captura uno o más:almacenado en caché— páginas man y las envía al navegador del usuario.

Cualquier persona o código con acceso de escritura al directorio de caché puede modificar esos archivos para:

  • inyectar Javascript arbitrario que será ejecutado por los navegadores de los usuarios visitantes
  • recopilar datos de telemetría de todos los usuarios visitantes y reenviarlos a algún repositorio para su posterior procesamiento/perfilado
  • recopilar credenciales de autenticación, posiblemente incluso las credenciales de un usuario privilegiado del sistema (como el administrador)

Cualquier persona con imaginación y una moral/ética relajada puede abusar de cada uno de los anteriores de muchas, muchas maneras diferentes.

Respuesta3

Cada vez que se permite la escritura global en un directorio, se crea una falla de seguridad. Ignorar cuál es el propósito previsto del directorio y cómo se puede subvertir, simplemente permitir que se pueda escribir es un problema.

A continuación se muestran algunos posibles problemas no relacionados con la función del directorio:

  • Si no hay otros directorios en el sistema de archivos en los que el usuario pueda escribir, esto le proporcionaría a cualquier usuario una forma de usar espacio en ese sistema de archivos que de otro modo no podría usar.
  • Cualquier usuario podría guardar archivos en el directorio, llenando el sistema de archivos y provocando un ataque de denegación de servicio. Si este es el mismo sistema de archivos que /var/log, podría impedir que se escriban registros
  • Los archivos podrían estar ocultos en este directorio, fuera de las ubicaciones esperadas. Estos podrían persistir después de la eliminación de la cuenta y, si el sistema de archivos se llena misteriosamente, podría ser difícil encontrarlos.
  • Si se crean archivos o directorios con el mismo nombre que futuros archivos almacenados en caché, podría impedir el funcionamiento correcto del uso previsto para el directorio (incluso si el contenido de esos archivos no es malicioso en sí). Ajustar los permisos de esos archivos puede dificultar su reparación automática.

Respuesta4

La mayoría de las distribuciones modernas almacenan en caché las páginas de manual (mediante el procesamiento con troff) cuando se instala el paquete apropiado. Esto no es un problema.

El problema ocurre cuando los archivos man originales están presentes pero el caché está vacío (es decir, los archivos de caché no están pregenerados).

Hay dos maneras de lidiar con esto:

  1. Ejecute la página de manual a través de troffcada vezcomo el usuario
  2. Ejecute la página de manual a través de troff una vez comoraízy guárdelo en el directorio de caché

Para ejecutarse como root man sería necesario tener setuid. Si hubiera algún fallo de seguridad encualquier cosaPor ejemplo, al analizar la línea de comandos, el atacante podría obtener privilegios elevados.

Aquí está la fuente relevante:https://git.savannah.gnu.org/cgit/man-db.git/tree/src/man.c

Afortunadamente, todas las distribuciones principales ahora almacenan en caché las páginas de manual, por lo que no hay nada de qué preocuparse.

información relacionada