イエラエ CSIRT支援室 第 30 回 Apache Spark OSコマンドインジェクションの脆弱性(CVE-2022-33891)について | ScanNetSecurity
2024.05.18(土)

イエラエ CSIRT支援室 第 30 回 Apache Spark OSコマンドインジェクションの脆弱性(CVE-2022-33891)について

07/18 頃に公開されました Apache Spark のWebUI にて OSコマンドインジェクション脆弱性である CVE-2022-33891 について紹介します。

脆弱性と脅威
GMOサイバーセキュリティ byイエラエ株式会社の業務風景より
  • GMOサイバーセキュリティ byイエラエ株式会社の業務風景より
  • CVE-2022-33891 ソースコード修正箇所 41行目
  • イエラエ CSIRT支援室 第 30 回
  • イエラエ CSIRT支援室 第 30 回
  • リクエストにてファイルの生成を試みている様子
  • リクエスト後に、コマンドが実行されサーバ上にファイルが生成されている様子
  • リバースシェル試行の様子
  • リバースシェル確立後にコマンドを実行している様子

 こんにちは、くまさかです。

 07/18 頃に公開されました Apache Spark のWebUI にて OSコマンドインジェクション脆弱性である CVE-2022-33891 について紹介します。

 なお、本脆弱性は特別な準備は特に必要なく、未認証であっても、細工した HTTPパラメータを付与することで、任意のコード実行が容易です。
そのため、インターネット上に Apache SparkのWebUI を解放し管理している方は注意が必要です。

●影響対象

 Apache Spark の以下のバージョンが影響を受けます。

・Apache Spark 3.0.3まで
・Apache Spark 3.1.1 から3.1.2
・Apache Spark 3.2.0 から3.2.1

 また、本脆弱性は、デフォルトの設定では影響を受けず、UI の認証を有効化している場合に影響を受けます。

・Apache Spark の UI(WebUI) を利用している
・Apache Spark の設定(spark-defaults.conf)にて、spark.acls.enable が有効(true)である

●考えられる影響

 OSコマンドインジェクションが可能なため、任意のコード実行による情報の窃取や改ざん、サービス停止等、様々な影響が考えられます。
また、認証プロセスの応答を偽装することで、他ユーザへのなりすましも考えられます。

●対策

 影響を受けるバージョンの修正版がリリース済みの為、更新が有効な対策です。

・Apache Spark 3.1.3
・Apache Spark 3.2.2

 また、3.3系は本脆弱性の対象外の為、そちらへの更新も有効です。

・Apache Spark 3.3.0

●脆弱性レポート

 本脆弱性の修正は、比較的理解が容易です。

 以下は、本脆弱性修正の一部です。

CVE-2022-33891 ソースコード修正箇所 41行目

https://github.com/apache/spark/pull/36315/files#diff-96652ee6dcef30babdeff0aed66ced6839364ea4b22b7b5fdbedc82eb655eeb5L41

 修正からわかる通り、修正前では、受け取ったパラメータである username を bash で実行する形式で渡しています。
イメージとしては、以下のようなコマンドが実行されます。

 今回の脆弱性では、こちらの username が GETパラメータからそのまま渡されている事を悪用し、コマンド置換を利用した任意のコード実行が可能です。
GNU/コマンド置換

 例えば、username へ、`:>/have_CVE-2022-33891` を入れる事で、以下のようなコマンドが実行されます。

 `:>/have_CVE-2022-33891` は、コマンド置換され、サーバ上で :>/have_CVE-2022-33891 として動作し、空のファイルが生成されます。

 なお、認証試行としては失敗するため、応答としては、403 になります。(しかし、ここで認可されているユーザ情報をうまく返却できるとユーザ偽装できる可能性があります。)

リクエストにてファイルの生成を試みている様子

リクエスト後に、コマンドが実行されサーバ上にファイルが生成されている様子

 また、ご存じの方も多いように、任意のコードが実行できるということは、リバースシェル確立もネットワーク環境によっては容易です。

リバースシェル試行の様子

リバースシェル確立後にコマンドを実行している様子

 以上のように、HTTP(s) の疎通があれば攻撃が成功してしまう可能性がある為、影響対象となりうる環境では、対策が必須となります。

 さて、今回は、比較的攻撃が容易な、CVE-2022-33891 について簡単に紹介しました。

 Apache Spark UI をインターネット上に開いた形で運用する場合、認証や TLS の設定を有効化されている方がほとんどかと思います。Apache Spark のアクセス制御機能(spark.acls.enable)を有効にされている環境では、対応をご検討ください。

 なお、更新が難しく、Apache Spark WebUI を非公開にできないケースでは、コマンド置換で有効なパターンである、「``」や、「$()」が含まれるリクエストが到達した際に適切なアクションを講じる事ができるか確認する事が重要となりますが、例に挙げていない特殊なパターンによる攻撃の可能性もゼロではありません。

 そのため、継続的にインターネット上に開いた形で運用する場合には、原則、修正版への更新を推奨致します。

●参考

https://nvd.nist.gov/vuln/detail/CVE-2022-33891
https://issues.apache.org/jira/browse/SPARK-38992

《GMOサイバーセキュリティ byイエラエ株式会社》

編集部おすすめの記事

特集

脆弱性と脅威 アクセスランキング

  1. ここが変だよ日本のセキュリティ 第 46 回 「ざんねんなセキュリティ事典」(前編)

    ここが変だよ日本のセキュリティ 第 46 回 「ざんねんなセキュリティ事典」(前編)

  2. PC版「ダークソウル」シリーズのサーバを一時停止、攻撃者が任意のコードを実行できる脆弱性

    PC版「ダークソウル」シリーズのサーバを一時停止、攻撃者が任意のコードを実行できる脆弱性

  3. Adobe Acrobat および Reader に脆弱性、最新バージョンへの更新を呼びかけ

    Adobe Acrobat および Reader に脆弱性、最新バージョンへの更新を呼びかけ

  4. マイクロソフトが 5 月のセキュリティ情報公開、悪用の事実を確認済みの脆弱性が 2 件

  5. 「Pokemon GO」で身元バレの可能性、個人情報の管理に注意

  6. Microsoft Windows OS における sdclt.exe を用いて UAC による制限を回避する手法(Scan Tech Report)

  7. スマートフォンアプリ「Lemon8」にアクセス制限不備の脆弱性

  8. 太陽光発電施設向け遠隔監視機器「SolarView Compact」にサイバー攻撃、対策の実施を強く推奨

  9. 北海道内でO157による食中毒死亡事故を受け注意喚起(消費者庁)

  10. スマートフォンアプリ「東横INN公式アプリ」にサーバ証明書の検証不備の脆弱性

アクセスランキングをもっと見る

「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」
「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」

ページ右上「ユーザー登録」から会員登録すれば会員限定記事を閲覧できます。毎週月曜の朝、先週一週間のセキュリティ動向を総括しふりかえるメルマガをお届け。(写真:ScanNetSecurity 名誉編集長 りく)

×