Los vectores de ataque de las cadenas de suministro de software son las diferentes formas en las que alguien puede poner en peligro tu software de forma intencionada 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 malware y las interrupciones de las aplicaciones. Estos problemas provocan pérdidas de tiempo y dinero, así como la pérdida de la confianza de los clientes.
Los puntos de entrada de las amenazas abarcan todo el ciclo de vida del software y pueden originarse dentro o fuera de tu organización.
La leyenda del diagrama incluye dos conjuntos de amenazas:
- Las letras A a H indican vectores de ataque en la cadena de suministro de software que se describen como amenazas en el framework 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 ofrece un conjunto modular de funciones y herramientas que incorporan prácticas recomendadas para mitigar ambos tipos de amenazas.
En las subsecciones de este documento se describen las amenazas en el contexto de la fuente, las compilaciones, el despliegue y las dependencias.
- Fuentes de amenazas
- Build threats
- Amenazas de implementación y de tiempo de ejecución
- Amenazas de dependencia
Amenazas de origen
Estas amenazas afectan a la integridad de tu código fuente.
1: Escribe código no seguro. Si no se siguen prácticas de programación segura, se puede escribir código que incluya vulnerabilidades sin querer. Las estaciones de trabajo de desarrollador no seguras también pueden introducir código malicioso o no seguro. Entre las medidas de mitigación se incluyen las siguientes:
- Definir políticas para estaciones de trabajo de desarrolladores. Cloud Workstations proporciona estaciones de trabajo preconfiguradas y totalmente gestionadas que puedes personalizar para que se ajusten a tus requisitos.
- Escaneo local de código. La protección de código fuente de Cloud Code (vista previa privada) proporciona comentarios de seguridad en tiempo real, incluida información sobre vulnerabilidades y licencias de las dependencias. Los desarrolladores también pueden usar la API On-Demand Scanning para analizar imágenes de contenedor en busca de vulnerabilidades de paquetes de SO y de lenguaje.
- Formación sobre prácticas para que el código sea más seguro.
A: envía código incorrecto al repositorio de origen. Esto incluye no solo código malicioso, sino también código que introduce vulnerabilidades de forma involuntaria en un ataque, como el scripting entre sitios. Entre las medidas de mitigación se incluyen las siguientes:
- Requerir una revisión humana para los cambios en el código fuente.
- Usando herramientas de análisis y escaneo de código que se integran con IDEs y sistemas de control de código fuente.
B: Vulnerar el sistema de control de fuentes. Restringir el acceso al sistema de control de versiones y a otros sistemas de tu canalización de compilación, así como usar la autenticación multifactor, ayuda a mitigar este riesgo.
Al evaluar la integridad de la fuente, también debe examinar las secuencias de comandos y las configuraciones auxiliares que utilice para compilar e implementar su software. Inclúyelos en tu sistema de control de versiones y en tus procesos de revisión de código para reducir el riesgo de vulnerabilidades en estos archivos.
Consulta Proteger la fuente para obtener más información sobre cómo proteger tu fuente.
Generar amenazas
Estas amenazas ponen en peligro tu software cuando lo compilas o empaquetas, o engañan a los consumidores de tu software para que usen una versión incorrecta.
- C: se ha creado con una fuente que no procede del sistema de control de código fuente de confianza.
Entre las medidas de mitigación que ayudan a reducir este riesgo se incluyen las siguientes:
- Usar servicios de compilación, como Cloud Build, que generen información de procedencia para que puedas validar que tus compilaciones usan fuentes de confianza.
- Colocar tu infraestructura de CI/CD en un perímetro de red para evitar la filtración externa de datos de tus compilaciones. Para los Google Cloud servicios, usa Controles de Servicio de VPC.
- Almacenar y usar copias de confianza de las dependencias de código abierto que necesites en un almacén de artefactos privado, como Artifact Registry.
- D: Compromete el sistema de compilación. Entre las medidas de mitigación que ayudan a reducir este riesgo, se incluyen las siguientes:
- Sigue el principio de mínimos accesos restringiendo el acceso directo al sistema de compilación a las personas que lo necesiten. En Google Cloud , puedes asignar roles predefinidos adecuados o crear roles personalizados.
- Usa servicios de compilación gestionados, como Cloud Build. Cloud Build ejecuta compilaciones efímeras configurando un entorno de máquina virtual 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 la filtración externa de datos de tus compilaciones. Para los Google Cloud servicios, usa Controles de Servicio de VPC.
- F: Empaquetar y publicar software que se haya creado fuera del proceso oficial. Los sistemas que generan y firman la procedencia de la compilación te permiten validar que tu software se ha compilado con un sistema de compilación de confianza.
- G Poner en peligro el repositorio donde almacenas el software para tus usuarios internos o externos. Entre las medidas de mitigación que ayudan a reducir este riesgo, se incluyen las siguientes:
- Almacenar y usar copias de confianza de las dependencias de código abierto que necesites en almacenes de artefactos privados, como Artifact Registry.
- Validar la procedencia de la compilación y del origen.
- Restringir los permisos de subida a cuentas no humanas específicas y a administradores de repositorios. En Google Cloud, las cuentas de servicio actúan en nombre de servicios y aplicaciones.
Amenazas de implementación y de tiempo de ejecución
H: Si se resuelven las dependencias especificando un intervalo de versiones o una etiqueta que no esté asociada de forma permanente a una versión de compilación específica, pueden surgir varios problemas:
- Las compilaciones no son reproducibles porque las dependencias que usa una compilación la primera vez pueden ser diferentes de las que usa en futuras ejecuciones de la misma compilación.
- Una dependencia puede resolverse en una versión vulnerable o en una versión con cambios que dañen tu software. Los agentes malintencionados pueden aprovechar esta incertidumbre para que tu compilación elija su versión de un paquete en lugar de la que querías usar. Hay varias prácticas recomendadas para las dependencias que pueden ayudar a mitigar los riesgos de confusión de dependencias.
2: Poner en peligro el proceso de implementación. Si utilizas un proceso de implementación continua, poner en peligro ese proceso puede introducir cambios no deseados en el software que ofreces a tus usuarios. Puedes reducir los riesgos restringiendo el acceso a tu servicio de implementación y probando los cambios en entornos de preproducción. Cloud Deploy puede ayudarte a gestionar el proceso de entrega continua y la promoción entre entornos.
3: Implementar software vulnerado o que no cumpla los requisitos. Aplicar 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 cumplen los criterios de las políticas y bloquear el despliegue de imágenes de contenedor de fuentes que no sean de confianza.
4. Vulnerabilidades y errores de configuración en el software en ejecución.
- Se descubren vulnerabilidades nuevas con regularidad, lo que significa que los nuevos hallazgos pueden cambiar el nivel de riesgo de seguridad de tus aplicaciones en producción.
- Algunas configuraciones aumentan el riesgo de acceso no autorizado, como ejecutar como usuario root o permitir la apropiación de privilegios al ejecutar un contenedor.
El panel de control de la postura de seguridad de GKE muestra información sobre las vulnerabilidades y los problemas de configuración de tus cargas de trabajo en ejecución.
En Cloud Run, también puedes consultar estadísticas de seguridad sobre las revisiones desplegadas, incluidas las vulnerabilidades conocidas en las imágenes de contenedor que hayas desplegado.
Consulta Protección de compilaciones para obtener más información sobre cómo proteger tu fuente y Protección de implementaciones para saber cómo proteger las implementaciones.
Amenazas de dependencias
Las dependencias incluyen las dependencias directas de tus compilaciones, así como todas las dependencias transitivas, el árbol recursivo de dependencias que se encuentran en la parte inferior de tus dependencias directas.
En el diagrama, E indica que se está usando una dependencia incorrecta en tu compilación. Una dependencia incorrecta puede incluir lo siguiente:
- Cualquier software del que dependa tu aplicación, incluidos los componentes que desarrolles internamente, el software comercial de terceros y el software de código abierto.
- Vulnerabilidades procedentes de cualquiera de los otros vectores de ataque. Por ejemplo:
- Un atacante obtiene acceso a tu sistema de control de versiones 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. Crean y publican el componente directamente desde sus entornos de desarrollo locales e introducen accidentalmente una vulnerabilidad en una biblioteca que solo usan de forma local para hacer pruebas y depuraciones.
- Eliminación intencionada de una dependencia de código abierto de un repositorio público. La eliminación puede provocar que las pipelines de consumo se interrumpan si obtienen la dependencia directamente del repositorio público.
Consulta las prácticas recomendadas para las dependencias y descubre cómo reducir los riesgos.
Mitigar amenazas
La integridad general de tu cadena de suministro es tan sólida como su parte más vulnerable. Si no se tiene en cuenta un vector de ataque, aumenta el riesgo de que se produzca un ataque en esa parte de la cadena de suministro.
Al mismo tiempo, no es necesario que lo cambies todo de golpe. El efecto acumulativo de los actos, más conocido como el modelo del queso suizo, se aplica a la seguridad de la cadena de suministro de software. Cada medida que implementes reduce el riesgo y, si combinas medidas en toda tu cadena de suministro, aumentarás la protección frente a diferentes tipos de ataques.
- Evalúa tu estrategia de seguridad con frameworks y herramientas que te ayuden a evaluar la capacidad de tu organización para detectar, responder y solucionar amenazas.
- Descubre las prácticas recomendadas para proteger tu cadena de suministro de software y los Google Cloud productos diseñados para respaldar esas prácticas.
- Incorpora Google Cloud funciones de seguridad en tus procesos de desarrollo, compilación y despliegue para mejorar la postura de seguridad de tu cadena de suministro de software. Puedes implementar los servicios de forma gradual, en función de tus prioridades y de la infraestructura que ya tengas.
Siguientes pasos
- Evalúa tu estrategia de seguridad.
- Consulta las prácticas recomendadas para proteger tu cadena de suministro de software.