Miggo Logo

GHSA-f74j-gffq-vm9p: pyquokka is Vulnerable to Remote Code Execution by Pickle Deserialization via FlightServer

9.8

CVSS Score
3.1

Basic Information

CVE ID
-
EPSS Score
-
Published
10/17/2025
Updated
10/17/2025
KEV Status
No
Technology
TechnologyPython

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
pyquokkapip<= 0.3.1

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability is a classic case of insecure deserialization. The pyquokka library's FlightServer component uses Python's pickle module to deserialize data received over the network. The pickle module is known to be unsafe when used with untrusted data, as it can be abused to execute arbitrary code. The advisory explicitly points out the vulnerable functions: do_action, do_put, do_get, and cache_garbage_collect. The fix, identified in commit 355f62a4f078eb6e3b9493849205a5146f845708, replaces the dangerous pickle.loads() with the safer json.loads(). This confirms that the identified functions were indeed the source of the vulnerability. Any environment running pyquokka version 0.3.1 or older is susceptible to this remote code execution vulnerability if the FlightServer is exposed to the network.

Vulnerable functions

FlightServer.do_action
pyquokka/flight.py
The 'do_action' method in the 'FlightServer' class uses 'pickle.loads()' to deserialize the action body received from a flight client. An attacker can send a specially crafted pickled payload to execute arbitrary code on the server.
FlightServer.do_put
pyquokka/flight.py
The 'do_put' method in the 'FlightServer' class uses 'pickle.loads()' to deserialize the flight descriptor. This can be exploited by an attacker to execute arbitrary code by sending a malicious pickled object.
FlightServer.do_get
pyquokka/flight.py
The 'do_get' method in the 'FlightServer' class uses 'pickle.loads()' to deserialize the ticket. An attacker can exploit this by sending a malicious ticket, leading to remote code execution.
FlightServer.cache_garbage_collect
pyquokka/flight.py
The 'cache_garbage_collect' method in the 'FlightServer' class uses 'pickle.loads()' to deserialize the flight descriptor. This presents a remote code execution vulnerability if an attacker can control the content of the descriptor.

WAF Protection Rules

WAF Rule

### **s*ription In t** *li**tS*rv*r *l*ss o* t** pyquokk* *r*m*work, t** *o_**tion() m*t*o* *ir**tly us*s pi*kl*.lo**s() to **s*ri*liz* **tion *o*i*s r***iv** *rom *li**t *li*nts wit*out *ny s*nitiz*tion or v*li**tion, w*i** r*sults in * r*mot* *o**

Reasoning

T** vuln*r**ility is * *l*ssi* **s* o* ins**ur* **s*ri*liz*tion. T** `pyquokk*` li*r*ry's `*li**tS*rv*r` *ompon*nt us*s Pyt*on's `pi*kl*` mo*ul* to **s*ri*liz* **t* r***iv** ov*r t** n*twork. T** `pi*kl*` mo*ul* is known to ** uns*** w**n us** wit* u