{"id":"PYSEC-2026-1854","summary":"python-socketio vulnerable to arbitrary Python code execution (RCE) through malicious pickle deserialization in certain multi-server deployments","details":"### Summary\nA 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.\n\n### Details\nWhen 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.\n\nThe 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.\n\n### Impact\nThis 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. \n\nSingle-server systems that do not use a message queue, and multi-server systems with a secure message queue are not vulnerable.\n\n### Remediation\nIn 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.","aliases":["CVE-2025-61765","GHSA-g8c6-8fjj-2r4m"],"modified":"2026-07-07T17:48:07.999163508Z","published":"2026-07-07T16:03:06.734448Z","references":[{"type":"WEB","url":"https://github.com/miguelgrinberg/python-socketio/security/advisories/GHSA-g8c6-8fjj-2r4m"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-61765"},{"type":"WEB","url":"https://github.com/miguelgrinberg/python-socketio/commit/53f6be094257ed81476b0e212c8cddd6d06ca39a"},{"type":"PACKAGE","url":"https://github.com/miguelgrinberg/python-socketio"},{"type":"WEB","url":"https://www.bluerock.io/post/cve-2025-61765-bluerock-discovers-critical-rce-in-socket-io-ecosystem"},{"type":"PACKAGE","url":"https://pypi.org/project/python-socketio"},{"type":"ADVISORY","url":"https://github.com/advisories/GHSA-g8c6-8fjj-2r4m"}],"affected":[{"package":{"name":"python-socketio","ecosystem":"PyPI","purl":"pkg:pypi/python-socketio"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.8.0"},{"fixed":"5.14.0"}]}],"versions":["0.8.0","0.8.1","0.8.2","0.9.0","0.9.1","0.9.2","1.0","1.1","1.2","1.3","1.4","1.4.1","1.4.2","1.4.3","1.4.4","1.5.0","1.5.1","1.6.0","1.6.1","1.6.2","1.6.3","1.7.0","1.7.1","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.7.7","1.8.0","1.8.1","1.8.2","1.8.3","1.8.4","1.9.0","2.0.0","2.1.0","2.1.1","2.1.2","3.0.0","3.0.1","3.1.0","3.1.1","3.1.2","4.0.0","4.0.1","4.0.2","4.0.3","4.1.0","4.2.0","4.2.1","4.3.0","4.3.1","4.4.0","4.5.0","4.5.1","4.6.0","4.6.1","5.0.0","5.0.1","5.0.2","5.0.3","5.0.4","5.1.0","5.10.0","5.11.0","5.11.1","5.11.2","5.11.3","5.11.4","5.12.0","5.12.1","5.13.0","5.2.0","5.2.1","5.3.0","5.4.0","5.4.1","5.5.0","5.5.1","5.5.2","5.6.0","5.7.0","5.7.1","5.7.2","5.8.0","5.9.0"],"database_specific":{"source":"https://github.com/pypa/advisory-database/blob/main/vulns/python-socketio/PYSEC-2026-1854.yaml"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:L"}]}