redis
A Redis 7 Alpine container used as the message queue for Socket.IO server communication. It is not the target of the vulnerability.
docker-compose.yml:6-16File viewing is interactive and short-lived. Downloads are password-protected ZIP archives using password eip.
The artifact contains two Python scripts that construct and deliver malicious pickle payloads to exploit CVE-2025-61765, a remote code execution vulnerability in python-socketio. One script publishes payloads directly to a Redis message queue; the other sends them via HTTP to a webhook that forwards to Redis. Both scripts include payload classes that use __reduce__ to execute arbitrary shell commands on the target Socket.IO server upon deserialization.
No backdoor observed in reviewed code
The PoC demonstrates the disclosed CVE-2025-61765 pickle deserialization vulnerability against a target python-socketio server. The payloads execute commands on the target server to create evidence files, gather system information, and optionally install an SSH key. All behavior is consistent with the stated exploit and no concealed or misrepresented harm to the operator or unrelated systems was found.
Both Python scripts actively construct and deliver malicious pickle payloads designed to achieve remote code execution on a vulnerable python-socketio server. The code includes complete exploit logic: payload classes with __reduce__ for command execution, serialization with pickle.dumps, and delivery mechanisms (direct Redis publish or HTTP webhook). This is exploit code, not merely a scanner or writeup.
socketio_server/poc.py:19-25socketio_server/poc.py:113-125poc.py:66-89README.md:3socketio_server/poc.py:154-155socketio_server/poc.py:19-25socketio_server/poc.py:27-45socketio_server/poc.py:113-125poc.py:66-89poc.py:19-36socketio_server/poc.py:27-65poc.py:124This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.
A Docker Compose environment demonstrating CVE-2025-61765, a pickle deserialization vulnerability in python-socketio. It includes a Redis message broker, a vulnerable Socket.IO server, an edge server that acts as a webhook to publish payloads to Redis, and an attacker container that sends malicious pickle payloads to the edge server.
docker-compose.yml:1-86README.md:1-19The README explicitly states it is a demo for CVE-2025-61765, a remote code execution vulnerability in python-socketio. The Dockerfiles, server code, and exploit scripts are all designed to set up and exploit this vulnerability in a controlled environment.
README.md:1-3Dockerfile.socketio_server:5socketio_server/server.py:1-228A Redis 7 Alpine container used as the message queue for Socket.IO server communication. It is not the target of the vulnerability.
docker-compose.yml:6-16A Python Socket.IO server using AsyncRedisManager, which automatically deserializes messages from Redis using pickle.loads(). This is the vulnerable component targeted by the exploit.
docker-compose.yml:19-40Dockerfile.socketio_server:1-30socketio_server/server.py:30-33A Flask application that receives HTTP POST requests with pickle payloads and publishes them to the Redis channel. It acts as an intermediary, allowing the attacker to inject payloads into Redis without direct Redis access.
docker-compose.yml:43-57Dockerfile.edge_server:1-28edge_server/app.py:1-125A Python container that runs poc.py to send malicious pickle payloads to the edge server's /webhook endpoint. It requires an SSH public key as an argument to create an SSH backdoor payload.
docker-compose.yml:60-76poc.py:1-168Supported by supplied evidence
The environment is explicitly labeled as a demo for CVE-2025-61765. The vulnerable server uses python-socketio with AsyncRedisManager, which is documented to use pickle.loads() for deserialization, matching the vulnerability description.
Dockerfile.socketio_server:5socketio_server/server.py:30-33README.md:1-3README.md:11-13poc.py:120-123poc.py:118README.md:11-13docker-compose.yml:72poc.py:1-168edge_server/app.py:47-65socketio_server/server.py:30-33poc.py:18-35docker-compose.yml:37-38README.md:17-19The attacker's poc.py includes an SSHBackdoorPayload class that writes a user-supplied SSH public key to /home/{username}/.ssh/authorized_keys on the target server. While this is a documented part of the exploit demonstration, it is a concrete host-impact action that modifies the target container's SSH configuration to enable persistent remote access. This goes beyond a simple proof-of-concept (e.g., creating a file in /tmp) and constitutes a real backdoor installation, which is a suspicious indicator even in a lab context.
poc.py:18-35poc.py:18-35This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.