¿Qué tan seguro es su Proxy? Guía paso a paso para explotar la vulnerabilidad de día cero de Tinyproxy

Cisco Talos ha informado de una importante falla de seguridad , identificada como CVE-2023-49606, en el software ampliamente utilizado Tinyproxy. Esta vulnerabilidad, derivada del manejo inadecuado de los encabezados de conexión HTTP, expone los sistemas a una posible ejecución remota de código, lo que podría permitir a los atacantes tomar el control de los servidores afectados.

DESCRIPCIÓN GENERAL DE LA VULNERABILIDAD

Tinyproxy, un proxy HTTP minimalista de código abierto, está diseñado para brindar simplicidad y eficiencia, lo que lo hace popular en entornos donde se requieren servidores proxy livianos. La vulnerabilidad en cuestión surge en el análisis de los encabezados de conexión HTTP, un componente fundamental destinado a especificar qué encabezados son persistentes durante una sesión HTTP.

Según el informe de vulnerabilidad de Cisco Talos (TALOS-2023-1889), versiones específicas de Tinyproxy, concretamente 1.11.1 y 1.10.0, se ven afectadas. La falla existe en la remove_connection_headersfunción de Tinyproxy, donde puede ocurrir un error de uso después de la liberación. Este tipo de error de software es particularmente peligroso ya que puede provocar daños en la memoria, proporcionando al atacante una vía para ejecutar código arbitrario en la máquina host.

DESGLOSE TÉCNICO

El problema surge cuando Tinyproxy maneja encabezados HTTP que se supone deben eliminarse de acuerdo con las Connectiondirectivas del encabezado. Si un atacante manipula los encabezados Connectiono , puede provocar la reutilización de la memoria previamente liberada. Proxy-ConnectionEste escenario de uso después de la liberación se activa de la siguiente manera:

  • Tinyproxy itera sobre los encabezados especificados en el encabezado ConnectionProxy-Connection.
  • Cada encabezado especificado se elimina de un almacén clave-valor (hashofheaders) y posteriormente se libera su memoria.
  • Sin embargo, debido a un error en la gestión de estos encabezados, la memoria liberada se puede reutilizar antes de que se complete la función, lo que provoca daños en la memoria.

Esta vulnerabilidad es particularmente preocupante porque puede explotarse con una simple solicitud HTTP con formato incorrecto, lo que facilita que un atacante aproveche y potencialmente se apodere del sistema que ejecuta Tinyproxy.

EXPLOTABILIDAD E IMPACTO

La puntuación CVSSv3 para esta vulnerabilidad es 9,8 (crítica), lo que subraya su gravedad. Un atacante no necesita acceso autenticado al sistema de destino, lo que lo hace accesible para cualquier entidad maliciosa que pueda enviar solicitudes HTTP al proxy afectado. Los impactos potenciales incluyen acceso no autorizado, violaciones de datos, interrupción del servicio y, en casos graves, compromiso total del sistema.

Un problema de uso después de la liberación ocurre cuando una aplicación continúa usando una referencia de memoria (puntero) después de haber liberado la memoria a la que hace referencia el puntero. Esto puede provocar comportamientos impredecibles, incluidos bloqueos de aplicaciones, corrupción de datos y ejecución de código arbitrario.

EJEMPLO DE EXPLOTACIÓN PARA CVE-2023-49606

Configuración del escenario: imagine un escenario en el que un servidor ejecuta Tinyproxy versión 1.11.1. Se sabe que esta versión tiene una vulnerabilidad de uso después de la liberación en la forma en que procesa los encabezados de conexión HTTP.

Explotación paso a paso:

  1. Solicitud HTTP inicial por parte del atacante:
    • El atacante crea una solicitud HTTP que incluye Connectionencabezados especialmente diseñados. El objetivo es manipular estos encabezados para activar la condición de uso después de la liberación.
    • Ejemplo de solicitud HTTP:
      • GET / HTTP/1.1
      • Host: vulnerable-proxy.com
      • Connection: keep-alive, maliciousHeader
      • maliciousHeader: freeThis
  2. Procesando la Solicitud:
    • Tinyproxy recibe la solicitud y analiza los encabezados. Según las especificaciones, debe eliminar los encabezados que figuran en el Connection encabezado después de procesar la solicitud.
    • Se llama a la remove_connection_headersfunción para manejar esta tarea.
  3. Activando el uso después de la liberación:
    • Durante el procesamiento, Tinyproxy elimina maliciousHeader y libera la memoria asociada a él. Sin embargo, debido a una falla en la administración de la memoria del proxy, esta memoria liberada podría reasignarse para nuevos datos sin dejar de ser referenciada por el proceso en curso.
    • Supongamos que la memoria liberada se reasigna rápidamente y se llena con datos controlados por el atacante a través de otra parte de la aplicación (u otra solicitud procesada simultáneamente).
  4. Explotando la memoria liberada:
    • El atacante anticipa que Tinyproxy accederá nuevamente a esta memoria liberada (y ahora reasignada) antes de que se complete la función. Si esta memoria ahora contiene código ejecutable o datos creados por el atacante, es posible que la aplicación la ejecute o la utilice incorrectamente.
    • Por ejemplo, si la ubicación de la memoria se utiliza para almacenar un puntero de función, el atacante podría sobrescribir este puntero con la dirección de su código malicioso.
  5. Ejecutando código arbitrario:
    • Cuando Tinyproxy intenta acceder a la memoria “liberada” como parte de sus operaciones habituales (por ejemplo, para registrar detalles o continuar procesando encabezados), sin darse cuenta ejecuta el código señalado por el puntero sobrescrito.
    • Esto podría permitir al atacante ejecutar código arbitrario en el servidor que ejecuta Tinyproxy, dándole potencialmente control total sobre el servidor.

Ejemplo de impacto malicioso:

  • El atacante podría instalar puertas traseras, filtrar datos confidenciales, lanzar más ataques desde el servidor comprometido o interrumpir las operaciones del servidor.

MITIGACIÓN Y RESPUESTA

A partir de la última actualización de Cisco Talos, no ha habido ningún parche oficial o lanzamiento de mantenimiento por parte de los mantenedores de Tinyproxy para corregir esta vulnerabilidad. Se recomienda a las organizaciones que utilizan Tinyproxy que supervisen de cerca sus sistemas para detectar actividades inusuales e implementen medidas de seguridad adicionales hasta que haya un parche disponible. Esto puede incluir:

  • Implementar firewalls de aplicaciones web (WAF) para filtrar encabezados HTTP maliciosos.
  • Aislar el servidor proxy de las redes internas críticas.
  • Actualizar periódicamente todo el software a las últimas versiones siempre que sea posible.

Para los usuarios y administradores de Tinyproxy, es fundamental comprender la mecánica técnica de esta vulnerabilidad y mantenerse atentos a la supervisión del tráfico de su red. Se recomienda tomar medidas inmediatas para mitigar los riesgos asociados con esta vulnerabilidad crítica hasta que se emita una solución permanente.