
PoC de cómo explotar una vulnerabilidad RCE de los DAGs de ejemplo en Apache Airflow <1.10.11
Descripción: Esta vulnerabilidad permite RCE cuando se cargan los DAGs de ejemplo de Airflow, potencialmente sin autenticación con CVE-2020-13927
Crédito CVE: xuxiang de DtDream security
Versiones afectadas: <1.10.11
Enlace de divulgación: https://lists.apache.org/thread.html/r7255cf0be3566f23a768e2a04b40fb09e52fcd1872695428ba9afe91%40%3Cusers.airflow.apache.org%3E
Enlace NIST CVE: https://nvd.nist.gov/vuln/detail/CVE-2020-11978
Esto explota el DAG de ejemplo que es vulnerable a inyección de comandos, utilizando la API REST experimental que es pública por defecto, incluso si la interfaz web tiene autenticación configurada.
python CVE-2020-11978.py <url> <command>
Si example_trigger_target_dag no está cargado y tienes conocimiento del DAG particular que deseas activar, entonces puedes usar CVE-2020-11978-min.py como plantilla para activar ese DAG específico.
Si ya tienes los ejemplos deshabilitados configurando load_examples=False en la configuración, entonces no eres vulnerable.
Puedes actualizar a >=1.10.11 o eliminar el DAG vulnerable, que es example_trigger_target_dag, para <1.10.11
Si inicias una nueva instancia de Airflow usando >=1.10.11, entonces deny_all ya está configurado para auth_backend por defecto en airflow.cfg.
[api]
auth_backend = airflow.api.auth.backend.deny_all
Ten en cuenta que airflow.api.auth.backend.default aún permite solicitudes no autenticadas a la API incluso para >=1.10.11. Por lo tanto, si tienes una instancia de Airflow existente con auth_backend = airflow.api.auth.backend.default, incluso después de actualizar a >=1.10.11, la API REST sigue siendo pública.
Para >=2.0.0, la API experimental está deshabilitada pero tiene una API estable más potente.