{"schemaVersion":3,"id":"CVE-2025-54550","aliases":["GHSA-q2hg-643c-gw8h","BIT-airflow-2025-54550","PYSEC-2026-2353","CGA-3jpr-g9gq-4m5x","CGA-fv64-47vc-rh5q","CGA-qq56-qmpp-5pf3","CGA-wfh9-jvh5-37xf"],"status":"published","duplicateOf":null,"title":null,"description":"The example example_xcom that was included in airflow documentation implemented unsafe pattern of reading value\nfrom xcom in the way that could be exploited to allow UI user who had access to modify XComs to perform arbitrary\nexecution of code on the worker. Since the UI users are already highly trusted, this is a Low severity vulnerability.\n\nIt does not affect Airflow release - example_dags are not supposed to be enabled in production environment, however\nusers following the example could replicate the bad pattern. Documentation of Airflow 3.2.0 contains version of\nthe example with improved resiliance for that case.\n\nUsers who followed that pattern are advised to adjust their implementations accordingly.","dates":{"published":"2026-04-15T00:22:03.305Z","modified":"2026-08-12T18:46:38.375Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":8.1,"severity":"high","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":8.1,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Pypi","score":8.1,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","exploitability":7.2,"impact":8.7,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Chainguard","score":8.1,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","exploitability":7.2,"impact":8.7,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":8.1,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00579,"percentile":0.46513,"severity":"low","asOf":"2026-10-18T00:00:00.000Z","change":{"pp":0,"baselineDate":"2026-09-18T00:00:00.000Z","baselineScore":0.00579},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00429,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00579,"percentile":0.46513}],"last30":[{"date":"2026-09-18T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00429,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00579,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00579,"percentile":0.46513}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-94","name":"Improper Control of Generation of Code ('Code Injection')","description":"The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment.","type":"weakness","status":"Draft","abstraction":"Base","likelihoodOfExploit":"Medium","url":"https://cwe.mitre.org/data/definitions/94.html"}],"affected":[{"vendor":"apache software foundation","product":"apache airflow","name":"Apache Airflow","label":"apache airflow","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 3.2.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 3.2.0","eol":null,"hubHref":"/vendor/apache_software_foundation/apache_airflow"},{"vendor":"apache","product":"airflow","name":"Airflow","label":"airflow","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 3.2.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 3.2.0","eol":{"isEol":null,"eolDate":null,"matchMethod":"cpe","cycle":null,"product":{"name":"apache-airflow","label":"Apache Airflow","category":"framework"}},"hubHref":"/vendor/apache/airflow"},{"vendor":"chainguard","product":"airflow-2","name":"airflow-2","label":"airflow-2","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/airflow-2","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"chainguard","product":"airflow-core-2","name":"airflow-core-2","label":"airflow-core-2","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/airflow-core-2","purlType":"apk","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"PyPI","product":"apache-airflow","name":"apache-airflow","label":"apache-airflow","ecosystem":"PyPI","cpePart":null,"purl":"pkg:pypi/apache-airflow","purlType":"pypi","versions":[{"text":"< 3.2.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 3.2.0","eol":null,"hubHref":null}],"affectedCount":5,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://lists.apache.org/thread/3mf4cfx070ofsnf9qy0s2v5gqb5sc2g1","label":"lists.apache.org/thread/3mf4cfx070ofsnf9qy0s2v5gqb5sc2g1","hostname":"lists.apache.org","tags":["Vendor Advisory","WEB","Advisory","Mailing List"]},{"url":"https://github.com/apache/airflow/pull/63200","label":"github.com/apache/airflow/pull/63200","hostname":"github.com","tags":["Patch","WEB","FIX","Issue Tracking"]},{"url":"http://www.openwall.com/lists/oss-security/2026/04/15/1","label":"www.openwall.com/lists/oss-security/2026/04/15/1","hostname":"www.openwall.com","tags":["WEB","Mailing List","Third Party Advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-54550","label":"nvd.nist.gov/vuln/detail/CVE-2025-54550","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/apache/airflow","label":"github.com/apache/airflow","hostname":"github.com","tags":["PACKAGE"]},{"url":"https://pypi.org/project/apache-airflow","label":"pypi.org/project/apache-airflow","hostname":"pypi.org","tags":["PACKAGE"]},{"url":"https://github.com/advisories/GHSA-q2hg-643c-gw8h","label":"github.com/advisories/GHSA-q2hg-643c-gw8h","hostname":"github.com","tags":["Advisory"]},{"url":"https://pypi.python.org","label":"pypi.python.org","hostname":"pypi.python.org","tags":["WEB"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/54xxx/CVE-2025-54550.json","label":"github.com/CVEProject/cvelistV5/tree/main/cves/2025/54xxx/CVE-2025-54550.json","hostname":"github.com","tags":["Advisory"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-04-15T00:22:03.305Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-08-12T18:46:38.375Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":33,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-19T00:51:56.061Z","stale":false,"partial":false}}