Descripción de la Vulnerabilidad

LangChain es un framework diseñado para construir agentes y aplicaciones potenciadas por LLM. En versiones anteriores a la 1.1.14, el componente langchain-openai presenta una vulnerabilidad crítica de Server-Side Request Forgery (SSRF) combinada con una condición de carrera Time-of-Check-Time-of-Use (TOCTOU).

Detalles Técnicos

La vulnerabilidad reside en la función auxiliar _url_to_size(), utilizada por get_num_tokens_from_messages para el conteo de tokens de imagen. El problema surge en el proceso de validación y obtención de URLs:

  1. La función primero valida las URLs para protección contra SSRF
  2. Posteriormente realiza una operación de red separada para obtener el contenido
  3. Cada operación utiliza resolución DNS independiente

Mecanismo de Ataque

Esta separación temporal entre validación y ejecución crea una ventana de vulnerabilidad TOCTOU que puede ser explotada mediante ataques de DNS rebinding:

  • Durante la fase de validación, un hostname controlado por el atacante puede resolver a una IP pública (pasando las verificaciones de seguridad)
  • Durante la operación de fetch real, el mismo hostname puede resolver a una IP privada o localhost
  • Esto permite eludir las protecciones SSRF y acceder a recursos internos

Impacto y Alcance

Esta vulnerabilidad permite a atacantes remotos:

  • Acceder a servicios internos y recursos de red privada
  • Realizar reconocimiento de infraestructura interna
  • Potencialmente exfiltrar información sensible de sistemas internos
  • Ejecutar ataques contra servicios que no deberían ser accesibles externamente

Población Afectada

Todas las instalaciones de langchain-openai en versiones anteriores a la 1.1.14 son vulnerables, especialmente aquellas que procesan URLs de imagen proporcionadas por usuarios o fuentes externas no confiables.