Hadoop CVE 清單

此頁面列出了 Hadoop PMC 認為需要 CVE 的安全修復。如果您認為此清單中缺少某些內容,或者如果您認為受影響或修復版本的集合不完整,請在安全列表上詢問

CVE 根據公告的最新順序呈現。

CVE-2023-26031 在 Linux 系統上的 Apache Haoop Yarn 容器執行程序二進制特權升級

Apache Hadoop 3.3.1-3.3.4 中 Linux 容器執行程序二進制中的相對庫解析允許本地用戶獲得根權限。 如果 YARN 集群接受遠程(經身份驗證的)用戶的工作,則這可能允許遠程用戶獲得根權限。

Hadoop 3.3.0 更新了YARN 安全容器以添加一個功能,用於在隔離的 Linux 容器中執行用戶提交的應用程序。

本地二進制 HADOOP_HOME/bin/container-executor 用於啟動這些容器;它必須由 root 擁有並且具有 suid 位設置,以便 YARN 進程以提交作業的特定用戶身份運行容器。

此修補程式YARN-10495「使container-executor的rpath可配置」修改了從$ORIGIN/加載.so文件的庫加載路徑,將其改為$ORIGIN/:../lib/native/。這是libcrypto.so的位置。因此,一個權限較低的用戶可以將惡意的libcrypto庫安裝到他們具有寫訪問權限的路徑中,調用container-executor命令,並將其修改後的庫作為root執行。如果YARN集群接受遠程(經過身份驗證的)用戶的工作,並且這些用戶提交的作業在物理主機上執行,而不是在容器中執行,則CVE允許遠程用戶獲得root權限。

對漏洞的修復是回滾更改,在YARN-11441中實現,「回滾YARN-10495」。此修補程式包含在hadoop-3.3.5中。

要確定container-executor的版本是否存在漏洞,使用readelf命令。如果RUNPATH或RPATH值包含相對路徑./lib/native/,則存在風險。

$ readelf -d container-executor|grep 'RUNPATH\|RPATH'
0x000000000000001d (RUNPATH)            Library runpath: [$ORIGIN/:../lib/native/]

如果不包含,則是安全的。

$ readelf -d container-executor|grep 'RUNPATH\|RPATH'
0x000000000000001d (RUNPATH)            Library runpath: [$ORIGIN/]

對於存在風險的container-executor版本來說,所有者必須是root,並且suid位必須被設置。

$ ls -laF /opt/hadoop/bin/container-executor
---Sr-s---. 1 root hadoop 802968 May 9 20:21 /opt/hadoop/bin/container-executor

安全的安裝不包含suid位;最好也不是root所有者。

$ ls -laF /opt/hadoop/bin/container-executor
-rwxr-xr-x. 1 yarn hadoop 802968 May 9 20:21 /opt/hadoop/bin/container-executor

此配置不支持Yarn Secure Containers,但所有其他hadoop服務,包括在安全容器外執行的YARN作業,仍可正常工作。

CVE-2021-25642 Apache Hadoop YARN在容量調度器的ZKConfigurationStore中的遠程代碼執行

ZKConfigurationStore是Apache Hadoop YARN的CapacityScheduler可選使用的,它在未經驗證的情況下反序列化從ZooKeeper獲得的數據。攻擊者可以通過利用此漏洞,以YARN用戶身份運行任意命令,其具有對ZooKeeper的訪問權限。

CVE-2022-25168 org.apache.hadoop.fs.FileUtil.unTarUsingTar 中的命令注入

Apache Hadoop 的 FileUtil.unTar(File, File) API 在將輸入文件名傳遞給 shell 前未對其進行轉義。攻擊者可以注入任意命令。

這僅在 Hadoop 3.3 InMemoryAliasMap.completeBootstrapTransfer 中使用,該方法僅由本地用戶運行。

它在 Hadoop 2.x 中用於 yarn localization,這確實啟用了遠程代碼執行。

它在 Apache Spark 中使用,從 SQL 命令 ADD ARCHIVE。由於 ADD ARCHIVE 命令將新的二進制文件添加到類路徑中,能夠執行 shell 腳本並不會向呼叫者授予新權限。

SPARK-38305. “在解壓縮/壓縮之前檢查文件存在性”,該修復已包含在 3.3.0、3.1.4、3.2.2 中,無論使用的是哪個版本的 hadoop 库,都可以防止執行 shell 命令。

CVE-2021-33036 Apache Hadoop 特權升級漏洞

在 Apache Hadoop 2.2.0 至 2.10.1,3.0.0-alpha1 至 3.1.4,3.2.0 至 3.2.2,以及 3.3.0 至 3.3.1 中,能夠升級為 yarn 用戶的用戶可能以 root 用戶身份運行任意命令。

如果您使用受影響版本的 Apache Hadoop,並且某些用戶可以升級為 yarn 用戶但無法升級為 root 用戶,請從這些用戶中刪除升級為 yarn 用戶的權限。

CVE-2021-37404 libhdfs 本地庫中的堆緩衝區溢出

libhdfs原生程式碼中存在潛在的堆緩衝區溢出問題。未經使用者驗證的開啟檔案路徑可能導致拒絕服務或任意程式碼執行。

CVE-2022-26612 在Windows解壓縮時任意檔案寫入

在Apache Hadoop中,unTar函數在Windows上使用unTarUsingJava函數,而在Unix和其他作業系統上則使用內建的tar實用工具。因此,TAR條目可能會在預期的提取目錄下創建一個符號連結,該符號連結指向外部目錄。隨後的TAR條目可能會使用符號連結名稱將任意檔案提取到外部目錄中。但由於Unix上的getCanonicalPath呼叫,這將被同一個targetDirPath檢查所捕捉到。然而,在Windows上,getCanonicalPath不會解析符號連結,這將繞過檢查。在Windows上進行TAR提取期間,unpackEntries會跟隨符號連結,這允許在預期的基本目錄之外寫入。

受影響版本的用戶應採用以下任一緩解措施

CVE-2020-9492 Apache Hadoop潛在特權升級

WebHDFS客戶端可能在沒有適當驗證的情況下向遠端URL發送SPNEGO授權標頭。一個狡猾的用戶可以觸發服務將伺服器憑證發送到webhdfs路徑,以捕獲服務主體。

受影響版本的用戶應採用以下任一緩解措施

CVE-2018-11764 Apache Hadoop Web端點中的特權升級

網路端點驗證檢查失效。 已驗證的使用者可能冒充任何使用者,即使未配置代理使用者。

CVE-2018-11765 Apache Hadoop Web 介面潛在資訊外洩

當啟用 Kerberos 認證並且未啟用 HTTP 通過 SPNEGO 時,任何使用者都可以在未經身份驗證的情況下訪問一些 servlet。

CVE-2018-11768 Apache Hadoop HDFS FSImage 損壞

在存儲使用者/群組信息的字段大小在內存和磁盤表示之間存在不匹配。 這導致在 fsimage 中存儲和從 fsimage 讀取時使用者/群組信息被損壞。

此漏洞修復包含一個 fsimage 佈局更改,因此一旦圖像以新佈局格式保存,您就無法返回到不支持較新佈局的版本。 這意味著一旦 2.7.x 使用者升級到修復版本,他們就無法降級到 2.7.x,因為 2.7.x 中沒有修復版本。 我們建議降級到包含漏洞修復的 2.8.5 或更高版本。

CVE-2018-8029 Apache Hadoop 權限升級漏洞

可以升級到 yarn 使用者的使用者可能會以 root 使用者的身份運行任意命令。

CVE-2018-11767 Apache Hadoop KMS ACL 回歸

針對 CVE-2017-15713 的安全修補後,如果系統使用非預設的群組映射機制(如 LdapGroupsMapping、CompositeGroupsMapping 或 NullGroupsMapping),KMS 存取控制將會有回歸,會阻止使用者或不正確地授予使用者存取權限。

CVE-2018-1296 Apache Hadoop HDFS 過於寬鬆的 listXAttr 授權

HDFS 在 listXAttrs 時公開了擴展屬性的鍵/值對,僅驗證對目錄的路徑級別搜索訪問權限,而不是對參考目錄的路徑級別讀取權限。這影響了在擴展屬性中存儲敏感數據的功能,如 HDFS 加密密鑰。

CVE-2018-11766 Apache Hadoop 權限升級漏洞

在 Apache Hadoop 2.7.4 至 2.7.6 中,針對 CVE-2016-6811 的安全修補不完整。能夠升級為 yarn 使用者的使用者可能會以 root 使用者的身份運行任意命令。

CVE-2018-8009 Apache Hadoop 分散式緩存存檔漏洞

漏洞允許集群使用者發布可能影響由 YARN NodeManager 守護程序運行的其他文件的公共存檔。如果受影響的文件屬於節點上的另一個已本地化的公共存檔,則可以將代碼注入到使用公共存檔的其他集群使用者的作業中。

CVE-2016-6811 Apache Hadoop 特權提升漏洞

可以升級到 yarn 使用者的使用者可能會以 root 使用者的身份運行任意命令。

注意:Apache Hadoop 2.7.4 到 2.7.6 的這個漏洞修復不完整 (CVE-2018-11766)。

CVE-2017-15718 Apache Hadoop YARN NodeManager 漏洞

在 Apache Hadoop 2.7.3 和 2.7.4 中,CVE-2016-3086 的安全修復不完整。YARN NodeManager 可能會將用於 NodeManager 的憑證存儲提供程序的密碼洩漏給 YARN 應用程序。

如果您使用 CredentialProvider 功能來加密 NodeManager 配置中使用的密碼,則由該 NodeManager 啟動的任何容器都可能訪問加密密碼。其他密碼本身不會直接暴露。

CVE-2017-15713 Apache Hadoop MapReduce 作業歷史伺服器漏洞

此漏洞允許集群用戶公開由運行 MapReduce 作業歷史伺服器進程的用戶擁有的私有文件。惡意用戶可以構造一個包含 XML 指令的配置文件,其中引用 MapReduce 作業歷史伺服器主機上的敏感文件。

CVE-2017-3166 Apache Hadoop 特權提升漏洞

在一個集群中,YARN使用者已被授予訪問所有HDFS加密金鑰的權限,如果加密區域中的一個文件具有使其可讀取的訪問權限,例如世界可讀取,通過YARN的本地化機制進行本地化,例如通過MapReduce分佈式緩存,該文件將存儲在一個世界可讀取的位置並與任何請求本地化該文件的應用程序自由共享,無論應用程序所有者是誰,或者該用戶是否應該被允許訪問目標加密區域中的文件。

第三方漏洞

以下部分描述了可能對Hadoop使用者感興趣的第三方漏洞。請聯繫相應的項目所有者獲取詳細信息。

CVE-2021-44228 Log4Shell漏洞

據了解,log4shell漏洞CVE-2021-44228影響log4j2。截至3.3.x版,Hadoop依賴於log4j 1.x,該版本易受攻擊。一旦我們遷移到log4j2,我們也將採用不易受攻擊的版本。因此,任何ASF版本的Hadoop從未受到漏洞的影響。基於Hadoop的第三方產品和應用程序可能存在風險,請諮詢供應商或項目所有者。

CVE-2021-4104 Log4Shell漏洞

Log4j 1.2中的JMSAppender,被所有版本的Apache Hadoop使用,易受類似於CVE-2021-44228的Log4Shell攻擊影響。然而,當未啟用JMSAppender時,Hadoop不易受攻擊。

為了減輕風險,您可以按照此鏈接中的說明自行從log4j-1.2.17.jar工件中刪除JMSAppender。