1 puntos por GN⁺ 2024-08-10 | Aún no hay comentarios. | Compartir por WhatsApp

CVE-2023-2163: descubrimiento y corrección de una vulnerabilidad de eBPF en el kernel de Linux

Contexto

  • eBPF es una tecnología que permite ampliar en tiempo de ejecución las funciones del kernel de Linux sin escribir módulos de kernel complejos.
  • Los programas eBPF se ejecutan cuando ocurren ciertos eventos y deben pasar una verificación de seguridad antes de cargarse.
  • El verificador (verifier) está compuesto por código complejo y se han encontrado muchas vulnerabilidades en él.
  • Google desarrolló Buzzer, un fuzzer que audita automáticamente el verificador de eBPF.

Estrategia de aritmética de punteros de Buzzer

  • Buzzer es un nuevo fuzzer para eBPF que usa una estrategia orientada a provocar errores lógicos.
  • La estrategia de aritmética de punteros consta de los siguientes pasos:
    1. Generar un encabezado que inicializa registros con valores aleatorios
    2. Generar instrucciones aritméticas y de salto aleatorias
    3. Elegir un registro aleatorio y realizar una suma con un puntero a un elemento de un mapa eBPF
    4. Escribir un valor mágico en ese elemento

Poda de rutas en eBPF

  • El verificador de eBPF se encarga de comprobar si un programa puede ejecutarse de forma segura.
  • Cuando hay una condición, simula todos los estados posibles.
  • Si hay muchos saltos condicionales, usa una estrategia de poda de rutas para mejorar el rendimiento.

El bug

  • CVE-2023-2163 introdujo el concepto de "seguimiento preciso" para hacer más eficiente la poda de rutas.
  • El bug ocurrió porque se pasó por alto que el registro r9 contribuía a la precisión de r6.

Explotación

  • Al explotar CVE-2023-2163 se logró lectura/escritura arbitraria, además de LPE y escape de contenedor.
  • Pasos principales:
    1. Lograr lectura/escritura arbitraria
    2. Encontrar las credenciales del proceso y elevar privilegios

Corrección

  • Para corregir CVE-2023-2163, se marcó como preciso el registro impreciso en las operaciones que afectaban a registros precisos.
  • El impacto en el rendimiento no está claro, pero no se encontraron problemas adicionales.

Ideas a futuro

  • Garantizar la seguridad de los programas eBPF es difícil debido a la complejidad del proceso de verificación.
  • Google está abordando este problema con Buzzer y da la bienvenida a contribuciones de la comunidad de código abierto.

Resumen de GN⁺

  • Este artículo explica el proceso de descubrir y corregir una vulnerabilidad en el verificador de eBPF.
  • eBPF es una tecnología importante en la investigación de seguridad del kernel, y garantizar su seguridad es difícil.
  • Google desarrolló un fuzzer llamado Buzzer para auditar automáticamente vulnerabilidades en el verificador de eBPF.
  • Este artículo es útil para investigadores de seguridad y desarrolladores, y ayuda a garantizar la seguridad de sistemas complejos como eBPF.
  • Entre los proyectos con funciones similares se encuentran otras herramientas de fuzzing relacionadas con eBPF.

Aún no hay comentarios.

Aún no hay comentarios.