En un mundo basado en código, es conveniente para los desarrolladores almacenar secretos estáticos y archivos de configuración con contraseñas junto con el código que desarrollan. Esto no solo es una mala práctica desde el punto de vista del control de código fuente, sino que también debilita la seguridad de la aplicación. Profundicemos en algunos de los riesgos clave de almacenar secretos en los repositorios de código y qué puede hacer como ingeniero de seguridad de aplicaciones para detectar riesgos innecesarios.
Primero debemos definir qué es un secreto: normalmente, los secretos pueden ser…
- Claves API
- Contraseñas estáticas del sistema
- Claves de cifrado
- Tokens OAuth
- Contraseñas de bases de datos
La amenaza externa:
En julio, se informó que Binance (una plataforma de intercambio de criptomonedas) sufrió lo que se conoce como la "mayor filtración de datos de la historia". Se estima que se robaron aproximadamente mil millones de registros. ¿Cómo se produjo esta filtración? Todo se redujo a un simple fragmento de código con secretos, que luego se compartió en un blog chino. Posteriormente, los atacantes pudieron usar los secretos expuestos para escalar privilegios y moverse lateralmente sin ser detectados en el entorno del producto.
La ingeniería se concibe como un esfuerzo colaborativo entre equipos y, en algunos casos, entre toda una comunidad. A menudo se comparten fragmentos de código para la resolución de problemas, y el software de código abierto se ha convertido en una apuesta segura en el mundo de CI/CD para que los equipos de ingeniería puedan actuar con rapidez. Tener secretos en la base de código solo aumenta la probabilidad de que caiga en malas manos (posiblemente de un agente de amenazas) y, en última instancia, aumenta el riesgo de provocar una filtración de datos.
Una vez vulnerada la seguridad, a tus equipos de seguridad les resulta casi imposible detectar este nivel de acceso, ya que la actividad parecerá normal (¡se utilizan secretos legítimos!). Hasta que, claro, tus datos se publiquen en la dark web para su venta…
La amenaza interna:
Los desarrolladores no deberían tener ni necesitar acceso a los sistemas de producción, y en teoría, los ingenieros de soporte tampoco (un problema diferente, jaja). Cuando se definen secretos estáticos en el código fuente, los contratistas externos y los desarrolladores deshonestos ahora pueden escalar sus privilegios y acceder a áreas de los sistemas de producción a las que no deberían tener acceso (principios de acceso con privilegios mínimos).
Es más importante que nunca que los equipos de seguridad de producto se centren en desarrollar mecanismos de autenticación, soluciones de acceso justo a tiempo y en incorporar sus propias soluciones clave. Si existen secretos sin protección en ese código, se elimina el impacto que estas soluciones tendrán en la mitigación general de riesgos de su producto y aumenta la probabilidad de que desarrolladores deshonestos (y contratistas externos) puedan explotar esos secretos codificados para obtener acceso no autorizado a su producto o datos.
¿Qué tengo que hacer?
Almacenar secretos y contraseñas en su base de código (o repositorios de código) nunca es una buena idea, pero ¿cómo puede siquiera empezar a descubrir dónde podrían estar en primer lugar?
Comienza conectando tu código repositorios a una herramienta que escanea e identifica secretos y contraseñas. El objetivo final es Descubre 100% de tus secretos y contraseñas en tu código y rápidamente remediar Ya sea que utilice ofuscación en el código o llamadas autenticadas a un almacén de claves/certificaciones externo a su entorno de producción, eliminar este riesgo es una forma sencilla de reducir el riesgo general para sus clientes y su producto.
Y lo tenemos cubierto: ambos BigID y Identificación pequeña Conectarse fácilmente a GitHub, GitLab y BitBucket Para escanear repositorios de código. Usamos ambos capacidades de aprendizaje automático y políticas de detección de secretos listas para usar para detectar secretos y contraseñas en su base de código para mejorar su postura de riesgo de datos... donde sea que almacene intencional o involuntariamente esos secretos en primer lugar.