Descripción de la Vulnerabilidad

LangChain es un framework para construir agentes y aplicaciones potenciadas por LLM. En versiones anteriores a langchain-text-splitters 1.1.2, el método HTMLHeaderTextSplitter.split_text_from_url() presenta una vulnerabilidad de Server-Side Request Forgery (SSRF) que permite a atacantes realizar solicitudes no autorizadas a recursos internos.

Mecanismo de la Vulnerabilidad

La vulnerabilidad surge debido a una validación incompleta del proceso de redirección HTTP. Aunque el método valida la URL inicial utilizando validate_safe_url(), posteriormente ejecuta la solicitud con requests.get() manteniendo las redirecciones habilitadas por defecto. El problema crítico radica en que los destinos de redirección no son revalidados, creando una ventana de oportunidad para ataques SSRF.

Un atacante puede proporcionar una URL que apunte a un servidor bajo su control, el cual puede redirigir la solicitud hacia endpoints internos, localhost, o servicios de metadatos cloud, efectivamente bypaseando las protecciones SSRF implementadas en la validación inicial.

Impacto y Exposición de Datos

El cuerpo de respuesta obtenido a través de esta vulnerabilidad es procesado y retornado como objetos Document al código de aplicación que realiza la llamada. El impacto en términos de exfiltración de datos depende significativamente de la implementación específica de la aplicación:

Aplicaciones Vulnerables a Exfiltración: Aquellas que exponen el contenido de los objetos Document (o sus derivados) de vuelta al solicitante que proporcionó la URL original. En estos casos, datos sensibles de endpoints internos podrían ser filtrados al atacante.

Aplicaciones con Exposición Limitada: Las aplicaciones que almacenan o procesan los objetos Document internamente sin retornar contenido crudo al solicitante no están directamente expuestas a exfiltración de datos a través de esta vulnerabilidad específica.

Vectores de Ataque

Los atacantes pueden explotar esta vulnerabilidad para acceder a:

  • Servicios de metadatos cloud (AWS EC2, Google Cloud, Azure)
  • Endpoints de localhost y servicios internos
  • APIs internas no expuestas públicamente
  • Recursos de red privada accesibles desde el servidor

Mitigación

La vulnerabilidad ha sido corregida en la versión 1.1.2 de langchain-text-splitters. Se recomienda encarecidamente actualizar a esta versión o posterior para eliminar el riesgo de explotación SSRF.