All vulnerabilities
CVE-2026-57114GHSA-rjvw-7vvw-549vPYSEC-2026-3519

PraisonAI: Jobs webhook SSRF protection bypass via DNS rebinding

MervinPraison PraisonAIPyPILibraries & packages
CVSS
7.2High
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)No scoreNo FIRST EPSS score in this snapshot yet
Fixed in4.6.59Fixed versionOSV
Published23 Oct 2026Updated 23 Oct 2026CVE List

What fixes it

  • 4.6.59praisonai, PyPIOSVpip install "praisonai>=4.6.59"

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

PraisonAI is a multi-agent teams system. From version 4.5.126 to before version 4.6.59, PraisonAI's Async Jobs API validates webhook_url when a job request is parsed and again when the internal Job object is constructed. That validation blocks direct loopback/private targets, but it is not bound to the later network request. When a job completes, _send_webhook() passes the original hostname to httpx.AsyncClient.post() with no send-time validation, IP pinning, or guarded transport. An attacker-controlled hostname can therefore resolve to a public IP during Pydantic validation and later resolve to loopback/private/cloud-metadata infrastructure during webhook delivery. This bypasses the intended SSRF guard in current supported releases. This appears to be an incomplete fix / patch bypass for GHSA-8frj-8q3m-xhgm. This issue has been patched in version 4.6.59.

Text from CVE List

Affected versions 53

  • PraisonAIaffected: >= 4.5.126, < 4.6.59CVE List
  • praisonai, pip>= 4.5.126, <= 4.6.57GitHub
  • praisonai, PyPIfrom 4.5.126, fixed in 4.6.59OSV
  • praisonai, PyPI4.5.126OSV
  • praisonai, PyPI4.5.127OSV
  • praisonai, PyPI4.5.128OSV
  • praisonai, PyPI4.5.129OSV
  • praisonai, PyPI4.5.130OSV
  • praisonai, PyPI4.5.131OSV
  • praisonai, PyPI4.5.132OSV
  • praisonai, PyPI4.5.133OSV
  • praisonai, PyPI4.5.134OSV
  • praisonai, PyPI4.5.135OSV
  • praisonai, PyPI4.5.136OSV
  • praisonai, PyPI4.5.137OSV
  • praisonai, PyPI4.5.139OSV
  • praisonai, PyPI4.5.140OSV
  • praisonai, PyPI4.5.143OSV
  • praisonai, PyPI4.5.144OSV
  • praisonai, PyPI4.5.145OSV
  • praisonai, PyPI4.5.149OSV
  • praisonai, PyPI4.6.10OSV
  • praisonai, PyPI4.6.11OSV
  • praisonai, PyPI4.6.12OSV
  • praisonai, PyPI4.6.13OSV
  • praisonai, PyPI4.6.14OSV
  • praisonai, PyPI4.6.15OSV
  • praisonai, PyPI4.6.16OSV
  • praisonai, PyPI4.6.18OSV
  • praisonai, PyPI4.6.19OSV
  • praisonai, PyPI4.6.20OSV
  • praisonai, PyPI4.6.21OSV
  • praisonai, PyPI4.6.22OSV
  • praisonai, PyPI4.6.23OSV
  • praisonai, PyPI4.6.24OSV
  • praisonai, PyPI4.6.25OSV
  • praisonai, PyPI4.6.26OSV
  • praisonai, PyPI4.6.27OSV
  • praisonai, PyPI4.6.28OSV
  • praisonai, PyPI4.6.29OSV
  • praisonai, PyPI4.6.30OSV
  • praisonai, PyPI4.6.31OSV
  • praisonai, PyPI4.6.32OSV
  • praisonai, PyPI4.6.33OSV
  • praisonai, PyPI4.6.34OSV
  • praisonai, PyPI4.6.35OSV
  • praisonai, PyPI4.6.36OSV
  • praisonai, PyPI4.6.37OSV
  • praisonai, PyPI4.6.38OSV
  • praisonai, PyPI4.6.39OSV
  • praisonai, PyPI4.6.40OSV
  • praisonai, PyPI4.6.41OSV
  • praisonai, PyPI4.6.42OSV

References 1