Akamai のブログ | Spring Cloud Function SpEL インジェクション(CVE-2022-22963)の悪用
概要
2022 年 3 月 24 日、Pivotal 社は Spring Cloud Function におけるサーバーサイドのコードインジェクションの脆弱性(Spring Expression Language インジェクション)にパッチを適用し、システム侵害につながる可能性のある重大な脆弱性を修正しました。Spring は、広く使用されているオープンソースの Java フレームワークです。Akamai Adaptive Security Engine(ASE)と Kona Site Defender(KSD)のルールセットにより、この Spring Cloud Function の脆弱性と Spring Core の脆弱性(「Spring4Shell」と呼ばれるリモートコード実行の脆弱性)を緩和できます。このブログ投稿では、Spring Cloud の脆弱性に焦点を当てています。Spring Core の脆弱性については、こちらをご覧ください。
Spring Cloud Function は、ビジネスロジックを特定のランタイムから切り離すことを可能にするテクノロジーです。Spring Expression Language(SpEL)は、Spring ポートフォリオ全体で使用される強力な式言語です。SpEL により、実行時にオブジェクトグラフを操作したり、クエリーを実行したりできます。SpEL インジェクションに関しては、アプリケーションによる評価の結果、信頼できないユーザーが安全でない方法で入力したコード式が見つかり、リモートコード実行の共通脆弱性識別子(Common Vulnerabilities and Exposures:CVE)が数多く報告されています(図 1 を参照)。
2 日後の 3 月 26 日、GitHub ユーザーの「cckuailong」が、この脆弱性の悪用に成功したことを示す概念実証エクスプロイトを公開しました(図 2 を参照)。
それから 1 日も経たないうちに、Akamai はインターネット上のあらゆる場所でこの攻撃の試みを観測するようになりました。
Log4jと同様、現在行われている攻撃の多く(すべてではありません)は「ping back」プローブです。攻撃者は、攻撃に成功した場合にビーコンを送信するようにアプリケーションに指示しています。
攻撃ペイロードは、世界中の何千もの IP アドレスから送信されており、その大半がパブリッククラウドでホストされる Web プロキシおよび仮想プライベートネットワーク(VPN)の IP アドレスです。
脆弱性
パッチを見ると、「spring.cloud.function.routing-expression」HTTP ヘッダー経由で SpEL 式を受け取り、アプリケーションルーティングを実行できることがわかります。
評価対象の式をヘッダー経由で受け取れるかどうかをチェックする機能がコードに含まれていませんでした。この問題を解決するために、 SimpleEvaluationContext である headerEvalContext が追加されました。
KSD Adaptive Security Engine による緩和
Akamai Adaptive Security Engine(ASE)にはコマンドインジェクションを検知するためのルールが数多く組み込まれています。コマンドインジェクション攻撃の多くは、OS レベルのコマンドを実行することを目的としているためです。ASE は、既存のコマンド・インジェクション・ルールを使用して、このゼロデイ攻撃を検知することができました。
また、Kona Site Defender のルールセットにより、次のような攻撃も緩和できます。
3000041 - サーバーサイドのテンプレートインジェクション
3000156 - CMD インジェクションの検知(高リスクの PHP 関数)
サマリー
Spring Cloud Function は Log4j ライブラリほど広く普及していませんが、Spring Cloud Function の脆弱性は容易に悪用可能なため、多くの攻撃者を引き付けることになります。その結果、今後数年にわたって、多くの攻撃者がクリプトマイニング、DDoS、ランサムウェアなどのキャンペーンを展開したり、組織に侵入するためのゴールデンチケットとして利用することが予想されます。しかし、Akamai のお客様は、Akamai Adaptive Security Engine と Kona Site Defender のルールセットによって保護されます。
Akamai の脅威リサーチチームは、この脆弱性の悪用を継続的に監視しており、新しいバリアントが出現した場合や、この脆弱性を悪用するサイバー犯罪者を新たに観測した場合は、保護を更新します。