天天看點

漏洞分析|Apache Airflow Pinot Provider 指令注入漏洞

作者:棱鏡七彩7cai
漏洞分析|Apache Airflow Pinot Provider 指令注入漏洞

項目介紹

Airflow 是一個使用 python 語言編寫的 data pipeline 排程和監控工作流的平台。Airflow 是通過 DAG(Directed acyclic graph 有向無環圖)來管理任務流程的任務排程工具, 不需要知道業務資料的具體内容,設定任務的依賴關系即可實作任務排程。

Apache Airflow Pinot Provider 是一個用于與 Apache Airflow hook 建立連接配接并執行封裝的 pinot-admin.sh 腳本的工具包。

項目位址

https://github.com/apache/airflow

漏洞概述

在 4.0.0 之前的版本中的 PinotAdminHook 類由于對 cmd_path 參數(pinot-admin.sh 可執行檔案的檔案路徑)限制不當導緻存在指令注入漏洞。

影響版本

apache-airflow-providers-apache-pinot < 4.0

漏洞分析

Pinot providers通過run_cli來調用pinot-admin.sh執行指令,其中command最終進入到subprocess.Popen函數中。

airflow.providers.apache.pinot.hooks.pinot.PinotAdminHook.run_cli

漏洞分析|Apache Airflow Pinot Provider 指令注入漏洞

從上面代碼可以看出來,Command由self.cmd_path和傳進來的cmd參數組成。在修複之前,self.cmd_path從conn中取值。而conn可以被攻擊者控制

漏洞分析|Apache Airflow Pinot Provider 指令注入漏洞

官方修複代碼如下,該代碼直接将self.cmd_path寫死為pinot-admin.sh

漏洞分析|Apache Airflow Pinot Provider 指令注入漏洞

綜合分析,該漏洞利用條件為

1)具備設定惡意connection的權限

2)airflow中存在使用該provider的dag檔案或者插件

修複方式

官方已釋出安全版本 4.0,建議更新至安全版本或以上。

參考連接配接

https://nvd.nist.gov/vuln/detail/CVE-2022-38649

https://github.com/apache/airflow/pull/27641/commits/ec5eb427cc8b5e5320553c2555229d25ba519d49