Hadoop CVEリスト

このページでは、Hadoop PMCがCVEを付与するに値すると判断したセキュリティ修正の一覧を示しています。このリストに何か欠けていると思われる場合、または影響を受けるバージョンや修正されたバージョンのセットが不完全だと思われる場合は、セキュリティリストでお問い合わせください

CVEは、発表された順に、最も新しいものから順に表示されます。

CVE-2023-26031 Linuxシステム上のApache Haoop Yarn container-executorバイナリにおける特権昇格

Apache Hadoop 3.3.1-3.3.4のLinuxコンテナエグゼキュータバイナリにおける相対ライブラリ解決により、ローカルユーザーがroot権限を取得する可能性があります。YARNクラスターがリモート(認証済み)ユーザーからのジョブを受け入れている場合、これによりリモートユーザーがroot権限を取得できる可能性があります。

Hadoop 3.3.0では、分離されたLinuxコンテナでユーザーが送信したアプリケーションを実行する機能を追加するために、YARNセキュアコンテナが更新されました。

これらのコンテナを起動するために、ネイティブバイナリHADOOP_HOME/bin/container-executorが使用されます。YARNプロセスがジョブを送信する特定のユーザーとしてコンテナを実行できるように、rootが所有し、suidビットが設定されている必要があります。

パッチYARN-10495「container-executorのrpathを設定可能にする」では、.soファイルを$ORIGIN/から$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セキュアコンテナをサポートしていませんが、セキュアコンテナ外でのYARNジョブ実行を含む他のすべてのHadoopサービスは引き続き機能します。

CVE-2021-25642 Apache Hadoop YARNキャパシティスケジューラのZKConfigurationStoreにおけるリモートコード実行

Apache Hadoop YARNのキャパシティスケジューラによってオプションで使用されるZKConfigurationStoreは、ZooKeeperから取得したデータを検証せずにデシリアライズします。ZooKeeperへのアクセス権を持つ攻撃者は、これを悪用することにより、YARNユーザーとして任意のコマンドを実行できます。

CVE-2022-25168 org.apache.hadoop.fs.FileUtil.unTarUsingTarにおけるコマンドインジェクション

Apache HadoopのFileUtil.unTar(File, File) APIは、シェルに渡される前に、入力ファイル名をエスケープしません。攻撃者は任意のコマンドを注入できます。

これは、ローカルユーザーのみが実行するHadoop 3.3 InMemoryAliasMap.completeBootstrapTransferでのみ使用されます。

Hadoop 2.xではyarnローカリゼーションに使用されており、リモートコード実行を可能にします。

これは、SQLコマンドADD ARCHIVEからApache Sparkで使用されます。ADD ARCHIVEコマンドはクラスパスに新しいバイナリを追加するため、シェルスクリプトを実行できることは、呼び出し元に新しい権限を付与するものではありません。

SPARK-38305。「解凍/圧縮前にファイルの存在を確認する」は、3.3.0、3.1.4、3.2.2に含まれており、どのバージョンのhadoopライブラリが使用されているかに関係なく、シェルコマンドの実行を防ぎます。

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および他のOSでは組み込みのtarユーティリティを使用します。その結果、TARエントリは、外部ディレクトリを指す予期される抽出ディレクトリの下にシンボリックリンクを作成する可能性があります。後続のTARエントリは、シンボリックリンク名を使用して、外部ディレクトリに任意のファイルを抽出する可能性があります。ただし、UnixではgetCanonicalPath呼び出しのため、同じtargetDirPathチェックでキャッチされます。ただし、Windowsでは、getCanonicalPathはシンボリックリンクを解決しないため、チェックをバイパスします。TAR抽出中のunpackEntriesはシンボリックリンクに従うため、Windows上の予期されるベースディレクトリの外への書き込みが可能になります。

影響を受けるバージョンのユーザーは、次のいずれかの軽減策を適用する必要があります。

CVE-2020-9492 Apache Hadoopの潜在的な特権昇格

WebHDFSクライアントは、適切な検証なしにSPNEGO認証ヘッダーをリモートURLに送信する可能性があります。巧妙なユーザーは、サービスにサーバークレデンシャルをwebhdfsパスに送信させ、サービスプリンシパルをキャプチャできます。

影響を受けるバージョンのユーザーは、次のいずれかの軽減策を適用する必要があります。

CVE-2018-11764 Apache Hadoop Webエンドポイントにおける特権昇格

Webエンドポイント認証チェックが壊れています。認証されたユーザーは、プロキシユーザーが構成されていない場合でも、任意のユーザーを偽装できます。

CVE-2018-11765 Apache Hadoop Webインターフェースにおける潜在的な情報漏洩

Kerberos認証が有効になっており、HTTP経由のSPNEGOが有効になっていない場合、認証なしで一部のサーブレットにアクセスできます。

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 ユーザーに昇格できるユーザーは、ルートユーザーとして任意のコマンドを実行できる可能性があります。

CVE-2018-11767 Apache Hadoop KMS ACL のリグレッション

CVE-2017-15713 のセキュリティ修正後、KMS にはアクセス制御のリグレッションがあり、LdapGroupsMapping、CompositeGroupsMapping、または NullGroupsMapping などのデフォルト以外のグループマッピングメカニズムを使用している場合、ユーザーをブロックしたり、ユーザーへのアクセスを誤って許可したりします。

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 ユーザーに昇格できるユーザーは、ルートユーザーとして任意のコマンドを実行できる可能性があります。

CVE-2018-8009 Apache Hadoop 分散キャッシュアーカイブの脆弱性

この脆弱性により、クラスターユーザーは、YARN NodeManager デーモンを実行しているユーザーが所有する他のファイルに影響を与える可能性のある公開アーカイブを発行できます。影響を受けるファイルが、ノード上のローカライズ済みの別の公開アーカイブに属している場合、公開アーカイブを使用している他のクラスターユーザーのジョブにコードを注入できます。

CVE-2016-6811 Apache Hadoop 特権昇格の脆弱性

yarn ユーザーに昇格できるユーザーは、ルートユーザーとして任意のコマンドを実行できる可能性があります。

注: この脆弱性の修正は、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 ジョブ履歴サーバープロセスを実行しているユーザーが所有するプライベートファイルを公開できます。悪意のあるユーザーは、MapReduce ジョブ履歴サーバーホスト上の機密ファイルを参照する XML ディレクティブを含む構成ファイルを作成できます。

CVE-2017-3166 Apache Hadoop 特権昇格の脆弱性

YARN ユーザーにすべての HDFS 暗号化キーへのアクセス権が付与されているクラスターでは、ワールドリーダブルにするアクセス許可を持つ暗号化ゾーン内のファイルが、MapReduce 分散キャッシュなどを介して YARN のローカライズメカニズムによってローカライズされると、そのファイルはワールドリーダブルな場所に格納され、アプリケーションの所有者が誰であるか、またはそのユーザーがターゲットの暗号化ゾーンのファイルへのアクセスを許可されているかどうかにかかわらず、そのファイルのローカライズを要求するすべてのアプリケーションと自由に共有されます。

サードパーティの脆弱性

次のセクションでは、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 の脆弱性

Apache Hadoop のすべてのバージョンで使用されている Log4j 1.2 の JMSAppender は、CVE-2021-44228 と同様の方法で Log4Shell 攻撃に対して脆弱です。ただし、JMSAppender は Hadoop に同梱されているデフォルトの構成ではありません。JMSAppender が有効になっていない場合、Hadoop はこの攻撃に対して脆弱ではありません。

リスクを軽減するために、このリンクの手順に従って、log4j-1.2.17.jar アーティファクトから JMSAppender を削除できます。