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

イエラエ 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. ISC BINDに複数の脆弱性

    ISC BINDに複数の脆弱性

  2. Knot Resolverに外部からのサービス不能(DoS)攻撃が可能となる脆弱性

    Knot Resolverに外部からのサービス不能(DoS)攻撃が可能となる脆弱性

  3. 8月下旬からインターネットバンキングに係る不正送金被害が急増、注意を呼びかけ

    8月下旬からインターネットバンキングに係る不正送金被害が急増、注意を呼びかけ

  4. Unboundに委任情報を処理する際にシステムリソースの過度な消費が発生する脆弱性

  5. トレンドマイクロ Deep Security および Cloud One - Workload Security の Windows版Agentに複数の脆弱性

  6. 三菱電機製空調管理システムに複数の脆弱性

  7. やけど虫の駆除方法、体液が皮膚に付いてしまった場合の対策について

  8. 日本銀行を騙る不審メールに注意を呼びかけ

  9. オリンピック・パラリンピックに向け 鉄道各社セキュリティ対策

  10. NECグループ製品セキュリティ情報に3件追加

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

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

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

×