CVE-2020-11978漏洞的一个示例是发现在Apache Airflow的示例dag文件中存在命令注入漏洞。攻击者可以通过该漏洞在Airflow服务器上执行恶意命令。
具体来说,该漏洞源于示例dag文件中的一个BashOperator任务,它执行了一个echo命令并将输出写入文件。该任务通过 { { ds }} 参数接收当前日期作为参数,并在命令行上执行。然而,该任务并没有对 ds 参数进行严格的验证和过滤,因此攻击者可以通过注入恶意命令来执行任意命令。
例如,攻击者可以将 { { ds }} 参数设置为 ;id,这样,在执行echo命令时,攻击者注入的id命令也会被执行。这样攻击者就可以在Airflow服务器上执行任意命令,例如查看系统信息、修改文件等等。
解决该漏洞的方法是删除示例dag文件或更改BashOperator任务中的命令以包含必要的输入验证和过滤。此外,还应该对其他Airflow任务和参数进行类似的审核和加固,以确保没有其他的命令注入漏洞存在。
验证漏洞
访问http://your-ip:8080
进入airflow管理端,将example_trigger_target_dag
前面的Off改为On:
再点击执行按钮,在Configuration JSON中输入:{"message":"'\";touch /tmp/airflow_dag_success;#"}
,再点Trigger
执行dag:
等几秒可以看到执行成功:
到CeleryWorker容器中进行查看: