- 1. CICD-SEC-7: Explicación de la configuración insegura del sistema
- 2. Importancia de la configuración segura del sistema en CI/CD
- 3. Prevención de la configuración insegura del sistema en CI/CD
- 4. Normas industriales para la seguridad de la configuración del sistema
- 5. Preguntas frecuentes sobre la configuración insegura del sistema
- CICD-SEC-7: Explicación de la configuración insegura del sistema
- Importancia de la configuración segura del sistema en CI/CD
- Prevención de la configuración insegura del sistema en CI/CD
- Normas industriales para la seguridad de la configuración del sistema
- Preguntas frecuentes sobre la configuración insegura del sistema
¿Qué es una configuración insegura del sistema?
- CICD-SEC-7: Explicación de la configuración insegura del sistema
- Importancia de la configuración segura del sistema en CI/CD
- Prevención de la configuración insegura del sistema en CI/CD
- Normas industriales para la seguridad de la configuración del sistema
- Preguntas frecuentes sobre la configuración insegura del sistema
La configuración insegura del sistema es uno de los 10 principales riesgos de seguridad de CI/CD de OWASP. Surge cuando los sistemas CI/CD se implementan con configuraciones subóptimas o por defecto. Puede incluir puertos abiertos innecesarios, credenciales por defecto, sistemas sin parches, redes mal segregadas o funciones de seguridad desactivadas. Estas vulnerabilidades pueden exponer el sistema a accesos no autorizados y aumentar la propagación de malware y el potencial de inyección de código malicioso en el proceso de implementación, lo que en última instancia conduce a la violación de datos y a la interrupción de las operaciones empresariales. Las configuraciones inseguras también pueden conducir a un uso indebido de los procesos legítimos de CI/CD, permitiendo a los atacantes manipular los flujos de trabajo y obtener acceso a los entornos de producción.
CICD-SEC-7: Explicación de la configuración insegura del sistema
Una configuración insegura del sistema representa un riesgo importante para la seguridad. Surge de las deficiencias en los ajustes de seguridad, la configuración y el endurecimiento de varios sistemas a lo largo de la canalización, como la administración del código fuente (SCM), los sistemas CI y los repositorios de artefactos. Estas vulnerabilidades suelen servir de blanco fácil para los atacantes que buscan ampliar su alcance dentro del entorno.
Múltiples sistemas de diversos proveedores conforman los entornos CI/CD. Para mejorar la seguridad de CI/CD, es esencial concentrarse no sólo en el código y los artefactos que fluyen a través de la canalización, sino también en la postura y la resistencia de cada sistema individual.
Al igual que los sistemas de almacenamiento y procesamiento de datos, los sistemas de CI/CD implican numerosos ajustes y configuraciones de seguridad a nivel de aplicación, red e infraestructura. Estos ajustes desempeñan un papel importante a la hora de determinar la postura de seguridad de los entornos CI/CD y su susceptibilidad a posibles brechas.
Los atacantes cazan vulnerabilidades de CI/CD y errores de configuración que explotar. Los posibles fallos de endurecimiento incluyen:
- Sistemas con versiones obsoletas
- Sistemas con controles de acceso a la red demasiado permisivos
- Sistemas autoalojados con permisos administrativos en el SO subyacente
- Mala higiene de las credenciales
Configuración del sistema definida
La configuración del sistema se refiere al proceso de configurar sistemas y servicios, definir cómo interactúan y establecer las normas que rigen su funcionamiento. Esto incluye la instalación del hardware, la instalación y configuración del software y el establecimiento de conexiones de red. Dado que el proceso de configuración puede afectar significativamente a la funcionalidad, el rendimiento y la seguridad de un sistema, hacerlo bien -y mantener su estado óptimo- es de vital importancia.
Componentes de una configuración segura del sistema
Una configuración segura implica el establecimiento correcto de los parámetros del sistema, la administración de los controles de acceso y la implementación de medidas de seguridad para los sistemas que sustentan el tubo de CI/CD. Estas configuraciones mitigan el riesgo de acceso no autorizado y evitan la explotación de vulnerabilidades en los sistemas que forman la columna vertebral del entorno de desarrollo.
La complejidad en el entorno de CI/CD se deriva de éste, en el sentido de que la configuración del sistema se extiende más allá de los sistemas individuales a las interconexiones entre herramientas, servicios y plataformas utilizadas en el proceso. No es sorprendente que el componente principal de una configuración eficaz y segura del sistema sea una administración estricta de la configuración.
Cómo se produce el CICD-SEC-7
La raíz de las configuraciones inseguras de los sistemas suele apuntar a un error humano, a la falta de procedimientos adecuados o a una comprensión inadecuada de los requisitos de seguridad. Puede ser el resultado de algo tan sencillo como dejar sin modificar la configuración predeterminada, permitir permisos excesivos o descuidar la actualización y los parches de los sistemas.
Una situación hipotética
El atacante escanea la red objetivo, una empresa tecnológica especializada en inteligencia artificial, y descubre un servidor Jenkins expuesto configurado con parámetros por defecto. Empleando herramientas fácilmente disponibles y una llamada a la API, proceden a minar los metadatos del servidor Jenkins en busca de información potencial sobre el sistema subyacente. Una mina de oro de información inunda su pantalla: datos sobre plugins, trabajos, configuraciones del sistema y mucho más. Entre este cúmulo de detalles, destaca una cadena de información. Llaves AWS. Estaban siendo utilizados por Jenkins para implementar aplicaciones en AWS y no contaban con la seguridad adecuada. Las claves corresponden a una cuenta de administrador, que otorga un acceso potencialmente ilimitado al entorno AWS de la empresa.
Utilizando las claves para infiltrarse en la infraestructura AWS de la empresa, el atacante entra en el corazón del sistema de la organización. Localizan un bucket S3 que alberga modelos de IA propios y, con el acceso a nivel de administrador de las claves de AWS robadas, descargan rápidamente los modelos y salen sin activar una alarma.
El atacante decide entonces explotar aún más este sistema. Conscientes de que el servidor Jenkins tiene permisos de escritura en los repositorios de GitHub, plantan un fragmento de código malicioso en el código fuente de la aplicación principal que crea una puerta trasera en la aplicación. En el siguiente ciclo de implementación, la empresa, sin saberlo, empuja la aplicación a producción. Ahora, armado con una puerta trasera persistente, el atacante puede hurtar datos, manipular los controles del sistema y plantar malware adicional, todo ello bajo el radar de los sistemas de seguridad de la empresa.
Importancia de la configuración segura del sistema en CI/CD
Una mala configuración en cualquier coyuntura del entorno de ingeniería podría exponer a todo el oleoducto a amenazas potenciales. Un atacante que aproveche la configuración errónea podría obtener acceso no autorizado al sistema CI/CD - o peor aún, comprometer el sistema y acceder al SO subyacente. El atacante podría manipular flujos legítimos de CI/CD, obtener tokens sensibles y acceder potencialmente a entornos de producción. En algunos escenarios, los fallos de configuración pueden permitir a un atacante moverse lateralmente dentro del entorno y fuera del contexto de los sistemas CI/CD.
Riesgos asociados a una configuración insegura del sistema
Los equipos de DevOps que conocen los riesgos asociados a la configuración insegura de los sistemas están preparados para diseñar sistemas menos vulnerables, asumir la responsabilidad de la seguridad de los sistemas que diseñan y mitigar los riesgos cuando surgen.
Estudio de caso 1: PHP se pasa a GitHub tras el incidente de seguridad y la posible filtración de la base de datos de usuarios
En abril de 2021, la comunidad PHP se enfrentó a un incidente de seguridad relacionado con git.php.net. Sospechado inicialmente como un compromiso del servidor, la investigación reveló que los commits maliciosos se realizaron utilizando HTTPS y autenticación basada en contraseña, eludiendo la infraestructura de Gitolite. La base de datos de usuarios de master.php.net puede haberse filtrado, lo que ha provocado una migración del sistema a main.php.net y un restablecimiento de la contraseña de todos los usuarios de php.net. Git.php.net y svn.php.net pasaron a ser de sólo lectura, y el repositorio principal de PHP se trasladó a GitHub, mejorando la seguridad y agilizando el flujo de trabajo de desarrollo.
Estudio de caso 2: Webmin revisa sus medidas de seguridad tras el incidente de inserción de código malicioso
En agosto de 2019, Webmin, una herramienta de configuración de sistemas basada en web, sufrió una brecha de seguridad cuando se insertó código malicioso en su código fuente. La brecha, que no era un fallo accidental, permitía la ejecución remota de comandos. El código malicioso se introdujo a través de un servidor de compilación de desarrollo comprometido. Tras el descubrimiento, Webmin respondió actualizando el proceso de compilación para utilizar únicamente código comprobado de GitHub, rotando todos los secretos accesibles y auditando todos los commits de GitHub del último año en busca de vulnerabilidades similares.
Estudio de caso 3: El código fuente de Nissan Norteamérica expuesto en Internet debido a una mala configuración del servidor Git
En un importante fallo de seguridad, el código fuente de Nissan Norteamérica para aplicaciones móviles y herramientas internas se filtró en línea debido a un servidor Git mal configurado. El servidor, dejado al descubierto con el nombre de usuario y la contraseña por defecto 'admin/admin', fue descubierto por la ingeniera de software Tillie Kottmann, residente en Suiza. El repositorio contenía código para varias aplicaciones de Nissan, herramientas de diagnóstico, portales de concesionarios, herramientas de marketing y mucho más. Nissan confirmó el incidente, aseguró el sistema afectado y afirmó que no se pudo acceder a ningún dato personal.
Estudio de caso 4: El Departamento de TI del Estado de Nueva York expone en línea su repositorio interno de códigos
Un repositorio de código interno utilizado por el departamento de TI del Estado de Nueva York fue expuesto en línea inadvertidamente, haciéndolo accesible a cualquiera. El servidor GitLab, descubierto por la empresa de ciberseguridad SpiderSilk, contenía proyectos con claves y contraseñas secretas para los sistemas del gobierno estatal. El servidor estaba configurado para permitir a cualquiera crear una cuenta de usuario e iniciar sesión. El servidor se detectó en línea por primera vez el 18 de marzo y se desconectó después de que se informara de la exposición. Al parecer, el servidor era una caja de pruebas instalada por un proveedor y, desde entonces, ha sido dado de baja.
Prevención de la configuración insegura del sistema en CI/CD
Aunque una configuración errónea puede proporcionar un punto de entrada a los atacantes, provocando importantes brechas de seguridad, la configuración segura del sistema sigue pasándose por alto en muchos procesos de desarrollo. Las recomendaciones de personas internas de los autores de la lista OWASP Top 10 CI/CD Security Risks pueden poner sus sistemas a buen recaudo:
- Mantenga un inventario de los sistemas y versiones en uso, asignando cada sistema a un propietario designado. Compruebe regularmente estos componentes en busca de vulnerabilidades conocidas. Cuando esté disponible un parche de seguridad, actualice el componente vulnerable. Si no hay ningún parche disponible para el componente vulnerable, considere la posibilidad de eliminar el componente o el sistema. Como alternativa, minimice el impacto potencial de la explotación de la vulnerabilidad limitando el acceso al sistema o su capacidad para realizar operaciones sensibles.
- Asegúrese de que el acceso de la red a los sistemas se ajusta al principio de acceso de privilegios mínimos.
- Establezca un proceso para revisar periódicamente todas las configuraciones del sistema. Centre su revisión en los ajustes que puedan afectar a la postura de seguridad del sistema. Garantice unos ajustes óptimos.
- Conceda permisos a los nodos de ejecución del oleoducto basándose en el principio del menor privilegio. Un error de configuración común en este contexto consiste en conceder permisos de depuración en los nodos de ejecución a los ingenieros. Muchas organizaciones lo permiten, pero es crucial tener en cuenta que cualquier usuario con acceso al nodo de ejecución en modo de depuración podría exponer todos los secretos mientras se cargan en memoria. También podrían utilizar la identidad del nodo, concediendo efectivamente permisos elevados a cualquier ingeniero con este permiso.
Normas industriales para la seguridad de la configuración del sistema
Varias normas industriales describen las mejores prácticas para la seguridad de la configuración del sistema. El Centro para la Seguridad en Internet (CIS) proporciona puntos de referencia exhaustivos para una configuración segura, mientras que el Instituto Nacional de Estándares y Tecnología (NIST) también publica directrices para configurar los sistemas de forma segura.
Cifrar sus secretos
Secretos como contraseñas, claves API y credenciales de bases de datos deben encriptarse en reposo y en tránsito. Nunca almacene secretos en su código o archivos de configuración. Utilice una herramienta de administración de secretos como HashiCorp Vault o AWS Secrets Manager. Estas herramientas mantienen los secretos encriptados y controlan el acceso a los mismos, ayudando a evitar que las credenciales de su organización caigan en las manos equivocadas.
Registro y supervisión de sus sistemas
Una parte clave del mantenimiento de una configuración segura del sistema implica el establecimiento de políticas claras y la supervisión rutinaria de su cumplimiento. Es importante registrar toda la actividad para poder detectar actividades sospechosas y responder rápidamente a los incidentes de seguridad. También debe supervisar su sistema en busca de señales de ataque, como patrones de tráfico inusuales o intentos fallidos de inicio de sesión.
Parchear vulnerabilidades
Asegúrese de que dispone de un sistema completo de identificación de vulnerabilidades y de aplicación de parches. Identifique sistemáticamente las vulnerabilidades y dé prioridad a su corrección. En los casos en que las vulnerabilidades no puedan parchearse, utilice mitigaciones alternativas, como eliminar los derechos de administrador. Recuerde, mantener sus sistemas al día significa aplicar regularmente parches y actualizaciones a sus servidores, aplicaciones y herramientas CI/CD.
Eliminación de cuentas y privilegios innecesarios
Imponga el privilegio mínimo eliminando las cuentas innecesarias (como las cuentas huérfanas y las cuentas no utilizadas). Esta es una de las prácticas de seguridad más poderosas para reducir su superficie de ataque. Asegúrese de que cada componente de su sistema -incluidos usuarios, procesos y servicios- sólo tiene los privilegios mínimos necesarios para realizar su función. Hacerlo así limitará los daños en caso de que un componente se vea comprometido.
Erigir bloqueos en la red
Dividir su red en segmentos más pequeños y aislados limitará el movimiento lateral si un atacante consigue acceder a su red. Utilice firewalls y listas de control de acceso (ACL) para controlar el tráfico entre segmentos. Cifre el tráfico, bloquee los puertos de red abiertos no utilizados o innecesarios y desactive o elimine los protocolos y servicios innecesarios. Audite regularmente las reglas de su firewall.
Cómo proteger sus servidores de construcción
Sus servidores de compilación son los responsables de compilar y empaquetar su código, por lo que son un objetivo principal para los atacantes. Asegúrese de que sus servidores de compilación están debidamente reforzados con parches de seguridad actualizados y contraseñas seguras. Y recuerde que asegurar su entorno de compilación significa aislarlo de su entorno de producción.
Auditoría de sus sistemas existentes
Las auditorías y revisiones periódicas ayudan a garantizar que las configuraciones del sistema sigan siendo seguras a lo largo del tiempo. Realice una auditoría exhaustiva de su tecnología actual. Utilice pruebas de penetración, escaneado de vulnerabilidades, administración de la configuración y otras herramientas de auditoría de seguridad para encontrar fallos en el sistema y priorizar las correcciones. Lleve a cabo evaluaciones del sistema frente a los recursos utilizando las normas del sector de NIST, Microsoft, CIS, DISA, etc.
Uso de herramientas para ayudar a asegurar la configuración del sistema
Existen muchas herramientas que ayudan a administrar y asegurar la configuración del sistema. Las herramientas de administración de la configuración como Ansible, Chef o Puppet permiten una configuración automatizada y una aplicación coherente en todos los entornos. Para los sistemas basados en la nube, los servicios nativos de la nube como AWS Config, Azure Policy y Google Cloud Security Command Center pueden ayudar a mantener una configuración segura.
Preguntas frecuentes sobre la configuración insegura del sistema
Entre los ejemplos de normas de refuerzo se incluyen los puntos de referencia del Centro para la Seguridad en Internet (CIS), que proporciona las mejores prácticas de la industria bien definidas, imparciales y basadas en el consenso para ayudar a las organizaciones a evaluar y mejorar su seguridad.
Otras normas incluyen las Guías Técnicas de Implementación de Seguridad (STIG) de la Agencia de Sistemas de Información de Defensa (DISA) y las directrices de endurecimiento del Instituto Nacional de Estándares y Tecnología (NIST). Estas normas abarcan una amplia gama de sistemas, incluidos los sistemas operativos, los dispositivos de red y los entornos de nube, y se actualizan periódicamente para hacer frente a las amenazas y vulnerabilidades emergentes.