Cassandra NoSQL データベースの深刻な脆弱性 CVE-2021-44521 が FIX

High-Severity Vulnerability Found in Apache Database System Used by Major Firms

2022/02/16 SecurityWeek — 火曜日に JFrog のセキュリティ研究者たちは、Apache Cassandra の最新バージョンに存在する、深刻度の高いリモートコード実行の脆弱性に関する、詳細な技術情報を公開した。Cassandra は、高いスケーラビリティを持つ分散型 NoSQL データベースであり、Netflix/Reddit/Twitter/Cisco/Constant Contact/Digg/Urban Airship/OpenX などの組織や、DevOps 開発者などの間で人気がある。

この脆弱性 CVE-2021-44521 (CVSS 8.4) は、デフォルト・コンフィグレーション以外にのみ影響するため、悪用が容易であるという事実が希釈され、システムの完全な破壊へといたる可能性が生じる。

このセキュリティ・エラーは、Cassandra のデータをカスタム処理するための、ユーザー定義関数 (UDF:user-defined-functions) を作成する機能が有効になっている場合にのみに発生し、攻撃者が UDF を作成する権限を持っている場合にのみ悪用が可能となる。このコンフィグレーションはデフォルトではなく、安全ではないと記されている。

Cassandra の UDF は、Java と JavaScript で書くことが可能であり、後者のケースでは Nashorn エンジンが使用されるが、Nashorn エンジンは「信頼されていないコードを受け入れた場合の安全性が保証されていない」ため、サンドボックスで実行する必要があると、JFrog は説明している。

実際のところ、Cassandra には UDF コードを制限するための、カスタム・サンドボックスが実装されているが、デフォルト以外の一連のコンフィグレーション・オプションを有効にすると、攻撃者が Nashorn エンジンを悪用してサンドボックスから脱出し、リモートコード実行を可能にすることを、JFrog は発見した。

具体的には、Cassandra のデプロイメントが、スクリプトを含む UDF を許可し、UDFスレッドを許可しないように設定されている場合に、この脆弱性が問題となる。デフォルトでは、UDF スレッドが有効になっており、呼び出された UDF 関数は、それぞれ別のスレッドで実行されるようになる。

UDF が有効になると、匿名でログインしているユーザーも含めて、すべてのユーザーが任意の UDF を作成/実行できるようになると、JFrog は説明している。同社は、脆弱性 CVE-2021-44521 に関するテクニカル・レポートの中で、Cassandra のサンドボックスからの脱出方法についても説明しており、PoC (proof-of-concept) コードを実際に動作させるデモを提供している。

また JFrog は調査の過程で、サービス拒否攻撃や、安全でないオブジェクトのデシリアライズによるリモートコード実行などの、いくつかの別問題が確認されたとしている。CVE-2021-44521 は、Apache Cassandra の Ver 3.0.26/3.11.12/4.0.2 で対処されており、可能な限り早急なパッチの適用が推奨されている。

JFrog は、「Apache の修正プログラムでは、セキュリティ・マネージャーを OFF にすることが禁止され、java.lang.System へのアクセスをブロックする新しいフラグ allow_extra_insecure_udfs (デフォルトではfalse) が追加されている」と説明している。また、ユーザー・サイドでは、UDF の無効化や、UDF スレッドの許可、信頼できないユーザーに対する許可の拒否により、この脆弱性の影響を軽減できる。

Cassandra は老舗の NoSQL データベースですが、老舗だからこそ、こうしたセキュリティ・ホールが残っているのでしょう。1月7日に「H2 Database Console に Log4Shell と同じ構造の脆弱性:約 6,800 件のアーティファクトに影響」という記事をポストしましたが、同じようなソフトウェア・サプライチェーンの問題が発生する可能性も十分にあります。影響が、最小限に収まると良いですね。

%d bloggers like this: