Seguridad de Secretos de Extremo a Extremo: Elaborando un Plan para Proteger tus Identidades de Máquina

Luis Quiles
Luis Quiles
git-key
Protección de Identidad

En el corazón de cada aplicación hay secretos: credenciales que permiten la comunicación entre humanos y máquinas, y entre máquinas. Las identidades de las máquinas superan en número a las identidades humanas en una proporción de 45 a 1 y representan la mayoría de los secretos que debemos proteger. Según una investigación reciente de CyberArk, el 93% de las organizaciones sufrieron dos o más brechas relacionadas con la identidad en el último año. Es evidente que debemos abordar este problema en crecimiento. Además, muchas organizaciones están de acuerdo con usar credenciales en texto plano para estas identidades en repositorios privados, pensando que se mantendrán privadas. Sin embargo, una mala higiene en el código privado conduce a filtraciones públicas, como vemos con demasiada frecuencia en las noticias. Dada la magnitud del problema, ¿qué podemos hacer?

Lo que realmente necesitamos es un cambio en nuestros procesos, especialmente en torno a la creación, almacenamiento y manejo de identidades de máquinas. Afortunadamente, hay un camino claro a seguir, que combina soluciones existentes de gestión de secretos y herramientas de detección y remediación de secretos, todo mientras se adapta a los desarrolladores en su entorno de trabajo.

Elaborando un plan de seguridad de secretos de extremo a extremo

Cuando pensamos en remediar el problema de la identidad de las máquinas, también conocido como dispersión de secretos, podemos resumir el problema en un par de oraciones.

«Tenemos un número desconocido de secretos válidos en texto plano y de larga duración dispersos en nuestro código, configuraciones, pipelines de CI, sistemas de gestión de proyectos y otras fuentes, que no podemos contabilizar y sin una estrategia coherente de rotación. 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.»

Reflexionando sobre esta definición de trabajo, podemos hacer un plan en varios pasos para abordar cada preocupación.

  1. Detección de Secretos – Buscar en el código y los sistemas involucrados en el ciclo de vida del desarrollo de software para identificar las credenciales existentes en texto plano, reuniendo tanta información como sea posible sobre cada una.
  2. Gestión de Secretos – Contabilizar todos los secretos conocidos a través de una plataforma de bóveda centralizada.
  3. Flujos de Trabajo de los Desarrolladores – Ajustar los procesos y herramientas para facilitar la creación, el almacenamiento y el uso correcto y seguro de los secretos.
  4. Escaneo de Secretos – Monitorear continuamente cualquier nuevo secreto que se agregue en texto plano.
  5. Rotación Automática – Reemplazo regular de secretos válidos para acortar su posible explotación por actores malintencionados.

 

Puedes abordar este proceso paso a paso, tratándolo como un despliegue gradual. Antes de que te des cuenta, estarás mucho más cerca de eliminar la dispersión de secretos y asegurar todas tus identidades de máquina.

Encontrando tus secretos

El primer problema que enfrenta cada equipo al intentar controlar la dispersión de secretos es determinar qué secretos tienen en realidad. Un esfuerzo de búsqueda manual para rastrear secretos desconocidos rápidamente abrumaría a cualquier equipo, pero afortunadamente existen herramientas de escaneo de secretos, como la de GitGuardian, que pueden automatizar este proceso y proporcionar información detallada crucial. Desde una plataforma estable, deberías ofrecer un canal de comunicación para colaborar con los desarrolladores en la remedición de estos problemas.

Implementando una bóveda centralizada de secretos

Central para cualquier estrategia efectiva de gestión de secretos es cómo se almacenan y utilizan los secretos. Las bóvedas empresariales permiten contabilizar todos los secretos conocidos de manera transparente, encriptándolos en reposo y en tránsito. Una buena solución de bóveda incluye Conjure de Cyberark y Hashicorp Vault Enterprise. Si toda tu infraestructura proviene del mismo proveedor, como AWS o GCP, también son opciones muy buenas.

Asegurando el flujo de trabajo de los desarrolladores

La gestión de secretos históricamente ha quedado en manos de los desarrolladores para resolver, lo que ha llevado a una amplia variedad de soluciones como archivos `.env` y, lamentablemente, la inserción de secretos directamente en el código. Utilizar una solución de bóveda centralizada proporciona a los desarrolladores una forma consistente de invocar de manera segura las credenciales desde sus aplicaciones en todos los entornos. Si puedes ofrecer un enfoque estandarizado que sea tan fácil de implementar como lo que están haciendo actualmente, muchos desarrolladores estarán dispuestos a adoptarlo para asegurar que sus despliegues no se vean bloqueados por problemas de seguridad.

También es importante considerar el concepto de «shifting left» (mover hacia la izquierda). Herramientas de línea de comandos, como ggshield, permiten a los desarrolladores agregar ganchos automáticos de Git para escanear credenciales en texto plano antes de realizar cualquier confirmación. Detener un secreto antes de que llegue a un commit significa evitar problemas futuros y resolver el problema en el punto menos costoso del ciclo de vida de desarrollo de software.

Escaneo de secretos en cada interacción compartida

También necesitas una forma de contemplar la realidad de que a veces ocurren accidentes. Es necesario un monitoreo continuo para detectar cualquier nuevo problema que surja cuando los desarrolladores existentes cometan un error o cuando nuevos equipos o subcontratistas sean contratados y aún no conozcan tus procesos. Así como al realizar la detección inicial de secretos, utilizar una plataforma que recopile la información en incidentes coherentes te ayudará a responder rápidamente a estos nuevos problemas. Por ejemplo, GitGuardian se integra a nivel del repositorio de código para detectar nuevas credenciales en texto plano en cuestión de segundos, automáticamente en cada push o comentario.

El objetivo debería ser la rotación automática de credenciales de corta duración

Si un atacante encuentra un secreto válido, eso facilita mucho su trabajo, ya que pueden desbloquear cualquier puerta que encuentren. Si ese mismo atacante encuentra un secreto inválido, no pueden hacer mucho con él. Con una bóveda centralizada en su lugar, puedes implementar planes de rotación automática. La mayoría de las plataformas y servicios modernos tienen una manera de generar nuevas credenciales a través de una llamada API y una manera de invalidar secretos existentes. Con un poco de script, siguiendo una de las muchas guías proporcionadas por plataformas como AWS o CyberArk, es posible automatizar el reemplazo seguro de cualquier credencial en un horario regular, incluso diariamente.

La seguridad de extremo a extremo de los secretos requiere un plan

El mejor momento para abordar los problemas relacionados con la seguridad de los secretos de extremo a extremo es ahora mismo. Si aún no tienes un plan de acción establecido, hoy es el mejor momento para comenzar esas conversaciones. Empieza haciendo preguntas como «¿Qué secretos tenemos?» o «¿Tenemos una bóveda en su lugar?» En última instancia, debemos capacitar a los desarrolladores con flujos de trabajo y directrices que les permitan centrarse en su flujo de desarrollo.

Mantenerse vigilante para descubrir nuevos secretos y tratarlos de inmediato es un proceso continuo. Requerirá esfuerzo, incluyendo la concienciación y la adopción de los procesos y tecnologías adecuadas, pero cualquier empresa puede tener un mejor control sobre las identidades de las máquinas y los secretos, de extremo a extremo, en toda la organización.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Descubre los últimos artículos del blog sobre seguridad cibernética