La detección de secretos es el proceso de localizar y señalar datos confidenciales, conocidos como “secretos”, en los códigos fuente u otras ubicaciones dentro de los entornos de desarrollo de software. Esta capa automatizada de defensa ayuda a garantizar que no se codifique ni se introduzca información confidencial en el código fuente de forma fácilmente legible o sin cifrar.
La detección de secretos forma parte de un enfoque de “shift left” que adelanta la seguridad en el proceso de desarrollo. Los secretos pueden extenderse más allá del código, aumentando el riesgo de exposición a incidentes de seguridad. La protección automatizada mediante la detección de secretos puede ayudar a proteger los flujos de trabajo de los desarrolladores a escala.
En la seguridad de las aplicaciones (AppSec), los secretos son datos digitales que otorgan acceso a usuarios humanos o a identidades no humanas, como aplicaciones, dispositivos o cargas de trabajo, y les permiten comunicarse o realizar acciones. Debido a su carácter delicado, los secretos deben mantenerse en secreto.
Estos son algunos tipos comunes de secretos:
Las claves API son identificadores únicos para autenticar la comunicación entre servicios, software o sistemas a través de una interfaz de programación de aplicaciones (API).
Los tokens de autenticación y autorización verifican la identidad y autorizan el acceso a los recursos.
Los datos biométricos incluyen rasgos físicos y de comportamiento inherentes a una persona, como sus rasgos faciales, huellas dactilares, voz o incluso su forma de andar, que pueden utilizarse para verificar su identidad.
Los certificados digitales y sus claves privadas asociadas se emplean para autenticar los endpoints y establecer canales de comunicación seguros.
Las credenciales del proveedor de servicios en la nube pueden utilizarse para acceder a plataformas de cloud computing como AWS, Azure, Google Cloud e IBM® Cloud.
Las cadenas de conexión son cadenas de texto que contienen instrucciones para conectar con una fuente de datos.
Las credenciales de las bases de datos son combinaciones de nombre de usuario y contraseña para acceder a las bases de datos.
Las claves de cifrado y otras claves criptográficas se utilizan para firmar y cifrar o descifrar datos.
Las credenciales de la cuenta de servicio permiten que aplicaciones y flujos de trabajo automatizados accedan e interactúen con los sistemas operativos.
Las claves SSH (Secure Shell) se utilizan para autenticar entidades que acceden a servidores y otras infraestructuras.
Las combinaciones de nombre de usuario y contraseña consisten en cadenas de caracteres que autentifican el acceso de un usuario a un sistema.
Los secretos son objetivos prioritarios para los actores de amenazas. Pueden utilizar bots para recopilar un token expuesto, una credencial filtrada o una configuración incorrecta en un entorno nativo de la nube. Los atacantes explotan estos secretos para obtener acceso no autorizado a aplicaciones y sistemas. Como el acceso se obtiene mediante credenciales legítimas, puede ser más difícil detectarlo y pasar desapercibido durante largos periodos de tiempo.
Esto hace que la detección de secretos sea un componente crucial de la estrategia de ciberseguridad de una empresa. La detección de secretos ayuda a las organizaciones a:
Evitar el secuestro de cuentas y la escalada de privilegios: los hackers pueden usar credenciales filtradas para escalar sus privilegios. Equipados con mayores privilegios, pueden alterar la configuración del sistema, interrumpir los servidores y la infraestructura, ejecutar comandos, instalar malware o tomar el control de los activos.
Prevenir las vulneraciones de datos: los actores maliciosos pueden explotar los secretos expuestos para robar información personal sensible o datos corporativos confidenciales. Estas vulneraciones de datos pueden ser costosas y provocar pérdidas financieras, una disminución de la confianza del cliente y daños en su reputación.
Reducir las vulnerabilidades: los secretos expuestos son puertas abiertas. Localizarlos permite a las empresas eliminar de forma proactiva estas vulnerabilidades, lo que cierra la puerta a ciberataques exitosos.
Obtenga conocimientos organizados sobre las noticias más importantes e intrigantes de la IA. Suscríbase a nuestro boletín semanal Think. Consulte la Declaración de privacidad de IBM.
El proceso comienza con un análisis de secretos, en el que las herramientas de detección de secretos examinan los repositorios de código (también denominados repos) y los recursos relacionados en busca de secretos expuestos. Estas herramientas generan entonces alertas o informes para cualquier secreto identificado, incluyendo el tipo de secreto y dónde se encuentra. Los equipos de desarrollo y los equipos de seguridad pueden recurrir a estas alertas o informes para informar los pasos de corrección, como mover los secretos a una solución de gestión de secretos. Estas soluciones ayudan a automatizar, centralizar y agilizar la creación, el uso, la rotación y la protección de secretos.
Detectar secretos implica una combinación de métodos para identificar con precisión secretos entre repositorios:
Coincidencia de patrones
Búsqueda en diccionarios
Análisis de entropía
Los algoritmos de coincidencia de patrones buscan cadenas que coincidan con los formatos estándares de secretos. También emplean expresiones regulares, que son patrones de búsqueda compuestos por secuencias de caracteres.
Este método suele ser eficaz para secretos que siguen una forma predefinida, como tokens de acceso para servicios en la nube o claves API. Sin embargo, el análisis de secretos mediante expresiones regulares (también conocidas como regex) puede resultar lento, y los secretos que tienen una composición aleatoria pueden pasar desapercibidos.
En la detección de secretos, los diccionarios son fuentes de datos que contienen secretos conocidos. Estos diccionarios se pueden utilizar como referencia al buscar secretos.
La búsqueda en diccionarios ayuda a determinar si un secreto es actual o no está en uso. Pero es posible que no pueda detectar ningún secreto que no esté en el diccionario.
La entropía mide la aleatoriedad o imprevisibilidad de los datos. Cuanto mayor sea la entropía, más aleatorios serán los datos y más difíciles de predecir. Por lo tanto, el análisis de entropía evalúa las secuencias de caracteres en busca de atributos de aleatoriedad.
Este método ayuda a descubrir posibles secretos que no se adhieren a patrones conocidos, como las claves de cifrado. También puede revelar nuevos secretos o secretos de alta entropía.
Hay muchas opciones en cuanto a sistemas de detección de secretos. Al seleccionar la solución adecuada, las empresas deben tener en cuenta la precisión de una solución, la profundidad y amplitud de sus capacidades de detección, su escalabilidad en grandes bases de código y el ciclo de vida de desarrollo de software (SDLC), y si es compatible e integra de manera fluida con su pila tecnológica y flujos de trabajo de desarrollo de software.
Estas son algunas herramientas populares para detectar secretos:
GitLab emplea un analizador para la detección de secretos específico para los entornos de GitLab. Ofrece estas funcionalidades:
La protección contra la publicación de secretos comprueba los cambios antes de que se publiquen en GitLab y bloquea la publicación si detecta secretos.
La detección de secretos en los pipelines de CI/CD se ejecuta como un componente de los pipelines de CI/CD, y revisa las solicitudes de fusión y las confirmaciones realizadas en la rama predeterminada de un repositorio.
La detección de secretos del lado del cliente analiza los comentarios y las descripciones de los incidencias y las solicitudes de fusión.
GitLab puede responder automáticamente a ciertos tipos de secretos filtrados revocándolos. Para ciertos niveles de cuentas, la característica de detección de falsos positivos de GitLab evalúa los secretos identificados para determinar los posibles falsos positivos.
Gitleaks es una herramienta de código abierto para detectar secretos en repositorios, directorios, archivos y otras entradas estándar de Git. Su motor de detección se basa en una combinación de coincidencias de patrones mediante análisis de entropía y expresiones regulares.
Las organizaciones pueden crear conjuntos de reglas personalizados para sus propios secretos. También pueden ejecutar Gitleaks como un gancho de pre-commit para detectar información confidencial en el código fuente antes de que llegue al repositorio.
Vault Radar es el producto de detección de secretos de HashiCorp. Realiza análisis continuos en tiempo real en busca de datos confidenciales e incluso información de identificación personal (PII), y los clasifica y ordena en un panel de control para facilitar las medidas correctivas.
También se realizan análisis para las confirmaciones de código, las solicitudes de extracción y para añadir fuentes de datos. Las fuentes de datos compatibles incluyen repositorios y plataformas como Azure DevOps, Bitbucket, GitHub y GitLab, y plataformas de colaboración como Confluence, Jira y Slack.
Vault Radar proporciona una guía de corrección integrada para determinadas cuentas empresariales. Los secretos expuestos también pueden copiarse en Vault, la plataforma de gestión de secretos de HashiCorp, como parte del proceso de corrección.
La inteligencia artificial puede mejorar la precisión y la eficiencia de las herramientas de detección de secretos, la mayoría de las cuales arrojan altas tasas de falsos positivos. Los modelos de IA pueden entrenarse para reconocer características que corresponden a una gama más amplia de tipos de secretos, lo que los hace más dinámicos que las soluciones basadas en reglas.
Los equipos de desarrollo que implementan la IA para la detección de secretos pueden obtener estos beneficios:
Reconocimiento del contexto: los modelos de IA pueden aprender el contexto que rodea a los secretos, incluidos los comentarios del código, la estructura del código fuente y los nombres de las variables. Este análisis semántico y contextual permite a los modelos distinguir mejor entre verdaderos secretos y datos de muestra o valores de prueba. Por lo tanto, la capacidad de reconocer el contexto puede ayudar a aumentar las tasas de verdaderos positivos y a reducir las de falsos positivos.
Detección en tiempo real: algunas herramientas de detección con IA se integran de manera fluida con los IDE, señalando los secretos codificados a medida que los desarrolladores escriben código y detectando los secretos expuestos antes de que se confirmen o envíen a los repositorios.
Priorización y corrección automatizadas: la detección de secretos impulsada por IA puede automatizar la forma en la que se priorizan los secretos marcados mediante la asignación de una puntuación de riesgo basada en factores como la explotabilidad, el impacto, la ubicación y la gravedad. También puede sugerir correcciones, como sustituir secretos expuestos por llamadas a una plataforma de gestión de secretos.
La aplicación de la IA para la detección de secretos implica una serie de técnicas:
Clasificación: la clasificación permite a los modelos de machine learning predecir si una información es un secreto verdadero o falso. Los algoritmos de clasificación típicos para detectar secretos incluyen regresión logística, Naive Bayes y máquinas de vectores de soporte (SVM).
Aprendizaje conjunto: el aprendizaje conjunto combina múltiples clasificadores para aumentar la precisión de la predicción.
Deep learning: el deep learning, impulsado por redes neuronales multicapa, ofrece una forma más potente y versátil de detectar secretos. Entre las arquitecturas de deep learning más empleadas se encuentran las redes neuronales convolucionales, las de memoria a corto plazo de larga duración (LSTM) y los modelos transformadores.
IA generativa: los modelos de lenguaje de gran tamaño (LLM) constituyen otra opción para la detección de secretos. Tanto los LLM preentrenados como los modelos de lenguaje pequeños (SLM) afinados pueden usarse para predecir secretos y clasificarlos según diferentes tipos de secretos. Un enfoque con intervención humana sigue siendo fundamental para validar la precisión de las predicciones y clasificaciones de los LLM.
Una mezcla de estrategias convencionales y basadas en la IA puede reforzar el proceso de detección de secretos. La concordancia de patrones y el análisis de entropía pueden utilizarse para buscar secretos, mientras que las metodologías basadas en la IA validan los secretos descubiertos para eliminar los falsos positivos.
Estos son algunos ejemplos de soluciones de detección de secretos que utilizan IA:
La plataforma de seguridad de código GitGuardian escanea repositorios Git, pipelines de CI/CD, imágenes Docker y sistemas de colaboración como Confluence, Jira y Slack. Los desarrolladores pueden configurar ganchos de pre-commit e integrar el análisis en los entornos de desarrollo integrado (IDE) o utilizar la aplicación de interfaz de línea de comandos de GitGuardian.
El motor de detección de secretos de GitGuardian consta de dos tipos de detectores basados en la coincidencia de patrones: detectores específicos, dedicados a localizar tipos concretos de secretos, lo que garantiza una alta tasa de recuperación y precisión, y detectores genéricos, destinados a detectar lo que los detectores específicos podrían pasar por alto. Además, diversos modelos de machine learning aportan funcionalidades muy útiles, como filtrar los secretos que probablemente sean falsos positivos y evaluar el contexto en torno a un secreto genérico para asignarle una categoría y un proveedor adecuados.
Otras característica basadas en el machine learning incluyen la agrupación de incidentes similares, que agrupa los secretos que comparten similitudes contextuales, y la puntuación de riesgos, que utiliza XGBoost (eXtreme Gradient Boosting), un conjunto de árboles de decisión que aprenden de los errores de los demás, para clasificar los secretos en función de múltiples indicadores de riesgo.
GitHub Secret Protection es el propio sistema de escaneo de secretos de GitHub. Analiza todos los historiales de Git de todas las sucursales de un repositorio y las descripciones y comentarios de las cuestiones y solicitudes de cambios.
La función de protección contra envíos del sistema analiza cada envío en tiempo real y bloquea las confirmaciones que contengan información confidencial. Puede realizar comprobaciones de validez automáticas para verificar si un secreto descubierto está activo y expuesto públicamente.
GitHub Secret Protection también utiliza GitHub Copilot para detectar secretos no estructurados guardados en los repositorios.
Bob es el asistente de codificación de IA de IBM diseñado para apoyar la escritura de código fuente, la depuración, la refactorización, la revisión de código y la documentación. Puede identificar vulnerabilidades de seguridad dentro del código y, junto con su capacidad integrada de detección de secretos, Bob facilita y fomenta la codificación segura.
Bob puede programarse para adoptar un modo agéntico personalizado que busca secretos codificados, explica los riesgos de seguridad y recomienda acciones para proteger secretos. Puede reemplazar los secretos con referencias a una plataforma de gestión de secretos como Vault de HashiCorp y enviar secretos codificados a Vault utilizando el Model Context Protocol (MCP).
La detección de secretos puede mejorar la posición de seguridad de una empresa. Puede ser más eficaz cuando se incorpora en las fases de desarrollo, implementación y mantenimiento del SDLC.
Estas son algunas buenas prácticas que los equipos de desarrollo pueden tener en cuenta a la hora de implementar la detección de secretos:
Definir los secretos más importantes
Ir más allá de las fuentes relacionadas con el código
Integrar la detección de secretos en los pipelines de CI/CD.
Triaje y rectificación
Formar a los equipos de desarrollo y DevOps
Las empresas pueden empezar definiendo qué constituye un secreto para ellas y clasificar esos secretos por importancia para informar el proceso de corrección. También deben auditar toda su cadena de suministro de software para determinar el alcance de la exposición de secretos.
Los secretos pueden propagarse más allá de las fuentes relacionadas con el código. Esto significa que la detección también debe considerar otras posibles fuentes de exposición de secretos, como:
Comunicación, colaboración y herramientas de productividad para desarrolladores
Archivos de configuración
Contenedores y plataformas de orquestación de contenedores como Kubernetes
Bases de datos
Documentación
Archivos de infraestructura como código (IaC)
Registros
Los equipos de DevOps pueden implementar ganchos de pre-commit que hagan del análisis de secretos un paso obligatorio antes de que los desarrolladores envíen el código o inicien solicitudes de incorporación de cambios, y que bloqueen los cambios que contengan secretos codificados de forma estática. También deben comprobar que las herramientas son capaces de escanear artefactos de forma continua, crear registros y variables de entorno para detectar cualquier secreto expuesto antes de que llegue a los entornos de tiempo de ejecución y producción.
Las empresas deben establecer políticas sobre cómo se priorizan y corrigen los secretos expuestos. Las políticas de triaje pueden incluir evaluaciones de los riesgos de seguridad que plantean los distintos tipos de secretos y qué equipos son responsables de la clasificación.
Las políticas de corrección deben describir claramente las medidas que deben adoptarse, ya sea revocar o rotar los secretos, o sustituirlos por llamadas a una plataforma de gestión de secretos. La automatización de estas correcciones puede ahorrar tiempo y dar lugar a respuestas rápidas, pero las correcciones deben probarse para verificar que ya no se puede detectar un secreto.
Las organizaciones deben incluir la detección de secretos como parte de la formación de un equipo de desarrollo o DevOps en codificación segura. Los equipos deben comprender los peligros de los secretos codificados o expuestos, qué pueden hacer para limitar esos peligros y cómo utilizar las herramientas necesarias para la detección de secretos.
Acelere la entrega de software con Bob, su socio de IA para un desarrollo seguro y consciente de la intención.
Optimice los esfuerzos de desarrollo de software con herramientas impulsadas por IA de confianza que minimizan el tiempo dedicado a escribir código, depurar, refactorizar código o completar código, y consiga más espacio para la innovación.
Reinvente las operaciones y flujos de trabajo críticos añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.