Ir al contenido principal
BlogSeguridadLinode Security Digest 20 - 26 de marzo de 2022

Resumen de seguridad de Linode del 20 al 26 de marzo de 2022

Linode Security Digest

Esta semana, discutiremos algunas vulnerabilidades de alta gravedad en el kernel de Linux, Apache, y openssl.

Denegación de servicio ICMPv6 en el núcleo de Linux

CVE-2022-0742 permite a cualquiera enviar mensajes ICMPv6 de tipo 130 o 131 y explotar una fuga de memoria en el kernel que hace que el host se quede sin memoria. Esta vulnerabilidad es digna de mención porque un atacante puede causar una denegación de servicio para todo el sistema enviando sólo unos pocos paquetes.

Causa raíz - Para encontrar la causa raíz, el mejor lugar para buscar es el propio historial de commits de git. El autor de la corrección encontró esto inicialmente mientras investigaba por qué la función synchronize_net() fue añadida dentro de ipv6_mc_down(). El autor del commit encontró que igmp6_event_query() e igmp6_event_report() estaban dejando caer skbs, que son las estructuras de datos utilizadas por el kernel de linux para mantener la información sobre los paquetes. Esta vulnerabilidad aún está siendo analizada.

Hay algunas advertencias sobre esta vulnerabilidad: 

  • Esto no afecta a ninguna versión de Red Hat Enterprise Linux ya que los kernels disponibles son anteriores a la 5.13.
  • La rama estable se vio afectada.

La única posibilidad de solucionar esta vulnerabilidad es actualizando el kernel. Ya se ha aplicado un parche para solucionar esta vulnerabilidad en la corriente principal.

Apache Aviso de seguridad

La vulnerabilidad en la que nos centraremos principalmente es la CVE-2022-23943, pero primero resumiremos rápidamente las demás CVE del aviso. Las otras vulnerabilidades que aparecen en este aviso son CVE-2022-22720, una vulnerabilidad que permite el contrabando de peticiones http. También está la CVE-2022-22721, que permite desbordamientos de enteros en sistemas de 32 bits si LimitXMLRequestBody en httpd.conf es mayor de 350MB. CVE-2022-22719 provoca un fallo debido a que mod_lua tiene variables no inicializadas. 

mod_sed es un módulo opcional de Apache que no está instalado ni activado por defecto en la mayoría de los sistemas Linux. Se utiliza para reemplazar el texto de las páginas web que sirve Apache utilizando un patrón, de forma similar a como funciona el comando sed.

CVE-2022-23943 es una vulnerabilidad de corrupción de memoria que puede causar un DoS. La vulnerabilidad de corrupción de memoria proviene de mod_sed. El exploit se activa al enviar grandes cantidades de datos a través de los filtros de mod_sed. Si el paquete enviado es mayor de 2GB, se producirá un desbordamiento de enteros con signo y causará un fallo. Si se envían más de 4 GB, también se producirá un desbordamiento de enteros.

Causa raíz - La causa raíz es de la función appendmem_to_linebuf cuando se llama a memcpy. La corrección que se aplicó cambió el buffer referenciado en los parámetros de las funciones para usar apr_size_t en lugar de int. Apr_size_t permite el uso de un int con signo de 4 bytes, y 8 bytes sin signo.

Hay algunas advertencias sobre esta vulnerabilidad:

  • mod_sed se utiliza raramente; y
  • mod_sed necesita ser instalado y configurado manualmente. Por lo general, no se incluye como dependencia de otros paquetes.

Las soluciones recomendadas para esta vulnerabilidad incluyen:

  • Actualización de Apache a una versión superior a la 2.4.52
  • Desactivación de mod_sed

Se puede aplicar una mitigación parcial estableciendo LimitRequestBody 1073741824 en httpd.conf. Sin embargo, esto sólo bloqueará a los clientes maliciosos para que no envíen una solicitud de más de 2GB. Un atacante aún puede ser capaz de desencadenar mod_sed para leer un archivo mayor de 2GB, causando el exploit.

Denegación de servicio en OpenSSL

OpenSSL es una biblioteca y un programa de línea de comandos para gestionar, crear, verificar y firmar certificados. Es una de las bibliotecas de criptografía de código abierto más antiguas y se utiliza casi universalmente en todos los sistemas linux.

OpenSSL utiliza la función BN_mod_sqrt(), que calcula una raíz cuadrada modular. Contiene un error por el que los módulos no primos pueden entrar en un bucle eterno. Se utiliza en la verificación de certificados que contienen claves públicas de curva elíptica en forma comprimida o parámetros explícitos de curva elíptica con un punto base codificado en forma comprimida. Para manipular un certificado para causar DoS, el atacante necesita modificar un certificado que utiliza una curva elíptica con algo como un editor hexadecimal para hacerlo matemáticamente inválido.

Causa raíz - El núcleo de la vulnerabilidad se encuentra en el análisis de claves EC con puntos en formato comprimido; al analizar este tipo de claves, OpenSSL intentará expandir el punto comprimido, tratando de calcular una raíz cuadrada módulo al primo p sobre el que se define la curva. Sin embargo, la primalidad de p no se comprueba en ninguna parte, ni siquiera en BN_mod_sqrt() para la que es un requisito; por lo tanto, un error en la implementación causará un bucle infinito debido a que p no es primo como se esperaba. El aviso para OpenSSL se puede encontrar aquí. Actualmente las versiones parcheadas son:

  • OpenSSL 3.0.2
  • OpenSSL 1.1.1n  
  • OpenSSL 1.0.2zd 

Además, hay algunas advertencias para explotar con éxito esta vulnerabilidad y deben cumplirse las siguientes condiciones:

  • Un atacante genera un certificado utilizando criptografía de curva elíptica con ciertos parámetros no válidos, o modifica un certificado existente.
  • Un atacante necesita hacer que OpenSSL verifique el certificado, ya sea a través de un acceso local, o proporcionándolo a una aplicación web que utilice mTLS que verifique los certificados proporcionados por el usuario.

Comentarios

Dejar una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *.