CVE-2019-13611 — python-engineio
HIGHCVE-2019-13611 is a high-severity (CVSS 8.8) Cross-Site Request Forgery (CSRF) vulnerability in python-engineio. A fix is available for python-engineio — see the affected versions and patch details below.
python-engineio vulnerable to Cross-Site Request Forgery (CSRF)
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
python-engineioReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects PyPI packages — download data is not available via public APIs for these ecosystems.
Description
WebSocket cross-origin vulnerability
Impact
This is a Cross-Site Request Forgery (CSRF) vulnerability. It affects Socket.IO and Engine.IO web servers that authenticate clients using cookies.
Patches
python-engineio version 3.9.0 patches this vulnerability by adding server-side Origin header checks.
Workarounds
Do not use cookies for client authentication, or else add a CSRF token to the connection URL.
References
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) https://www.christian-schneider.net/CrossSiteWebSocketHijacking.html
For more information
If you have any questions or comments about this advisory:
- Open an issue in python-engineio
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐍PyPI | python-engineio | all versions | 3.9.0pip install --upgrade 'python-engineio==3.9.0' |
Affected Products
python-engineiopython-engineio_projectDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for python-engineio, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update python-engineio to 3.9.0 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2019-13611 is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
Frequently Asked Questions
Is CVE-2019-13611 in your dependencies?
Find it across PyPI, including transitive dependencies.