🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónComandos del sistema construidos con datos del usuario
5 tareas · 40 min · Principiante
Casi todas las aplicaciones llaman alguna vez a un programa del sistema: convertir una imagen, generar una hoja de cálculo, firmar un documento. La diferencia entre una llamada corriente y un hallazgo grave está en una sola decisión del código: si el programa se invoca con sus argumentos en una lista o si se le entrega una cadena entera al intérprete de órdenes del sistema. Esta sala lee el inventario de llamadas de Editorial Cachipay, el registro de procesos que produjo el propio sistema y la tabla de permisos de cada usuario, y termina midiendo el impacto con lo que ese usuario puede hacer. No se ejecuta nada: se lee lo que ya ocurrió.
Objetivo de la sala
Casi todas las aplicaciones llaman alguna vez a un programa del sistema: convertir una imagen, generar una hoja de cálculo, firmar un documento. La diferencia entre una llamada corriente y un hallazgo grave está en una sola decisión del código: si el programa se invoca con sus argumentos en una lista o si se le entrega una cadena entera al intérprete de órdenes del sistema. Esta sala lee el inventario de llamadas de Editorial Cachipay, el registro de procesos que produjo el propio sistema y la tabla de permisos de cada usuario, y termina midiendo el impacto con lo que ese usuario puede hacer. No se ejecuta nada: se lee lo que ya ocurrió.Cuando un programa se lanza con su nombre y una lista de argumentos, el sistema operativo entrega cada argumento en su casilla y nadie los vuelve a leer: lo que haya dentro de uno de ellos es contenido, no sintaxis. Cuando en cambio se entrega una sola cadena al intérprete de órdenes, ese intérprete la analiza entera antes de ejecutar nada, y los caracteres que para él significan algo —separar órdenes, encadenar, redirigir— hacen su trabajo vengan de donde vengan.
Por eso la revisión no empieza preguntando qué programa se llama, sino cómo se le llama. En el catálogo de MITRE la debilidad es CWE-78, y su mitigación principal es exactamente esa: evitar el intérprete y pasar los argumentos por separado.
Responde para continuar
¿Por qué pasar los argumentos en una lista evita la causa del fallo?
Ver pista de ayuda
Pregúntate quién analiza el texto en cada una de las dos formas.
El inventario marca la forma de llamada de cada tarea que usa un programa externo. Empieza por el recuento: cuántas de las cinco entregan una sola cadena al intérprete del sistema. Ese número es el tamaño de la superficie; después se mira cuál de ellas recibe algo que escribe una persona.
Responde para continuar
¿Cuántas llamadas del inventario entregan una sola cadena al intérprete de órdenes?
Ver pista de ayuda
Ejecuta `SELECT id, tarea, dato_que_entra FROM llamadas WHERE forma_de_llamada = 'una sola cadena que pasa por el interprete'` y cuenta las filas.
De las llamadas que pasan por el intérprete, una recibe un dato que genera la propia aplicación a partir de su catálogo y otra recibe lo que teclea una persona. Solo la segunda es un hallazgo: en la primera no hay nadie de fuera que pueda decidir el contenido de la cadena, aunque la forma de llamar sea igual de mala y convenga mencionarla como deuda técnica.
Esa distinción —forma peligrosa más dato controlable— es la que hay que escribir en el informe para que nadie la discuta.
Responde para continuar
Escribe el identificador de la llamada que arma la cadena con un dato que teclea una persona.
Ver pista de ayuda
Ejecuta `SELECT * FROM llamadas` y cruza la forma de llamada con el origen del dato.
Un hallazgo de este tipo se valora por lo que podría hacer el proceso, y eso lo dice el usuario con el que corre, no el fallo en sí. El registro de procesos del sistema dice qué usuario lanzó cada tarea; la tabla de permisos dice qué puede ese usuario. Las dos juntas convierten una línea de código en un párrafo de impacto que se sostiene.
Responde para continuar
Escribe el usuario con el que corre el proceso de la tarea del hallazgo.
Ver pista de ayuda
Ejecuta `SELECT * FROM procesos` y busca la tarea de la pregunta anterior.
La corrección principal es quitar el intérprete de en medio: llamar al programa con sus argumentos en una lista. Si el valor que llega decide qué programa o qué modo se usa, además hace falta una lista cerrada de opciones permitidas. Y como tercera capa, el proceso debería correr con un usuario que solo pueda lo que esa tarea necesita, para que el día que alguien encuentre otra vía el daño sea menor.
Las tres se escriben, pero en ese orden: la primera quita la causa y las otras dos reducen el daño.
Responde para continuar
¿Cuál es la corrección principal del hallazgo del informe nocturno?
Ver pista de ayuda
Dos de las tres son capas que reducen el daño; una quita la causa.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.