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:
- La función primero valida las URLs para protección contra SSRF
- Posteriormente realiza una operación de red separada para obtener el contenido
- 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.
