Istio publica los resultados de la auditoría de seguridad de 2022

La revisión de seguridad de Istio encuentra un CVE en la biblioteca estándar de Go.

Jan 30, 2023 | Por Craig Box - ARMO, para el Grupo de Trabajo de Seguridad de Productos de Istio

Istio es un proyecto en el que los ingenieros de plataforma confían para aplicar las políticas de seguridad en sus entornos de Kubernetes de producción. Prestamos mucha atención a la seguridad en nuestro código y mantenemos un programa de vulnerabilidades robusto. Para validar nuestro trabajo, periódicamente invitamos a una revisión externa del proyecto, y nos complace publicar los resultados de nuestra segunda auditoría de seguridad.

La evaluación de los auditores fue que “Istio es un proyecto bien mantenido que tiene un enfoque fuerte y sostenible de la seguridad”. No se encontraron problemas críticos; lo más destacado del informe fue el descubrimiento de una vulnerabilidad en el lenguaje de programación Go.

Queremos agradecer a la Cloud Native Computing Foundation por financiar este trabajo, como un beneficio que se nos ofreció después de unirnos a la CNCF en agosto. Fue organizado por OSTIF y realizado por ADA Logics.

Alcance y hallazgos generales

Istio recibió su primera evaluación de seguridad en 2020, y su data plane, el proxy Envoy, fue evaluado independientemente en 2018 y 2021. Por lo tanto, el Grupo de Trabajo de Seguridad de Productos de Istio y ADA Logics decidieron el siguiente alcance:

Una vez más, no se encontraron problemas críticos en la revisión. La evaluación encontró 11 problemas de seguridad; dos altos, cuatro medios, cuatro bajos y uno informativo. Todos los problemas reportados han sido corregidos.

Además de sus observaciones anteriores, los auditores señalan que Istio sigue un alto nivel de estándares de la industria en el manejo de la seguridad. En particular, destacan que:

Resolución y aprendizajes

Vulnerabilidad de contrabando de solicitudes en Go

Los auditores descubrieron una situación en la que Istio podría aceptar tráfico usando HTTP/2 Over Cleartext (h2c), un método para realizar una conexión no cifrada con HTTP/1.1 y luego actualizar a HTTP/2. La biblioteca Go para conexiones h2c lee toda la solicitud en la memoria, y señala que si desea evitar esto, la solicitud debe envolverse en un MaxBytesHandler.

Al corregir este error, John Howard, miembro del TOC de Istio, notó que la corrección recomendada introduce una vulnerabilidad de contrabando de solicitudes. Por lo tanto, el equipo de Go publicó CVE-2022-41721 — ¡la única vulnerabilidad descubierta por esta auditoría!

Istio ha sido modificado desde entonces para deshabilitar el soporte de actualización h2c por completo.

Mejoras en la recuperación de archivos

La clase de problemas más común encontrada estuvo relacionada con Istio recuperando archivos a través de una red (por ejemplo, el Operador de Istio instalando gráficos de Helm, o el descargador de módulos WebAssembly):

Para ejecutar estas rutas de código, un atacante necesitaría suficientes privilegios para especificar una URL para un gráfico de Helm o un módulo WebAssembly. Con ese acceso, no necesitarían un exploit: ya podrían causar que se instale un gráfico arbitrario en el clúster o que se cargue un módulo WebAssembly arbitrario en la memoria en los servidores proxy.

Tanto los auditores como los mantenedores señalan que el Operador no se recomienda como método de instalación, ya que esto requiere que se ejecute un controlador de alto privilegio en el clúster.

Otros problemas

Los problemas restantes encontrados fueron:

Consulte el informe completo para obtener más detalles.

Revisión del informe de 2020

Se encontró que todos los 18 problemas reportados en la primera evaluación de seguridad de Istio habían sido corregidos.

Fuzzing

El proyecto OSS-Fuzz ayuda a los proyectos de código abierto a realizar pruebas de fuzzing gratuitas. Istio está integrado en OSS-Fuzz con 63 fuzzers ejecutándose continuamente: este soporte fue construido por ADA Logics y el equipo de Istio a fines de 2021.

La evaluación señala que “Istio se beneficia en gran medida de tener un conjunto sustancial de pruebas de fuzzing que se ejecutan continuamente en OSS-Fuzz”, e identificó algunas APIs en código crítico de seguridad que se beneficiarían de más fuzzing. Se contribuyeron seis nuevos fuzzers como resultado de este trabajo; al final de la auditoría, las nuevas pruebas se habían ejecutado más de 3 mil millones de veces.

SLSA

Supply chain Levels for Software Artifacts (SLSA) es una lista de verificación de estándares y controles para prevenir la manipulación, mejorar la integridad y asegurar los paquetes de software y la infraestructura. Está organizado en una serie de niveles que proporcionan garantías de integridad crecientes.

Istio actualmente no genera artefactos de procedencia, por lo que no cumple con los requisitos para ningún nivel SLSA. El trabajo para alcanzar el nivel 1 de SLSA está actualmente en curso. Si desea involucrarse, únase al Slack de Istio y comuníquese con nuestro grupo de trabajo de Test and Release.

Participe

Si desea involucrarse con la seguridad de productos de Istio, o convertirse en un mantenedor, ¡nos encantaría tenerte! Únase a nuestras reuniones públicas para plantear problemas o aprender sobre lo que estamos haciendo para mantener Istio seguro.

Share this post