En el corazón de cada aplicación están los secretos. Credenciales que permiten la comunicación de persona a máquina y de máquina a máquina. Las identidades de las máquinas superan en número a las identidades humanas factor de 45 a 1 y representan la mayoría de los secretos de los que debemos preocuparnos. De acuerdo a Investigaciones recientes de CyberArk, el 93% de las organizaciones tuvieron dos o más violaciones relacionadas con la identidad en el último año. Está claro que debemos abordar este problema cada vez mayor. Además, está claro que muchas organizaciones están de acuerdo con el uso de credenciales de texto sin formato para estas identidades en repositorios privados, pensando que permanecerán privadas. Sin embargo, la mala higiene en el código privado conduce a filtraciones públicas, como vemos con demasiada frecuencia en las noticias. Dado el alcance del problema, ¿qué podemos hacer?
Lo que realmente necesitamos es un cambio en nuestros procesos, especialmente en torno a la creación, el almacenamiento y el trabajo con identidades de máquinas. Afortunadamente, hay un camino claro a seguir, combinando las soluciones de gestión de secretos existentes y las herramientas de detección y remediación de secretos, todo ello sin dejar de encontrar a los desarrolladores donde estén.
Elaboración de un plan de seguridad de secretos de extremo a extremo
Cuando pensamos en solucionar el problema de identidad de la máquina, también conocido como proliferación de secretos, podemos explicar el problema en un par de oraciones.
“Tenemos una cantidad desconocida de secretos de texto plano válidos y de larga duración repartidos por nuestro código, configuraciones, canalizaciones de CI, sistemas de gestión de proyectos y otras fuentes, que no podemos explicar y sin una estrategia de rotación coherente. Mientras tanto, los desarrolladores continúan trabajando con secretos en texto plano, ya que es una forma confiable, aunque problemática, de hacer que la aplicación funcione.”
Pensando en esta definición práctica, podemos elaborar un plan de varios pasos para abordar cada inquietud.
- Detección de secretos: busque en el código y los sistemas involucrados en el ciclo de vida del desarrollo de software para identificar las credenciales de texto sin formato existentes, recopilando la mayor cantidad de información posible sobre cada una.
- Gestión de secretos: contabilidad de todos los secretos conocidos a través de una plataforma de bóveda centralizada.
- Flujos de trabajo del desarrollador: ajuste los procesos y las herramientas para que sea más fácil crear, almacenar y llamar secretos de forma segura.
- Escaneo de secretos: monitoreo continuo de nuevos secretos que se agregan en texto sin formato.
- Rotación automática: el reemplazo regular de secretos válidos acorta su posible explotación por parte de actores maliciosos.
Puede emprender este viaje paso a paso, tratándolo como una implementación por fases. Antes de que te des cuenta, estarás mucho más cerca de eliminar los secretos y proteger todas las identidades de tus máquinas.
Encontrando tus secretos
El primer problema que encuentra todo equipo cuando intenta controlar la expansión de los secretos es determinar qué secretos tienen. Un esfuerzo de búsqueda manual para rastrear secretos desconocidos abrumaría rápidamente a cualquier equipo, pero afortunadamente, existen herramientas de escaneo de secretos, como GitGuardianque puede automatizar este proceso y brindar información sobre detalles críticos. Desde una plataforma estable, debe proporcionar una vía de comunicación para trabajar con los desarrolladores para solucionar el problema.
Implementación de una bóveda de secretos centralizada
Un elemento central de cualquier buena estrategia de gestión de secretos es gestionar cómo se almacenan y utilizan los secretos. Las bóvedas empresariales le permiten contabilizar de forma transparente todos los secretos conocidos, cifrándolos en reposo y en tránsito. Una buena solución de bóveda, que incluye Conjurar desde Cyberark y Empresa de bóveda de Hashicorp. Si toda su infraestructura es del mismo proveedor, como por ejemplo AWS o GCP, son muy buenas opciones también.
Asegurar el flujo de trabajo del desarrollador
Históricamente, la gestión de secretos se ha dejado en manos de los desarrolladores, lo que ha llevado a una amplia variedad de soluciones como archivos `.env` y, desafortunadamente, a codificar secretos en el código base. Aprovechar una solución de bóveda centralizada ofrece a los desarrolladores una forma coherente de invocar de forma segura las credenciales de sus aplicaciones en todos los entornos. Si puede ofrecer un enfoque estandarizado que sea tan fácil de implementar como lo que están haciendo actualmente, encontrará que muchos desarrolladores aprovecharán la oportunidad para garantizar que sus implementaciones no estén bloqueadas debido a este problema de seguridad.
También querrá considerar la posibilidad de desplazarse a la izquierda. Las herramientas de línea de comandos, como ggshield, permiten a los desarrolladores agregar ganchos Git automáticos para escanear las credenciales de texto sin formato antes de realizar cualquier confirmación. Impedir que un secreto llegue a una confirmación significa que no habrá incidentes con los que lidiar más adelante y se solucionará el problema en el punto menos costoso del ciclo de vida del desarrollo de software.
Escaneo secreto en cada interacción compartida
También es necesario tener en cuenta la realidad de que, a veces, ocurren accidentes. Es necesario realizar un seguimiento constante para detectar nuevos problemas que surjan cuando los desarrolladores existentes cometan errores o cuando se contraten nuevos equipos o subcontratistas que simplemente aún no conocen los procesos. Al igual que cuando se detectan secretos por primera vez, el uso de una plataforma que recopile la información en un incidente coherente le ayudará a responder rápidamente a estos nuevos problemas. GitGuardian, por ejemplo, se integra a nivel del repositorio de código para capturar nuevas credenciales de texto sin formato en segundos, de forma automática en cada inserción o comentario.
Las credenciales de corta duración deberían ser el objetivo de la rotación automática
Si un atacante encuentra un secreto válido, su trabajo será mucho más sencillo, ya que puede desbloquear cualquier puerta que encuentre. Si ese mismo atacante encuentra un secreto no válido, no podrá hacer mucho con él. Con una bóveda centralizada, puede implementar planes de rotación automática. La mayoría de las plataformas y servicios modernos tienen una forma de generar nuevas credenciales mediante una llamada API y una forma de invalidar los secretos existentes. Con un poco de scripting, siguiendo una de las muchas guías publicadas por plataformas como AWS o CyberArk, es posible automatizar el reemplazo seguro de cualquier credencial en un horario regular, incluso diario.
La seguridad de los secretos de extremo a extremo requiere un plan
El mejor momento para abordar los problemas relacionados con la seguridad de los secretos de un extremo a otro es ahora. Si aún no tiene un plan de acción, hoy es el mejor momento para comenzar a tener esas conversaciones. Empiece por hacer preguntas como “¿qué secretos tenemos?” o “¿Tiene una bóveda?” En última instancia, debemos capacitar a los desarrolladores con flujos de trabajo y barreras de seguridad que les permitan centrarse en su flujo de desarrollo.
Mantenerse alerta para que se descubran nuevos secretos y se aborden de inmediato es un proceso continuo. Requerirá esfuerzo, incluida la concientización y la adopción de los procesos y las tecnologías correctos, pero cualquier empresa puede controlar mejor las identidades y los secretos de las máquinas, de extremo a extremo, en toda la organización.