Vulnerabilidades en eBPF que permiten evadir la protección contra el ataque Spectre 4

Se han detectado dos vulnerabilidades en el núcleo de Linux que permiten el uso del subsistema eBPF para eludir la protección contra el ataque Spectre v4 (SSB, Speculative Store Bypass). Con un programa BPF no privilegiado, un atacante puede crear condiciones para la ejecución especulativa de ciertas operaciones y determinar el contenido de áreas arbitrarias de la memoria del núcleo. Los subsistemas acompañantes de eBPF en el núcleo han tenido acceso a un prototipo de exploit que demuestra la posibilidad de llevar a cabo ataques en la práctica. Los problemas se han resuelto mediante parches (1, 2), que formarán parte de la próxima actualización del núcleo de Linux. Las actualizaciones en las distribuciones aún no se han formado (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

El método de ataque Spectre 4 se basa en la recuperación de datos que han quedado en la caché del procesador después de descartar el resultado de la ejecución especulativa de operaciones al manejar operaciones alternadas de escritura y lectura utilizando direccionamiento indirecto. Cuando una operación de lectura sigue a una operación de escritura (por ejemplo, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), el desplazamiento de la dirección para la lectura ya puede ser conocido debido a la ejecución de operaciones similares (las operaciones de lectura se realizan con mucha más frecuencia y la lectura puede llevarse a cabo desde la caché) y el procesador puede ejecutar especulativamente la lectura antes de la escritura, sin esperar a que se calcule el desplazamiento de direccionamiento indirecto para la escritura.

Si después de calcular el desplazamiento se identifica una intersección de áreas de memoria para escritura y lectura, el procesador simplemente descartará el resultado de lectura ya especulativamente obtenido y repetirá esta operación. Esta característica permite que la instrucción de lectura acceda a un viejo valor en alguna dirección mientras la operación de guardado aún no se ha completado. Después de descartar la operación especulativa fallida, quedan rastros de su ejecución en la caché, después de lo cual se puede aplicar uno de los métodos para determinar el contenido de la caché basándose en el análisis del cambio en el tiempo de acceso a los datos en caché y no en caché.

La primera vulnerabilidad (CVE-2021-35477) se debe a una deficiencia en el mecanismo de verificación de programas BPF. Para protegerse contra el ataque Spectre 4, el verificador agrega una instrucción adicional después de las operaciones de guardado en memoria potencialmente problemáticas, que guarda un valor cero para eliminar los rastros de la operación anterior. Se supuso que la operación de escritura del cero se ejecutaría muy rápidamente y bloquearía la ejecución especulativa, ya que depende únicamente del puntero del marco de pila BPF. Sin embargo, en realidad se hicieron posibles condiciones en las que la instrucción que conduce a la ejecución especulativa puede ejecutarse antes de la operación de guardado eliminatorio.

La segunda vulnerabilidad (CVE-2021-3455) está relacionada con el hecho de que cuando el verificador BPF detecta operaciones de guardado en memoria potencialmente peligrosas, no se consideran las áreas no inicializadas de la pila BPF, cuya primera operación de escritura no está protegida. Esta particularidad da lugar a la posibilidad de llevar a cabo una operación de lectura especulativa, dependiente de un área de memoria no inicializada, antes de la ejecución de la instrucción de guardado. La nueva memoria para la pila BPF se asigna sin revisar el contenido ya existente en la memoria asignada, y antes de ejecutar el programa BPF hay un modo de controlar el contenido del área de memoria que luego será asignada a la pila BPF.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster