Miggo Logo

CVE-2023-50943:
Apache Airflow: pickle deserialization vulnerability in XComs

7.5

CVSS Score
3.1

Basic Information

EPSS Score
0.3778%
Published
1/24/2024
Updated
2/13/2025
KEV Status
No
Technology
TechnologyPython

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
apache-airflowpip>= 0, < 2.8.1rc12.8.1rc1

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stems from the _deserialize_value function's logic in xcom.py. The original code contained a try-except block that first attempted JSON deserialization, but then fell back to unsafe pickle.loads() on decoding errors (like JSONDecodeError or UnicodeDecodeError). This created an injection vector when 'enable_xcom_pickling=False' was configured, as attackers could craft payloads that force the fallback to pickle deserialization. The patch removed this fallback mechanism, confirming this was the vulnerable code path. The accompanying test changes (e.g., expecting UnicodeDecodeError instead of silent pickle fallback) further validate this analysis.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

*p**** *ir*low, v*rsions ***or* *.*.*, **v* * vuln*r**ility t**t *llows * pot*nti*l *tt**k*r to poison t** X*om **t* *y *yp*ssin* t** prot**tion o* "*n**l*_x*om_pi*klin*=**ls*" *on*i*ur*tion s*ttin* r*sultin* in poison** **t* **t*r X*om **s*ri*liz*ti

Reasoning

T** vuln*r**ility st*ms *rom t** _**s*ri*liz*_v*lu* *un*tion's lo*i* in x*om.py. T** ori*in*l *o** *ont*in** * try-*x**pt *lo*k t**t *irst *tt*mpt** JSON **s*ri*liz*tion, *ut t**n **ll ***k to uns*** pi*kl*.lo**s() on ***o*in* *rrors (lik* JSON***o**