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

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

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

脆弱性と脅威 脅威動向
GMOサイバーセキュリティ byイエラエ株式会社の業務風景より
GMOサイバーセキュリティ byイエラエ株式会社の業務風景より 全 8 枚 拡大写真

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

 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イエラエ株式会社》

この記事の写真

/

特集

関連記事

PageTop

アクセスランキング

  1. 東芝テックが利用するクラウドサービスに不正アクセス、取引先や従業員の個人情報が閲覧された可能性

    東芝テックが利用するクラウドサービスに不正アクセス、取引先や従業員の個人情報が閲覧された可能性

  2. クラウド労務管理「WelcomeHR」の個人データが閲覧可能な状態に、154,650 人分のダウンロード確認

    クラウド労務管理「WelcomeHR」の個人データが閲覧可能な状態に、154,650 人分のダウンロード確認

  3. セキュリティ対策は株価を上げるのか ~ 株主総利回り(TSR)の平均値は高い傾向

    セキュリティ対策は株価を上げるのか ~ 株主総利回り(TSR)の平均値は高い傾向

  4. フュートレックにランサムウェア攻撃、本番環境への侵入形跡は存在せず

    フュートレックにランサムウェア攻撃、本番環境への侵入形跡は存在せず

  5. ガートナー クラウドクッキング教室 ~ CCoE 構築の重要性

    ガートナー クラウドクッキング教室 ~ CCoE 構築の重要性

ランキングをもっと見る
PageTop