Security advisory
A deserialization vulnerability exists in the way parso through 0.4.0 handles grammar parsing from the cache. Cache loading relies on pickle and, provided that an evil pickle can be written to a cache grammar file and that its parsing can be triggered, this flaw leads to Arbitrary Code Execution. NOTE: This is disputed because "the cache directory is not under control of the attacker in any common configuration.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2019-12760
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 11:03 UTC · Revision 1
Source evidence
A deserialization vulnerability exists in the way parso through 0.4.0 handles grammar parsing from the cache. Cache loading relies on pickle and, provided that an evil pickle can be written to a cache grammar file and that its parsing can be triggered, this flaw leads to Arbitrary Code Execution. NOTE: This is disputed because "the cache directory is not under control of the attacker in any common configuration.
osv:CVE-2019-12760
Complete source record
{
"id": "00bdac7dc04421deef872afef3ad71f94dfe5f828cb1aeb91f32f8f5b7416130",
"url": "https://osv.dev/vulnerability/CVE-2019-12760",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CVE-2019-12760",
"summary": "A deserialization vulnerability exists in the way parso through 0.4.0 handles grammar parsing from the cache. Cache loading relies on pickle and, provided that an evil pickle can be written to a cache grammar file and that its parsing can be triggered, this flaw leads to Arbitrary Code Execution. NOTE: This is disputed because \"the cache directory is not under control of the attacker in any common configuration.",
"evidence": "osv:CVE-2019-12760",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2019-12760",
"aliases": [
"CVE-2019-12760",
"GHSA-22mf-97vh-x8rw",
"PYSEC-2019-109"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/davidhalter/parso",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"last_affected": "8a06f0da0592b33ff002bf699d05e7c31a613b17"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:parso_project:parso:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "0"
},
{
"last_affected": "0.4.0"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"v0.4.0",
"v0.3.4",
"v0.3.3",
"v0.3.2",
"v0.3.1",
"v0.3.0",
"v0.2.1",
"v0.2.0",
"v0.1.1",
"v0.1.0",
"v0.0.4",
"v0.0.3",
"v0.0.2",
"v0.0.1"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2019-12760.json"
}
}
],
"modified": "2026-10-20T10:52:40.196058395Z",
"provider": "osv",
"references": [
"https://github.com/davidhalter/parso/issues/75",
"https://gist.github.com/dhondta/f71ae7e5c4234f8edfd2f12503a5dcc7"
],
"provider_metadata": {}
},
"related_cves": [
{
"value": "CVE-2019-12760",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 383727,
"published_at": "2019-06-06T19:29:00.5+00:00"
}