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

イエラエ 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. LINE client for iOS にサーバ証明書の検証不備の脆弱性

    LINE client for iOS にサーバ証明書の検証不備の脆弱性

  2. バッファロー製無線 LAN ルータに複数の脆弱性

    バッファロー製無線 LAN ルータに複数の脆弱性

  3. Windows 11のスクリーンショット、黒塗りを復元できる可能性

    Windows 11のスクリーンショット、黒塗りを復元できる可能性

  4. Linux の GSM ドライバにおける Use-After-Free の脆弱性(Scan Tech Report)

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

  6. NETGEAR 製ルータにバッファオーバーフローの脆弱性

  7. ディープフェイクか 専務の声を模倣する着電 ~ J-CSIP が 2023年1Q の BEC 事例公開

  8. OpenSSLにサービス運用妨害(DoS)の脆弱性

  9. Microsoft 365 from NTT Communicationsへの第三者からの不正利用、多要素認証を推奨

  10. KDDI 製ホームゲートウェイ HGW BL1500HM に複数の脆弱性

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

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

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

×