Read the docs
TI-2025-38159 Aliases CVE-2025-61765GHSA-g8c6-8fjj-2r4m

Deserialization of untrusted data in miguelgrinberg python-socketio

Priority LOW 31CWE-502Published · Updated

Key facts

Attack vector
Adjacent network
Privileges required
High
User interaction
None
Attack complexity
Low
Impact type
Code execution
Confidentiality · integrity · availability
High · High · Low
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-502.

Summary

python-socketio is a Python implementation of the Socket.IO realtime client and server. A remote code execution vulnerability in python-socketio versions prior to 5.14.0 allows attackers to execute arbitrary Python code through malicious pickle deserialization in multi-server deployments on which the attacker previously gained access to the message queue that the servers use for internal communications. When Socket.IO servers are configured to use a message queue backend such as Redis for inter-server communication, messages sent between the servers are encoded using the `pickle` Python module. When a server receives one of these messages through the message queue, it assumes it is trusted and immediately deserializes it. The vulnerability stems from deserialization of messages using Python's `pickle.loads()` function. Having previously obtained access to the message queue, the attacker can send a python-socketio server a crafted pickle payload that executes arbitrary code during deserialization via Python's `__reduce__` method. This vulnerability only affects deployments with a compromised message queue. The attack can lead to the attacker executing random code in the context of, and with the privileges of a Socket.IO server process. Single-server systems that do not use a message queue, and multi-server systems with a secure message queue are not vulnerable. In addition to making sure standard security practices are followed in the deployment of the message queue, users of the python-socketio package can upgrade to version 5.14.0 or newer, which remove the `pickle` module and use the much safer JSON encoding for inter-server messaging.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00482 41st percentileScored 2026-11-07
Fix Fixed python-socketio (miguelgrinberg): 5.14.0python-socketio (PyPI): 5.14.0

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
miguelgrinbergpython-socketio0.8.0 to before 5.14.05.14.0Patch availableCNA
—python-socketio (PyPI)0.8.0 to before 5.14.05.14.0Patch availableGHSA-g8c6-8fjj-2r4m
  • python-socketio Vendormiguelgrinberg Affected 0.8.0 to before 5.14.0 Fixed in 5.14.0 Patch available CNA
  • python-socketio (PyPI) Vendor— Affected 0.8.0 to before 5.14.0 Fixed in 5.14.0 Patch available GHSA-g8c6-8fjj-2r4m

Remediation

  • Fix · CNA python-socketio (miguelgrinberg) Fixed in 5.14.0
  • Fix · GHSA-g8c6-8fjj-2r4m python-socketio (PyPI) Fixed in 5.14.0 Advisory →

Vendor assessments

Red Hat

Red Hat's page for this CVE →

Not affected: 1 product
  • Red Hat

Timeline

  1. 2026-10-02 Threatist record created from CVE-2025-61765
  2. 2026-10-03 Alias added: GHSA-g8c6-8fjj-2r4m

References

  • TI-2026-36072 python-engineio has unbound thread allocation that can cause denial of service CVSS 3.1HIGH 7.5
  • TI-2026-36078 python-engineio has possible denial of service due to maximum payload size sometimes not being enforced CVSS 3.1HIGH 7.5
  • TI-2026-36073 python-socketio: Binary attachment accumulation can cause denial of service CVSS 3.1HIGH 7.5
  • TI-2026-26780 Flask-HTTPAuth invokes token verification callback when missing or empty token was given by client CVSS 3.1HIGH 8.2
  • TI-2026-31080 Microdot: HTTP response splitting in Response.set_cookie() CVSS 3.1LOW 3.7

Sources