Resumen
El episodio (que el presentador numera como capítulo 83) trata sobre buenas prácticas de ciberseguridad aplicadas a ciencia de datos, tema poco discutido según los anfitriones. Parte del hackeo de la librería de compresión XZ, ocurrido unas dos semanas antes de la grabación, como ejemplo de ingeniería social paciente y de cómo gran parte de la infraestructura mundial depende de pocos mantenedores. Cuentan experiencias reales de cómo las restricciones de ciberseguridad (credenciales de corta duración, permisos, servidores) afectaron al trabajo de los equipos de datos, y aconsejan ser proactivo y dialogar con el equipo de ciberseguridad. Muestran cómo manejar contraseñas con variables de ambiente y archivos `.env` ignorados en git, y cómo usar BFG para borrar credenciales o archivos grandes del historial. Cierran explicando un proyecto interno que detectaba contraseñas filtradas con expresiones regulares sobre el historial de git, seguido de una limpieza automatizada. Recomiendan además usar gestores de contraseñas.
Capítulos
- 00:00IntroPresentan el tema: técnicas para protegerse a uno mismo y al equipo de publicar claves o API keys, y un proyecto para detectar claves filtradas. Hablan del principio de mínimo acceso y debaten si la ciberseguridad debe manejarse a nivel empresarial (más conveniente, con un equipo especialista que defina lineamientos) o por departamento para las prácticas más puntuales.
- 05:40Hack de librería XZ para compresión de archivosExplican que xz se usa para comprimir archivos en Linux (y Mac) y que la mayoría de los servidores corren Linux, por eso el hackeo es tan grave. Discuten brevemente por qué aún existen servidores Windows (programas que solo corren allí) y describen cómo un supuesto desarrollador fue ganándose la confianza del dueño del repositorio.
- 14:29Ingeniería social y táctica de "Jia Tan"Definen ingeniería social como usar la psicología para que otra persona haga lo que uno quiere. El atacante contribuyó durante unos dos años y, con presión de otras cuentas posiblemente inventadas, obtuvo el rol de mantenedor, metió commits maliciosos y logró que llegaran a Debian en pre-release; al menos robaba claves SSH. Insisten en la importancia de tener varias barreras (VPN, doble factor).
- 19:21Cómo la infraestructura del mundo depende de unas cuantas personasMuestran un meme sobre la infraestructura que depende de una sola persona. Cuentan que el ataque se detectó porque alguien de Microsoft, haciendo benchmarking, notó que una tarea pasaba de unos 300 ms a cerca de 500 ms más. Lo enlazan con una anécdota sobre soluciones "temporales" de Windows que duran décadas y con los MVP de modelos que nunca evolucionan.
- 22:12Story timeRelatan cómo pasaron de una época de libertad total (montar servidores y bases de datos propias) a restricciones crecientes por gobierno del dato y ciberseguridad: credenciales de 12 horas o de 1 hora sin aviso ni transición, pérdida de permisos de administrador, salida a internet limitada. Aconsejan ser proactivos, argumentar las necesidades ante ciberseguridad y llegar a acuerdos; cuentan una anécdota de un correo de alerta por ejecutar un comando en Linux.
- 33:01Cómo trabajar con contraseñas en variables de ambiente con .envMuestran en Python cómo leer contraseñas con `os.getenv` en vez de escribirlas en el código, y prefieren un archivo `.env` en el proyecto (en `.gitignore`) frente a variables del sistema por ser reproducible y fácil de compartir en equipo. Mencionan un `.gitignore` global, `load_dotenv`, una extensión de VS Code para ocultar valores del `.env`, y la idea de cifrar u ofuscar ese archivo; critican guardar claves en Excel.
- 45:30MemesSección de memes del Stream: Jupyter Notebook, razones para actualizar software, bloquear el computador al dejarlo desatendido (atajo Windows+L) y el meme de contraseñas repetidas. Se discute además cómo evitar filtraciones de datos sensibles en LLMs, especialmente con RAG, y la dificultad de filtrarlas en el entrenamiento o al responder.
- 54:03Que hacer cuando uno commitea una credencial y cómo limpiar el repo con BFGExplican que corregir y commitear no basta porque la contraseña sigue accesible en el historial. Muestran BFG (Big F***ing Gun): clonar con `--mirror`, ejecutarlo con Java para borrar un archivo o blobs grandes, hacer `reflog expire`, `gc`/prune y `push`. Advierten que cambian los hashes, que el último commit de la rama principal no se toca y que todo el equipo debe volver a clonar en lugar de hacer pull; recomiendan `push --force-with-lease`.
- 01:13:50Expresiones regulares aplicadas a encontrar credenciales filtradas en un repoEl proyecto de detección se basa en expresiones regulares y en exportar el historial de git con `git log` a un archivo de texto. Demuestran regex en regex101 (`+`, `*`, `?`, `.`, escape con `\`, grupos, rangos, look-behind) y señalan su utilidad para limpiar datasets y con `grep`.
- 01:22:56Flujo para la automatización de la detección y limpieza de filtrados de contraseñaDescriben el flujo: descargar repositorios en un bucle, detectar con regex dónde hay contraseñas, aplicar BFG, subir de vuelta y generar reportes. Notan que el último estado no se limpia con BFG, por lo que se avisaba a los dueños y se repetía semanalmente; los repos sin dueño los arreglaban ellos mismos. Lo ven útil tanto para Blue Team como para Red Team.
- 01:28:50CierreComentan que hackearon a su propio equipo de forma no maliciosa para concientizar. Quedan pendientes las contraseñas en navegadores como Chrome (se pueden ver cambiando el tipo de campo a texto) y la ofuscación frente a encriptación, hashing y encoding, tratada en un episodio anterior. Recomiendan usar un gestor de contraseñas (Bitwarden, 1Password, KeePass) y resumen los temas del episodio.