Media

PraisonAI vulnerable to Server-Side Request Forgery via DNS rebinding bypass in webhook_url validation

  • Publicada: 25.08.2026
  • Actualizado: 11.10.2026 15:18

Summary

The webhook_url field in the Jobs API silently passes validation when DNS resolution fails (socket.gaierror), enabling DNS rebinding attacks. An attacker's domain can initially resolve to a public IP (passing validation) then switch to an internal IP before the server makes the HTTP request.

Details

The validator catches socket.gaierror and silently allows the URL:

python
# src/praisonai/praisonai/jobs/models.py:55
try:
    ip = socket.gethostbyname(hostname)
    ip_obj = ipaddress.ip_address(ip)
    if ip_obj.is_private or ip_obj.is_loopback:
        raise ValueError("private address")
except socket.gaierror:
    pass  # BUG: DNS failure silently ignored → SSRF bypass

The HTTP call is made later with no re-validation:

python
# src/praisonai/praisonai/jobs/executor.py:402
async with httpx.AsyncClient() as client:
    await client.post(job.webhook_url, ...)  # no second IP check

Proof of Concept

DNS rebinding flow:

  1. Register attacker.com with TTL=1s → resolves to 1.2.3.4 (public IP)
  2. Submit job: webhook_url=http://attacker.com/callback
  3. Validation passes (public IP)
  4. Switch DNS: attacker.com → 127.0.0.1
  5. Job completes → server POSTs to 127.0.0.1 → internal SSRF

Unresolvable domain bypass (no DNS rebinding required):

bash
curl -X POST http://:8005/api/v1/runs \
  -d '{"prompt":"run","webhook_url":"http://unresolvable.internal/cb","agent_yaml":"..."}'
# Validation: gaierror → pass → URL accepted

Impact

SSRF to internal HTTP services: admin panels, databases, and cloud metadata APIs (e.g., http://169.254.169.254/). Exploitable without authentication.

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Python (PyPI) praisonai < 4.6.58 4.6.58

Referencias

Puntuación CVSS 6.8/10
Vector CVSS
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:N/A:N
Debilidad (CWE)
CWE-367, CWE-918
Plataforma
Python (PyPI)
Paquete
praisonai
Publicada
25.08.2026
Actualizado
11.10.2026 15:18

Fuentes y licencias

OSV / GitHub Advisory Database - PYSEC-2026-3890 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-hmfx-4v44-9qw9 - CC BY 4.0

Historial de vulnerabilidades: praisonai

Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (104) en el archivo
Entradas en total
104
Primera → última
04.2026 10.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Crítica 27
  • Alta 60
  • Media 17

Divulgaciones por año

  1. 2026: 104
Gravedad:
  1. Alta · 7.5 CVE-2026-61439 < 4.6.78 4.6.78
  2. PraisonAI vulnerable to Server-Side Request Forgery via DNS rebinding bypass in webhook_url validation esta entrada
    Media · 6.8 CVE-2026-55535 < 4.6.58 4.6.58
Mostrar más (20) Mostrando 20 de 88

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.