Ir al contenido principal
BlogSeguridadLinode Security Digest 13-19 de marzo de 2023

Linode Security Digest 13-19 de marzo de 2023

Linode Security Digest

En el resumen de esta semana hablaremos de:

  • falta el estado adecuado, el nonce y las comprobaciones PKCE para la autenticación OAuth ;
  • Apache Servidor HTTP: mod_proxy_uwsgi División de respuesta HTTP; 
  • ShadowsocksX-NG firma con derechos com.apple.security.get-task-allow debido a CODE_SIGNING_INJECT_BASE_ENTITLEMENTS; y
  • un problema de control de acceso en runc que permite a un atacante escalar privilegios dentro de un contenedor.
CVE-2023-27490: Faltan comprobaciones adecuadas de estado, nonce y PKCE para la autenticación OAuth

Fondo

OAuth (Open Authorization) es un protocolo estándar abierto que permite a aplicaciones de terceros acceder a recursos en nombre de un usuario sin necesidad de conocer sus credenciales, como un nombre de usuario y una contraseña. OAuth funciona permitiendo al usuario conceder acceso a sus recursos autenticándose con el propietario del recurso (por ejemplo, una plataforma de redes sociales) y obteniendo un token de acceso, que se utiliza entonces para acceder a los recursos en nombre del usuario. Este token de acceso es emitido por el propietario del recurso y puede ser utilizado por la aplicación de terceros para acceder a los recursos del usuario sin necesidad de conocer sus credenciales de inicio de sesión.

Vulnerabilidad

La vulnerabilidad CVE-2023-27490, existe en el paquete Next-auth, que está relacionada con el flujo de autenticación OAuth . Concretamente, se produce durante una sesión de OAuth cuando la URL de autorización es interceptada y manipulada por un atacante. Esta vulnerabilidad puede permitir al atacante iniciar sesión como la víctima y eludir la protección CSRF que normalmente está en su lugar. En el flujo OAuth , la URL de autorización se utiliza para iniciar el proceso de autenticación y solicitar acceso a los recursos del usuario. La URL contiene parámetros importantes, como el estado, el pkce y el nonce, que se utilizan para evitar ataques como CSRF, ataques de repetición y robo de tokens. Sin embargo, si la URL de autorización es interceptada y manipulada por un atacante, estas protecciones pueden ser eludidas, dando lugar a la vulnerabilidad descrita en el paquete Next-auth.

La causa raíz de la vulnerabilidad es un fallo parcial que se produce durante una sesión comprometida en OAuth . En concreto, se genera erróneamente un código de sesión que permite al atacante saltarse la protección CSRF e iniciar sesión como la víctima.

Mitigación

  • La vulnerabilidad se ha solucionado en la versión v4.20.1 de next-auth, por lo que se recomienda actualizar a la última versión para solucionar este problema.
  • Sin embargo, al utilizar la inicialización avanzada, los desarrolladores pueden comprobar manualmente el estado, el pkce y el nonce de la solicitud de devolución de llamada con la configuración del proveedor, y abortar el proceso de inicio de sesión si hay alguna discrepancia.
CVE-2023-27522: Apache Servidor HTTP: mod_proxy_uwsgi HTTP response splitting

Fondo

El contrabando de peticiones HTTP es una vulnerabilidad de las aplicaciones web que se produce cuando un atacante puede manipular la forma en que una aplicación o un servidor web procesa las peticiones HTTP enviadas por un cliente. Esta vulnerabilidad puede permitir a un atacante eludir los controles de seguridad, realizar acciones no autorizadas o robar datos confidenciales.

El ataque suele consistir en explotar incoherencias en la forma en que un servidor web front-end y un servidor o aplicación back-end gestionan las peticiones HTTP, como la interpretación de las cabeceras Content-Length o la gestión de la codificación en trozos. Mediante la manipulación de estas inconsistencias, un atacante puede crear una solicitud que sea interpretada de manera diferente por los dos servidores, lo que resulta en que la solicitud sea procesada incorrectamente o que el servidor front-end actúe como un proxy para el atacante para ejecutar solicitudes maliciosas en nombre del atacante.

Vulnerabilidad

La vulnerabilidad CVE-2023-27522 afecta a las versiones 2.4.30 a 2.4.55 de Apache HTTP Server, concretamente a través del módulo mod_proxy_uwsgi. La vulnerabilidad se produce cuando el servidor de origen envía una cabecera de respuesta HTTP especialmente diseñada que contiene ciertos caracteres especiales, como espacios o tabulaciones, seguidos de una cabecera "Content-Length".

El módulo mod_proxy_uwsgi de Apache HTTP Server puede malinterpretar este encabezado y reenviar la respuesta al cliente con un encabezado "Content-Length" truncado o dividido. Esto puede hacer que el cliente reciba respuestas incompletas o incorrectas, permitiendo potencialmente a un atacante realizar varios tipos de ataques, como fuga de datos, falsificación de peticiones del lado del servidor (SSRF), cross-site scripting (XSS) y ejecución remota de código (RCE).

Mitigación

  • Se recomienda actualizar a la última versión de Apache HTTP Server o aplicar los parches disponibles. 
  • Además, se pueden utilizar cortafuegos de aplicaciones web y sistemas de detección de intrusiones para detectar y prevenir ataques de contrabando de respuestas HTTP. 
  • También es importante asegurarse de que se utilizan técnicas adecuadas de validación de entrada y codificación de salida para evitar la inyección de caracteres especiales en las respuestas HTTP.
CVE-2023-27574: ShadowsocksX-NG firma con com.apple.security.get-task-allow 

Fondo

ShadowsocksX-NG es una aplicación gratuita y de código abierto que ayuda a los usuarios a eludir la censura en Internet mediante la creación de un proxy socks5 seguro a través del cual pueden acceder a Internet.

Cuando una aplicación está desarrollada y lista para su distribución, es necesario firmarla con un certificado válido para garantizar que es legítima y no ha sido manipulada. Este proceso se denomina firma de código.

Uno de los requisitos para la firma de código es incluir derechos, que son permisos que una aplicación necesita para funcionar correctamente. Los derechos especifican a qué recursos y acciones puede acceder la aplicación, como la red, el sistema de archivos o el hardware.

Vulnerabilidad

La vulnerabilidad CVE-2023-27574 existe en la aplicación ShadowsocksX-NG versión 1.10. 0 que está firmada con un entitlement llamado com.apple.security.get-task-allow. Este derecho permite que la aplicación sea depurada e inspeccionada por herramientas de desarrollo, como Xcode, incluso cuando se está ejecutando en el dispositivo de un usuario.

La razón de incluir este derecho se debe a una función denominada CODE_SIGNING_INJECT_BASE_ENTITLEMENTS. Esta función forma parte del proceso de firma de código y permite a los desarrolladores incluir derechos adicionales a los especificados explícitamente en el archivo de derechos de la aplicación. En otras palabras, cuando la función CODE_SIGNING_INJECT_BASE_ENTITLEMENTS está activada, Xcode inyecta automáticamente un conjunto de derechos predeterminados en la firma de la aplicación. Estos derechos se basan en la cuenta del desarrollador y en la configuración del proyecto. Incluyen el derecho com.apple.security.get-task-allow por defecto.

El problema con este enfoque es que los atacantes pueden abusar del derecho com.apple.security.get-task-allow para obtener información sensible de la memoria de la aplicación, como claves de cifrado u otros datos sensibles. Esto podría hacerse explotando una vulnerabilidad en la aplicación o utilizando una herramienta de terceros para leer la memoria de la aplicación.

Mitigación

  • Se recomienda a los usuarios de la versión 1.10.0 de ShadowsocksX-NG que actualicen a una versión posterior que no incluya los derechos com.apple.security.get-task-allow o que eliminen manualmente los derechos de la firma de código de la aplicación.
  • Además, los usuarios deben tener cuidado al utilizar programas VPN/proxy y asegurarse de que están utilizando una versión segura y fiable del programa.
CVE-2019-5736: Problema de control de acceso en runc

Fondo

runc es una utilidad de línea de comandos para generar y ejecutar contenedores de acuerdo con las especificaciones de la Open Container Initiative (OCI). Se utiliza habitualmente en entornos de ejecución de contenedores como Docker, Kubernetes y otros.

Vulnerabilidad

Esta vulnerabilidad CVE-2019-5736 es un problema de control de acceso que permite a un atacante escalar privilegios dentro de un contenedor. En concreto, el problema está relacionado con la forma en que la versión de runc hasta la 1.1.4 gestiona el sistema de archivos raíz(rootfs) al iniciar un contenedor.

En libcontainer/rootfs_linux.gorunc configura el rootfs de un contenedor montándolo como de sólo lectura y luego superponiendo una capa de escritura sobre él. Este proceso se utiliza para crear el sistema de archivos del contenedor y aislarlo del sistema anfitrión.

Sin embargo, un fallo en este código permite a un atacante sobrescribir el archivo /proc/self/exe del sistema anfitrión, que es un enlace simbólico al propio binario runc. Al hacerlo, el atacante puede ejecutar código arbitrario con privilegios elevados, escapando efectivamente del contenedor y obteniendo el control del sistema anfitrión.

Mitigación

  • Actualice a una versión parcheada: La actualización a una versión parcheada de runc es la forma más eficaz de mitigar esta vulnerabilidad. Las versiones de runc 1.0.0-rc6 y posteriores incluyen una corrección para esta vulnerabilidad.
  • Actualice los tiempos de ejecución de contenedores: Si utiliza un entorno de ejecución de contenedores como Docker o Kubernetes, asegúrese de actualizar a una versión que incluya la versión parcheada de runc.
  • Implementar controles de acceso: Para mitigar el riesgo de esta vulnerabilidad, se deben implementar controles de acceso para limitar la capacidad de los atacantes de generar contenedores con configuraciones personalizadas de montaje de volúmenes y ejecutar imágenes personalizadas. 
  • Minimizar los privilegios de los contenedores: Minimizar los privilegios de los contenedores puede ayudar a limitar el alcance de un posible ataque. Esto puede lograrse ejecutando contenedores como usuarios no root, restringiendo las capacidades de los contenedores y limitando el acceso a los recursos sensibles del host.

Comentarios

Dejar una respuesta

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