Apache SuperSet の深刻な脆弱性が FIX:リモートコード実行にいたる恐れ

Alert: Apache SuperSet Vulnerabilities Expose Servers to Remote Code Execution Attacks

2023/09/07 TheHackerNews — Apache SuperSet に存在する、 2つの新たなセキュリティ脆弱性に対処するパッチがリリースされた。これらの脆弱性が攻撃者に悪用されると、影響を受けるシステム上でリモート・コード実行にいたる可能性がある。今回の更新 (バージョン2.1.1) は、脆弱性 CVE-2023-39265/CVE-2023-37941 を塞ぐものである。それらの脆弱性の悪用に成功した攻撃者は、 Superset のメタデータ・データベースを制御できるようになり、悪質な行為にいたる可能性があるという。

Superset の最新バージョンでは、不適切な REST API パーミッションの脆弱性 CVE-2023-36388 も修復されている。この欠陥は、低特権ユーザーによる、サーバ・サイド・リクエスト・フォージェリ (SSRF) 攻撃を可能にする。


Horizon3.ai の Naveen Sunkavally は、「Superset の設計上の特徴は、特権ユーザが任意のデータベースに接続し、強力な SQLLab インターフェイスを使用して、それらのデータベースに対して任意の SQL クエリを実行する点にある。したがって、Superset を騙して自身のメタデータ・データベースに接続させることができれば、攻撃者は SQLLab を通じてアプリケーションの設定をダイレクトに読み書きできるようになる。それにより、認証情報の採取とリモート・コード実行につながる」と、技術記事の中で述べている。

脆弱性 CVE-2023-39265 は、メタストアに使用される SQLite データベースに接続する際の、URI バイパスに関するものであり、攻撃者に対してデータ操作コマンドの実行を許すものである。

また、この CVE-2023-39265 には、ファイルから SQLite データベース接続情報をインポートする際の検証の欠如もある。つまり、悪意を持って細工された ZIP アーカイブ・ファイルのインポートが可能になってしまうという。

Sunkavally は 脆弱性 CVE-2023-37941 について、「Superset のバージョン 1.5〜2.1.0 は、特定の設定データを保存するために python の pickle パッケージを使用している。メタデータ・データベースへの書き込み権限を持つ攻撃者は、任意のpickle ペイロードをストアに挿入し、そのデシリアライズをトリガーすることで、リモートでコードを実行できる」と述べている。

最新リリースで修正された、その他の欠陥は以下の通りである:

  • メタデータ・データベース認証情報の取得に悪用される可能性のある、MySQL の任意ファイル読み込みの脆弱性。
  • superset load_examples コマンドの悪用により、UI からメタデータ・データベースの URI が取得され、そこに保存されているデータの変更を許す脆弱性。
  • Superset のインストール形態に応じて、メタデータ・データベースにアクセスするための、デフォルト認証情報の使用を許す脆弱性。
  • 特権ユーザーとして “/api/v1/database” API をクエリした際に、データベースの認証情報をプレーンテキストで漏洩する脆弱性 (CVE-2023-30776、2.1.0で修正)。

以前にも、Apache SuperSet の深刻な脆弱性 CVE-2023-27524 (CVSS:8.9) が公開されている。それから4カ月後に、今回の脆弱性が発表された。前回の欠陥は、サーバ管理者アクセス権を取得した攻撃者が、任意のコードを実行する可能性があるというものだった。

この問題は、デフォルトの SECRET_KEY が攻撃者に悪用され、インターネットに公開されたインストレーションで認証が行われ、不正なリソースにアクセスされる可能性により発生する。

Horizon3.ai によると、この脆弱性が 2023年4月に公開されて以来、3842 台の Superset サーバのうちの 2076 台が、依然としてデフォルトの SECRET_KEY を使用しているという。また、推測可能な SECRET_KEY である、superset/SUPERSET_SECRET_KEY/1234567890/admin/changeme/thisisasecretkey/your_secret_key_here などを使用しているサーバが 72 台もあったという。

Sunkavally は「キーの自動生成のサポートを追加するよう、メンテナに促した。ユーザーは Flask の SECRET_KEY を設定する責任があるが、必ずと言って良いほど、一部のユーザーは脆弱なキーを設定する。多くの脆弱性の根底にあるのは、Superset の Web インターフェイスが、メタデータ・データベースへの接続を、ユーザーに許可しているという現実にある」と述べている。