id: CVE-2022-24288

info:
  name: Apache Airflow OS Command Injection
  author: xeldax
  severity: high
  description: Apache Airflow prior to version 2.2.4 is vulnerable to OS command injection attacks because some example DAGs do not properly sanitize user-provided parameters, making them susceptible to OS Command Injection from the web UI.
  impact: |
    Successful exploitation of this vulnerability could allow an attacker to execute arbitrary commands on the target system.
  remediation: |
    Apply the latest security patches or upgrade to a patched version of Apache Airflow.
  reference:
    - https://github.com/advisories/GHSA-3v7g-4pg3-7r6j
    - https://nvd.nist.gov/vuln/detail/CVE-2022-24288
    - https://lists.apache.org/thread/dbw5ozcmr0h0lhs0yjph7xdc64oht23t
    - https://github.com/ARPSyndicate/kenzer-templates
    - https://github.com/Hax0rG1rl/my_cve_and_bounty_poc
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 8.8
    cve-id: CVE-2022-24288
    cwe-id: CWE-78
    epss-score: 0.89825
    epss-percentile: 0.99586
    cpe: cpe:2.3:a:apache:airflow:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 2
    vendor: apache
    product: airflow
    shodan-query:
      - title:"Airflow - DAGs" || http.html:"Apache Airflow"
      - http.title:"airflow - dags" || http.html:"apache airflow"
      - http.title:"sign in - airflow"
      - product:"redis"
    fofa-query:
      - title="sign in - airflow"
      - apache airflow
      - title="airflow - dags" || http.html:"apache airflow"
    google-query:
      - intitle:"sign in - airflow"
      - intitle:"airflow - dags" || http.html:"apache airflow"
  tags: cve,cve2022,airflow,rce,apache,vkev,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/admin/airflow/code?root=&dag_id=example_passing_params_via_test_command"
      - "{{BaseURL}}/code?dag_id=example_passing_params_via_test_command"

    stop-at-first-match: true
    matchers:
      - type: word
        words:
          - 'foo was passed in via Airflow CLI Test command with value {{ params.foo }}' # Works with unauthenticated airflow instance
# digest: 4b0a00483046022100e6453c44781384eca71c348549f1ef7b2fc8ac35cf194364cb002b130e41b48b022100e75beb71465a2330fa6a5c8fc3586bfc956a801b4594a0a6426ac9cadf13d6bf:922c64590222798bb761d5b6d8e72950