
[26/11/2021] Los secretos almacenados en los repositorios Git han sido como una astilla para los desarrolladores, y una fuente de referencia para los atacantes durante mucho tiempo. Asegurarse de que la información confidencial se almacene de manera adecuada y se elimine de los repositorios se ha convertido en una necesidad para reducir la probabilidad de que el software se vea comprometido, a menudo de manera muy pública. Si bien esto parece obvio, es fácil pasar por alto cadenas de conexión codificadas, contraseñas e incluso credenciales de texto sin formato almacenadas por la propia herramienta de desarrollo. Visual Studio, por ejemplo, puede almacenar credenciales de conexión SQL en texto sin formato a menos que se indique lo contrario.
[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]
Solo en el 2020, GitGuardian detectó más de dos millones de secretos en repositorios públicos. Se ha planteado en gran medida la hipótesis de que una credencial filtrada, producida por un practicante, jugó un papel en la ejecución del ataque SolarWinds. Con casos de tan alto perfil como éste, vale la pena tomarse un minuto para evaluar si sus propios proyectos podrían ser expuestos de esta manera.
El truco es encontrar los secretos para empezar. A menudo están escondidos en código o archivos XML oscuros y codificados de formas que son difíciles de encontrar. La limpieza manual del código es propensa a errores y es probable que resulte en descuidos. Desafortunadamente, dado que Git, al igual que otros sistemas de control de fuentes, retiene las confirmaciones anteriores, limpiar un secreto expuesto va más allá de simplemente eliminar el secreto del código y volver a comprometerse. Debe eliminarse del historial, lo que a veces puede significar comenzar de nuevo. Debido a esto, es importante hacer las cosas bien y hacerlo bien al principio del proceso.
Afortunadamente, hay varias herramientas disponibles para ayudar a lidiar con este tipo de problemas. Si bien la mayoría son herramientas de línea de comandos, algunas son opciones basadas en la web. Todos comparten una funcionalidad similar, pero logran el resultado de formas ligeramente diferentes. Las principales piezas de información que buscan incluyen nombres de usuario, contraseñas, claves privadas y otra información potencialmente sensible.
Al considerar cuál usar, es importante evaluar sus propias habilidades técnicas, el tiempo disponible para aprender una nueva herramienta, si necesita detecciones personalizadas y su presupuesto.
Gitleaks
GitLeaks se puede instalar usando Homebrew, Docker o Go, que está disponible en múltiples plataformas. Una vez instalado, podrá definir reglas y ejecutar la herramienta de línea de comandos para escanear su repositorio de Git. Las reglas se escriben utilizando TOML (el Obvious Minimal Language de Tom) que se parece a un cruce entre JSON y archivos INI de Windows. Cada regla es una expresión regular, por lo que es útil dominarlas.
Afortunadamente, una vez aprendido, realmente no hay límite para los tipos de patrones con los que puede hacer coincidir. GitLeaks también proporciona bastantes configuraciones de muestra que puede usar si necesita actualizar su conocimiento de las expresiones regulares, o si necesita un buen punto de partida para crear las suyas propias. Además, una configuración predeterminada capturará la mayoría de los secretos comunes que no desea que los malos o los empleados deshonestos encuentren.
Después de ejecutar la herramienta, obtendrá una lista de problemas y un código de retorno si le gusta automatizar sus escaneos. GitLeaks es una herramienta poderosa que requiere que sepa lo que está haciendo, pero es lo suficientemente liviana como para que pueda encajar en el pipeline de desarrollo de cualquier persona.
GittyLeaks
GittyLeaks tiene un nombre similar a GitLeaks, pero es una herramienta muy diferente. Está escrita en Python, y es algo así como un instrumento con una sola función. Después de instalar GittyLeaks con pip, puede ejecutarlo desde la carpeta en la que se clona su repositorio de git. Intentará buscar palabras como nombre de usuario, contraseña y correo electrónico que se hayan pasado por alto. Todavía es un trabajo en progreso y carece de un mecanismo sólido para personalizar los patrones de búsqueda y lidiar con la corrección, pero hace el trabajo de encontrar secretos y no requiere aprender una sintaxis de reglas especiales como GitLeaks.
La única pieza complicada de cualquier herramienta de Python es asegurarse de que está ejecutando tanto la versión correcta de Python como la versión correcta de pip. Siempre que preste mucha atención a ambos, no habrá problemas para ejecutar la herramienta y obtener buenos resultados.
SpectralOps
SpectralOps de Spectral es una solución de pago. Si bien Spectral no proporciona precios públicamente, puede registrarse para obtener una demostración en su página web y solicitar información al respecto. Los beneficios de SpectralOps son muchos. Se integra con múltiples fuentes de datos más allá de Git. Puede interactuar con GitHub, GitLab, NPM, Google Cloud Build y más. Al igual que las opciones gratuitas, es una herramienta de línea de comandos que escanea su código antes de que vaya a la nube.
Lo que distingue a SpectralOps es que se puede integrar fácilmente con varios sistemas de integración continua (CI, por sus siglas en inglés), que son herramientas que crean y prueban cambios de código automáticamente. SpectralOps utiliza archivos YAML especialmente diseñados, llamados detectores, para captar secretos definidos en su código. Si bien Spectral está expandiendo constantemente esta biblioteca, usted es libre de escribir una propia.
SpectralOps está claramente orientado a un equipo de desarrollo más grande con un presupuesto y tiene mucho soporte detrás. Si necesita un paso más allá de las herramientas gratuitas y tiene problemas de privacidad, entonces vale la pena echarle un vistazo a SpectralOps.
GitGuardian
GitGuardian es una solución totalmente basada en la web, que escanea continuamente sus repositorios en busca de secretos. Está casi completamente automatizado y funciona de manera muy similar a un producto de protección de terminales para su código. Se conecta directamente a GitHub, Bitbucket, GitLab o sus repositorios internos y los monitorea continuamente en busca de secretos. Cualquier secreto descubierto se puede tratar, rastrear y remediar desde la aplicación.
Si bien aún necesitará realizar ediciones manuales en su Repositorio de Git, GitGuardian se asegura de que siga todos los pasos necesarios para garantizar la eliminación de secretos adecuada. GitGuardian es gratuito para repositorios privados y equipos pequeños de hasta 25 desarrolladores. Cualquier cosa por encima de eso se encuentra desde 434 dólares mensuales, aumentando desde ahí.
La única pieza con la que algunos pueden estar en desacuerdo es el hecho de que necesita conectarse directamente a su repositorio. Si tiene ciertas políticas de privacidad u otras inquietudes que podrían prohibir esto, puede tener más sentido buscar una herramienta fuera de línea. Dicho esto, si no le gusta preocuparse por una línea de comandos y prefiere un enfoque visual, GitGuardian es el camino que seguir.
Independientemente de su presupuesto o nivel de habilidad técnica, existe una herramienta disponible para ayudarle a garantizar que los secretos de misión crítica no se filtren al mundo a través de su sistema de control de fuente. Al tomarse un tiempo y adoptar una de estas aplicaciones en su proceso de desarrollo, puede dar un gran paso para hacer que su organización y su base de usuarios se sientan menos en riesgo y evitar la notoriedad de los titulares de primera plana.
Basado en el artículo de Daniel Brame (CSO) y editado por CIO Perú