Los vectores de ataque de las cadenas de suministro de software son las diferentes maneras en que alguien puede vulnerar tu software de forma intencional o accidental.
Los riesgos del software vulnerable incluyen la filtración de credenciales o datos confidenciales, la corrupción de datos, la instalación de software malicioso y las interrupciones de las aplicaciones. Estos problemas generan pérdida de tiempo, dinero y confianza de los clientes.
Los puntos de entrada de las amenazas abarcan todo el ciclo de vida del software y pueden provenir dentro o fuera de tu organización.
La leyenda del diagrama incluye dos conjuntos de amenazas:
- Las letras de la A a la H indican los vectores de ataque en la cadena de suministro de software que se describen como amenazas en el framework de niveles de la cadena de suministro para artefactos de software (SLSA).
- Los números del 1 al 4 indican vectores de ataque adicionales que el framework de SLSA no describe directamente.
Google Cloud proporciona un conjunto modular de funciones y herramientas que incorporan las prácticas recomendadas para mitigar ambos conjuntos de amenazas.
En las sub secciones de este documento, se describen las amenazas en el contexto de la fuente, las compilaciones, la implementación y las dependencias.
- Amenazas de origen
- Amenazas de compilación
- Amenazas de implementación y tiempo de ejecución
- Amenazas de dependencia
Amenazas de origen
Estas amenazas afectan la integridad de tu código fuente.
1: Escribir código no seguro La falta de prácticas de codificación seguras puede llevar a escribir código que incluya vulnerabilidades de forma no intencional. Las estaciones de trabajo de desarrollador no seguras también pueden introducir código malicioso o inseguro. Entre las mitigaciones, se incluyen las siguientes:
- Configura políticas para las estaciones de trabajo de los desarrolladores. Cloud Workstations proporciona estaciones de trabajo preconfiguradas y completamente administradas que puedes personalizar para que se alineen con tus requisitos.
- Escaneo local de código Source protect código de Cloud Code (versión preliminar privada) proporciona comentarios de seguridad en tiempo real, incluida información sobre vulnerabilidades y licencias para dependencias. Los desarrolladores también pueden usar la API de On-Demand Scanning para analizar imágenes de contenedores en busca de vulnerabilidades de SO y paquetes de idioma.
- Educación sobre prácticas para que el código sea más seguro.
A: Enviar código incorrecto al repositorio de código fuente Esto no solo incluye código malicioso, sino también código que introduce vulnerabilidades no deseadas a un ataque, como la ejecución de secuencias de comandos entre sitios. Entre las mitigaciones, se incluyen las siguientes:
- Requiere una revisión manual para los cambios en el código fuente.
- Usar herramientas de análisis de código y lint que se integren con IDEs y sistemas de control de código fuente
B: Vulnerar el sistema de control de código fuente Restringir el acceso al sistema de control de código fuente y a otros sistemas de tu canalización de compilación, y usar la autenticación de varios factores ayuda a mitigar este riesgo.
Cuando evalúes la integridad de tu fuente, también examina las secuencias de comandos y las configuraciones de asistencia que usas para compilar y, luego, implementar tu software. Inclúyelos en tu sistema de control de código fuente y en los procesos de revisión de código para reducir el riesgo de vulnerabilidades en estos archivos.
Consulta Protege la fuente para obtener más información sobre cómo proteger tu fuente.
Amenazas de compilación
Estas amenazas comprometen tu software cuando lo compilas o empaquetas, o engañan a los consumidores de tu software para que usen una versión dañada.
- C: Compila con una fuente que no proviene del sistema de control de fuentes de confianza.
Entre las mitigaciones que ayudan a reducir este riesgo, se incluyen las siguientes:
- Usar servicios de compilación, como Cloud Build, que generan información de procedencia para que puedas validar que tus compilaciones usan una fuente de confianza
- Colocar tu infraestructura de CI/CD en un perímetro de red para evitar el robo de datos de tus compilaciones Para los servicios de Google Cloud, usa los Controles del servicio de VPC.
- Almacenar y usar copias confiables de las dependencias de código abierto que necesitas en un almacén de artefactos privado, como Artifact Registry
- D: Vulnerar el sistema de compilación Entre las mitigaciones que ayudan a reducir este riesgo, se incluyen las siguientes:
- Sigue el principio de privilegio mínimo y restringe el acceso directo al sistema de compilación a las personas que lo requieran. En Google Cloud, puedes otorgar roles predefinidos adecuados o crear roles personalizados.
- Usa servicios de compilación administrados, como Cloud Build. Cloud Build ejecuta compilaciones efímeras configurando un entorno de VM para cada compilación y destruyéndolo después de la compilación.
- Coloca tu infraestructura de CI/CD en un perímetro de red para evitar el robo de datos de tus compilaciones. Para los servicios de Google Cloud, usa los Controles del servicio de VPC.
- F: Empaquetar y publicar software compilado fuera del proceso oficial Los sistemas de compilación que generan y firman la procedencia de la compilación te permiten validar que un sistema de compilación de confianza compiló tu software.
- G: Vulnerar el repositorio en el que almacenas tu software para tus usuarios internos o externos Entre las mitigaciones que ayudan a reducir este riesgo, se incluyen las siguientes:
- Almacenar y usar copias confiables de las dependencias de código abierto que necesitas en almacenes de artefactos privados, como Artifact Registry
- Valida la compilación y la procedencia de la fuente.
- Restringir los permisos de carga a cuentas dedicadas que no sean de personas y a administradores del repositorio En Google Cloud, las cuentas de servicio actúan en nombre de los servicios y las aplicaciones.
Amenazas de Deployment y entorno de ejecución
H: La resolución de dependencias mediante la especificación de un rango de versiones o una etiqueta que no está adjunta de forma permanente a una versión de compilación específica puede generar varios problemas:
- Las compilaciones no se pueden reproducir porque las dependencias que una compilación usa por primera vez pueden ser diferentes de las que usa para ejecuciones futuras de la misma compilación.
- Una dependencia puede resolverse en una versión comprometida o en una versión con cambios que dañan el software. Las personas o entidades que actúan de mala fe pueden aprovecharse de esta incertidumbre para hacer que tu compilación elija su versión de un paquete en lugar de la que deseas usar. Una serie de prácticas recomendadas para las dependencias pueden ayudar a mitigar los riesgos de confusión de dependencias.
2: Vulnerar el proceso de implementación Si usas un proceso de implementación continua, vulnerar ese proceso puede introducir cambios no deseados en el software que les entregas a tus usuarios. Para mitigar el riesgo, puedes restringir el acceso a tu servicio de implementación y probar los cambios en entornos de preproducción. Cloud Deploy puede ayudarte a administrar el proceso de entrega continuo y la promoción entre entornos.
3: Implementar software comprometido o que no cumple con los requisitos La aplicación forzosa de las políticas de implementación puede ayudar a mitigar este riesgo. Puedes usar la autorización binaria para validar que las imágenes de contenedor cumplan con los criterios de la política y bloquear la implementación de imágenes de contenedor de fuentes no confiables.
4: Vulnerabilidades y parámetros de configuración incorrectos en el software en ejecución
- Se descubren vulnerabilidades nuevas con frecuencia, lo que significa que los hallazgos nuevos pueden cambiar el nivel de riesgo de seguridad de tus aplicaciones en producción.
- Algunas configuraciones aumentan el riesgo de acceso no autorizado, como ejecutarse como usuario raíz o permitir la elevación de privilegios en la ejecución de un contenedor.
El panel de postura de seguridad de GKE muestra información sobre vulnerabilidades y problemas de configuración en tus cargas de trabajo en ejecución.
En Cloud Run, también puedes ver estadísticas de seguridad sobre las revisiones implementadas, incluidas las vulnerabilidades conocidas en las imágenes de contenedores que implementaste.
Consulta Protege las compilaciones para obtener más información sobre cómo proteger tu fuente y Protege las implementaciones para obtener más información sobre cómo proteger las implementaciones.
Amenazas de dependencia
Las dependencias incluyen dependencias directas en tus compilaciones, así como todas las dependencias transitivas, el árbol recursivo de dependencias que se encuentran aguas abajo de tus dependencias directas.
En el diagrama, E indica que se usa una dependencia incorrecta en la compilación. Una dependencia incorrecta puede incluir lo siguiente:
- Cualquier software del que dependa tu aplicación, incluidos los componentes que desarrollas de forma interna, el software comercial de terceros y el software de código abierto
- Vulnerabilidades que se originan en cualquiera de los otros vectores de ataque Por ejemplo:
- Un atacante obtiene acceso a tu sistema de control de código fuente y modifica la versión de una dependencia que usa tu proyecto.
- Tu compilación incluye un componente desarrollado por otro equipo de tu organización. Compila y publica el componente directamente desde sus entornos de desarrollo local y, accidentalmente, introduce una vulnerabilidad en una biblioteca que solo usa de forma local para pruebas y depuración.
- La eliminación intencional de una dependencia de código abierto de un repositorio público La eliminación puede provocar que se rompan las canalizaciones de consumo si recuperan la dependencia directamente del repositorio público.
Consulta las prácticas recomendadas para las dependencias para obtener información sobre cómo mitigar los riesgos.
Mitiga las amenazas
La integridad general de tu cadena de suministro es tan sólida como su parte más vulnerable. Si descuidas un vector de ataque, aumenta el riesgo de ataque en esa parte de la cadena de suministro.
Al mismo tiempo, no es necesario que cambies todo de una sola vez. El efecto de actos acumulativos, más conocido como modelo de queso suizo, se aplica a la seguridad de la cadena de suministro de software. Cada mitigación que implementes reduce el riesgo y, cuando combinas las mitigaciones en tu cadena de suministro, aumentas la protección contra diferentes tipos de ataques.
- Evalúa tu postura de seguridad con frameworks y herramientas que te ayuden a evaluar la capacidad de tu organización para detectar, responder y solucionar amenazas.
- Obtén información sobre las prácticas recomendadas para proteger tu cadena de suministro de software y los productos de Google Cloud diseñados para respaldar esas prácticas.
- Incorpora las funciones de seguridad de Google Cloud en tus procesos de desarrollo, compilación y aprovisionamiento para mejorar la postura de seguridad de tu cadena de suministro de software. Puedes implementar los servicios gradualmente, según tus prioridades y la infraestructura existente.
¿Qué sigue?
- Evalúa tu postura de seguridad.
- Obtén información sobre las prácticas recomendadas para proteger tu cadena de suministro de software.