🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónLeer un script de shell con ojo de auditor
5 tareas · 40 min · Principiante
Los pipelines están llenos de scripts de shell escritos con prisa. Leerlos bien no exige ser programador: exige hacer siempre las mismas preguntas. ¿Se detiene ante un error? ¿Qué variable entra sin comillas? ¿De dónde se descarga lo que se ejecuta? Con el script de despliegue web de Molinos Zarzuela, una empresa ficticia, lees línea a línea sin ejecutar nada.
Objetivo de la sala
Los pipelines están llenos de scripts de shell escritos con prisa. Leerlos bien no exige ser programador: exige hacer siempre las mismas preguntas. ¿Se detiene ante un error? ¿Qué variable entra sin comillas? ¿De dónde se descarga lo que se ejecuta? Con el script de despliegue web de Molinos Zarzuela, una empresa ficticia, lees línea a línea sin ejecutar nada.Por defecto, un script de shell sigue adelante aunque un comando falle, trata una variable sin definir como una cadena vacía y da por buena una tubería si solo su último paso funciona. Tres opciones cambian esto: set -e detiene el script cuando un comando falla, set -u convierte el uso de una variable sin definir en un error, y set -o pipefail hace que una tubería falle si falla cualquiera de sus pasos.
No son una garantía (hay casos en los que -e no actúa, como dentro de una condición), pero su ausencia es la primera señal de un script que puede «tener éxito» con medio trabajo hecho. El auditor la busca en las primeras líneas.
Responde para continuar
¿Qué consigue poner set -euo pipefail al principio de un script?
Ver pista de ayuda
Son tres comportamientos: fallos, variables y tuberías.
Una variable sin comillas y sin valor es una bomba lenta: rm -rf $A/$B/* con $B vacía borra todo lo que cuelga de $A. Abre el script de despliegue web y busca la orden de borrado. Una de las dos variables que usa nunca recibe un valor en todo el archivo ni se lee del entorno que el script declara.
Responde para continuar
Escribe el nombre de la variable usada en el borrado con rm -rf que el script nunca define.
Ver pista de ayuda
Con grep rm desplegar-web.sh localizas el borrado.
El patrón curl ... | bash descarga un script y lo ejecuta en el acto, con los permisos de quien lanza el pipeline. Si el origen se ve alterado en el camino (aquí, además, la dirección es http, sin cifrar) o el propio servidor cambia el archivo, el pipeline ejecuta lo que le entreguen, sin que nadie haya revisado qué es.
Localiza ese patrón en el script.
Responde para continuar
Escribe el nombre del script que el programa descarga y ejecuta directamente con bash.
Ver pista de ayuda
Busca con grep la palabra bash en el script.
chmod 777 abre una carpeta o un archivo a lectura, escritura y ejecución para cualquier cuenta del equipo. En un servidor web, una carpeta donde los usuarios dejan archivos, con ese permiso, es un clásico: lo que un usuario sube puede quedar con capacidad de ejecutarse. Busca ese cambio de permisos en el script.
Responde para continuar
Escribe el nombre de la carpeta a la que el script da permiso 777.
Ver pista de ayuda
grep chmod desplegar-web.sh te lleva a la línea.
La corrección de curl | bash no es «prohibir curl». Es separar el acto de descargar del de ejecutar para poder comprobar entre los dos que lo recibido es lo esperado, como se hace con cualquier artefacto del pipeline.
Responde para continuar
¿Cómo se corrige la descarga que se ejecuta de inmediato?
Ver pista de ayuda
Falta un paso de comprobación entre bajar y ejecutar.
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.