
Compartir:
Yonatan ha estado involucrado en algunos proyectos impresionantes en la academia y la industria - desde C / C ++ a través de Matlab a PHP y javascript. Fue director de tecnología en Webiks y arquitecto de software en WalkMe. Actualmente es arquitecto de software en Vonage e instructor de egghead.
Cómo eliminar un token secreto de tu historial Git
Introducción
En este artículo, aprenderás cómo eliminar de forma segura los tokens de autenticación expuestos de todo el historial de tu repositorio Git utilizando BFGuna potente herramienta de limpieza. También entenderás los riesgos de seguridad de los secretos comprometidos y dominarás el proceso paso a paso para desinfectar tu repositorio de código y proteger los activos digitales de tu organización. ¡Vamos a empezar!
La inesperada alerta de seguridad
Imagínatelo: Eres desarrollador y estás inmerso en un importante sprint cuando, de repente, recibes un ticket de JIRA en tu bandeja de entrada. El asunto te da escalofríos: "Problema de seguridad crítico - Token NPM expuesto en el historial del repositorio".
El análisis de seguridad automatizado ha descubierto algo alarmante: un token de autenticación enviado accidentalmente al repositorio hace años, enterrado en commits de hace 4, 7 y 8 años. Puede parecer historia antigua, pero en el mundo de la ciberseguridad, los viejos secretos pueden ser bombas de relojería. Y tu CISO puede ser muy insistente en resolver estos problemas (con mérito...).
Vale, ya puedes dejar de imaginar porque esto nos ha pasado a nosotros en Vonage. Afortunadamente, puedes aprender de nuestra experiencia.
Los riesgos ocultos de los tokens expuestos
Un token de autenticación expuesto es algo más que un descuido menor. Representa una importante vulnerabilidad de seguridad que podría:
Permitir el acceso no autorizado a registros de paquetes privados
Exponer la infraestructura sensible de la empresa
Proporcionar un punto de entrada potencial para agentes maliciosos
Riesgo para la propiedad intelectual de la empresa
Infringir potencialmente los requisitos de cumplimiento
El daño a la reputación de una violación de la seguridad puede superar con creces la conveniencia momentánea de un token cometido apresuradamente.
Lo primero que hay que hacer en tal caso es "rotar" la(s) clave(s) secreta(s) implicada(s). Anularlas y crear otras nuevas. Pero el riesgo no acaba ahí, porque como alguien dijo en una discusión de un grupo de JavaScript, las viejas claves obsoletas podrían contener una pista sobre el propio algoritmo del generador de claves. No soy un experto en ciberseguridad (ni de lejos), así que me quedo con las palabras de los expertos. Entonces, ¿cómo nos deshacemos de la clave expuesta en el repositorio?
Entra en BFG: Tu mejor amigo para limpiar el historial de Git
¿La solución? BFG (Big Fast Git), una potente herramienta diseñada para limpiar los historiales de los repositorios Git de forma rápida y eficaz. Aquí tienes una guía paso a paso para la eliminación de tokens:
Dígale a todos los que están trabajando en el repositorio que retengan su trabajo durante unos minutos hasta que usted empuje sus cambios.
Descarga BFG y cd en su carpeta.
Clonar el repositorio con un espejo:
git clone --mirror https://github.com/your-name/your-repo.gitCopiaTe sugiero que lo hagas dos veces en dos carpetas diferentes para que tengas una copia de seguridad de tu repositorio "antiguo" si algo va mal.
Cree un archivo tokens.txt con la sintaxis de sustitución:
old_token1==>PLACE_HOLDER1 old_token2==>PLACE_HOLDER2 ...CopiaEsto le dirá a BFG que sustituya cualquier instancia de las fichas antiguas por sus marcadores de posición.
Un ejemplo sería:
ab23234-89723c-aa7b7c==>${NPM_TOKEN}CopiaEjecute BFG con el archivo de sustitución (asegúrese de que se encuentra en la carpeta principal del repositorio):
java -jar bfg-1.14.0.jar --replace-text tokens.txt your-repo.git --no-blob-protectionCopiaLimpiar el repositorio:
cd your-repo.git git reflog expire --expire=now --all && git gc --prune=now --aggressiveCopiaComprueba que el token ha sido reemplazado clonando la réplica local y "grepeándola":
cd .. && git clone your-repo.git && cd your-repo && git grep -n "REPLACE _WITH_YOUR_TOKENCopiaSi esto devuelve 0 resultados, significa que funcionó.
Fuerza los cambios:
cd your-repo.git git push --mirrorCopiaDiles a tus compañeros que busquen y apliquen los cambios:
git fetch git reset --hard origin/mainCopia
Ya está. Tu repositorio ya está limpio. A partir de ahora, supongo que la misma herramienta que te alertó sobre los tokens puede dar la alarma durante un proceso de RP antes de que el token se "extienda" a la rama principal. Asegúrate de que lo hace 😉
Consejos profesionales para la gestión de fichas
Nunca envíe tokens directamente a los repositorios
Utilizar variables de entorno o herramientas seguras de gestión de secretos
Implementar ganchos pre-commit para evitar commits accidentales de tokens.
Audit periódico del historial de repositorios
Rote las fichas periódicamente, sobre todo si sospecha que están expuestas.
Reflexiones finales
En una era de crecientes amenazas a la ciberseguridad, la gestión proactiva de repositorios no es sólo una buena práctica, sino una necesidad. Herramientas como BFG proporcionan a los desarrolladores potentes mecanismos para limpiar errores históricos y mantener la integridad de sus repositorios de código.
Aunque nos hemos centrado en la sustitución de fichas, BFG es una herramienta versátil capaz de:
Eliminación de archivos grandes del historial de repositorios
Limpieza de información sensible
Reducir el tamaño del repositorio
Saneamiento de commits antes de proyectos de código abierto
Si se adhiere a las razones por las que debe utilizar commits convencionalesBFG puede permitirte mejorar tus antiguos commits con un texto significativo sobre la versión y el registro de cambios.
Recuerda que en el desarrollo de software, lo que se confirma no siempre es para siempre, gracias a herramientas como BFG.
Cuéntanos qué otros problemas de Git tienes en nuestro Slack de la comunidad de Vonage o envíanos un mensaje en X, antes conocido como Twitter.
Compartir:
Yonatan ha estado involucrado en algunos proyectos impresionantes en la academia y la industria - desde C / C ++ a través de Matlab a PHP y javascript. Fue director de tecnología en Webiks y arquitecto de software en WalkMe. Actualmente es arquitecto de software en Vonage e instructor de egghead.