{"id":"CVE-2022-38649","kind":"vulnerability","aliases":["CVE-2022-38649","GHSA-7wqf-h36w-47mc"],"related":[],"title":"OS Command Injection in Apache Airflow","description":"Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') vulnerability in Apache Airflow Pinot Provider, Apache Airflow allows an attacker to control commands executed in the task execution context, without write access to DAG files. This issue affects Apache Airflow Pinot Provider versions prior to 4.0.0. It also impacts any Apache Airflow versions prior to 2.3.0 in case Apache Airflow Pinot Provider is installed (Apache Airflow Pinot Provider 4.0.0 can only be installed for Airflow 2.3.0+). Note that you need to manually install the Pinot Provider version 4.0.0 in order to get rid of the vulnerability on top of Airflow 2.3.0+ version.","summary":"Apache Airflow's Pinot Provider and core versions before 2.3.0 let an attacker control commands executed in the task execution context, without needing write access to DAG files. An attacker who can influence those inputs can run arbitrary operating system commands on the Airflow worker.","severity":"critical","cvss":9.8,"epss":0.03338,"exploited":false,"exploited_at":null,"products":[{"name":"apache-airflow","fixed":["2.3.0"],"affected":"< 2.3.0","ecosystem":"pypi"},{"name":"apache airflow","fixed":["2.3.0"],"affected":"< 2.3.0","ecosystem":"vendor"},{"name":"apache apache-airflow-providers-apache-pinot","fixed":["4.0.0"],"affected":"< 4.0.0","ecosystem":"vendor"}],"ecosystems":["pypi","vendor"],"tags":["airflow","cwe-78","data-pipelines","package","python","self-hosted"],"not_affected_if":["airflow-2.3.0-plus-with-fixed-provider","pinot-provider-4.0.0"],"how_to_check":"- Run `pip show apache-airflow` and confirm the version is below `2.3.0`.\n- Run `pip show apache-airflow-providers-apache-pinot` and check whether it is installed and below `4.0.0`.\n- Check whether the Pinot provider is installed at all, since it extends the exposure even on newer Airflow versions.","fix":"- Upgrade `apache-airflow` to `2.3.0` or later.\n- Install `apache-airflow-providers-apache-pinot` version `4.0.0` or later, even on Airflow 2.3.0+, since the fix must be installed manually.","status":"open","published_at":"2022-11-22T10:15:10+00:00","first_seen_at":"2026-10-26T21:16:46+00:00","triaged_at":"2026-10-26T21:16:58+00:00","updated_at":"2026-10-26T21:20:32+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-26T21:16:58Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade `apache-airflow` to `2.3.0` or later.\n- Install `apache-airflow-providers-apache-pinot` version `4.0.0` or later, even on Airflow 2.3.0+, since the fix must be installed manually.","reach":"unknown","title":"Apache Airflow: OS command injection lets task context run attacker commands","impact":"high","summary":"Apache Airflow's Pinot Provider and core versions before 2.3.0 let an attacker control commands executed in the task execution context, without needing write access to DAG files. An attacker who can influence those inputs can run arbitrary operating system commands on the Airflow worker.","category":"package","nicknames":[],"who_cares":["airflow","python","self-hosted","data-pipelines"],"confidence":0.8,"needs_auth":"unknown","worst_case":"Attacker runs arbitrary OS commands on the Airflow worker host","analyst_note":"","how_to_check":"- Run `pip show apache-airflow` and confirm the version is below `2.3.0`.\n- Run `pip show apache-airflow-providers-apache-pinot` and check whether it is installed and below `4.0.0`.\n- Check whether the Pinot provider is installed at all, since it extends the exposure even on newer Airflow versions.","needs_analyst":false,"not_affected_if":["pinot-provider-4.0.0","airflow-2.3.0-plus-with-fixed-provider"],"who_is_affected":"Teams running Apache Airflow below 2.3.0, or any Airflow install that has the Apache Pinot provider below 4.0.0 installed. The sources say exposure depends on the task execution path reaching the vulnerable code, so teams with no Pinot provider on pre-2.3.0 Airflow should still upgrade but are less exposed. Teams on Airflow 2.3.0+ with Pinot provider 4.0.0 are not affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"critical"},"cost_usd":0.000697,"input_tokens":3510,"output_tokens":693,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-2022':8A,16A '-38649':9A,17A '-78':32B '2.3.0':50B,145C,165C,190C '4.0.0':135C,158C,177C '47mc':14A '7wqf':12A 'access':65B,121C 'affect':127C 'airflow':6A,20A,22A,26A,30B,42B,84B,102C,106C,129C,141C,149C,155C,164C,189C 'allow':107C 'also':137C 'apach':5A,41B,101C,105C,128C,140C,148C,154C 'apache':19A,21A,23A,25A,28A 'apache-airflow':18A 'apache-airflow-providers-apache-pinot':24A 'arbitrari':78B 'attack':53B,70B,109C 'case':147C 'command':2A,55B,81B,95C,97C,112C 'context':61B,118C 'control':54B,111C 'core':47B 'cve':7A,15A 'cwe':31B 'dag':67B,123C 'data':34B 'data-pipelin':33B 'element':90C 'execut':56B,60B,113C,117C 'file':68B,124C 'get':181C 'ghsa':11A 'ghsa-7wqf-h36w-47mc':10A 'h36w':13A 'host':40B 'impact':138C 'improp':86C 'influenc':73B 'inject':3A,98C 'input':75B 'instal':153C,162C,172C 'issu':126C 'let':51B 'manual':171C 'need':63B,169C 'neutral':87C 'note':166C 'oper':79B 'order':179C 'os':1A,94C,96C 'packag':36B 'pinot':29A,44B,103C,130C,150C,156C,174C 'pipelin':35B 'prior':133C,143C 'provid':45B,104C,131C,151C,157C,175C 'providers':27A 'python':37B 'rid':182C 'run':77B 'self':39B 'self-host':38B 'special':89C 'system':80B 'task':59B,116C 'top':187C 'use':91C 'version':48B,132C,142C,176C,191C 'vulner':99C,185C 'without':62B,119C 'worker':85B 'write':64B,120C","nicknames":[],"mitigations":[],"who_affected":"Teams running Apache Airflow below 2.3.0, or any Airflow install that has the Apache Pinot provider below 4.0.0 installed. The sources say exposure depends on the task execution path reaching the vulnerable code, so teams with no Pinot provider on pre-2.3.0 Airflow should still upgrade but are less exposed. Teams on Airflow 2.3.0+ with Pinot provider 4.0.0 are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2022-11-22T10:15:10+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-7wqf-h36w-47mc","url":"https://github.com/advisories/GHSA-7wqf-h36w-47mc","severity":"critical","published_at":"2022-11-22T12:30:22+00:00","modified_at":"2026-10-26T21:15:01+00:00","first_seen_at":"2026-10-26T21:16:46+00:00","fetched_at":"2026-10-26T21:16:46+00:00","note":null},{"source":"nvd","external_id":"CVE-2022-38649","url":"https://nvd.nist.gov/vuln/detail/CVE-2022-38649","severity":null,"published_at":"2022-11-22T10:15:10+00:00","modified_at":"2026-06-17T04:56:56+00:00","first_seen_at":"2026-10-26T21:20:32+00:00","fetched_at":"2026-10-26T21:20:32+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}