Atlassian Confluence の OGNL インジェクションの脆弱性に対する Fastly の保護対策
背景
- Atlassian Confluence の脆弱性 (CVE-2021-26084) の悪用が拡大していることが報告されています。- この脆弱性の悪用をブロックするため、Fastly は新たな WAF ルールをリリースしました。Fastly の次世代 WAF (旧 Signal Sciences) をご利用のお客様には、このルールをを直ちに有効にすることを推奨しています (以下をご参照ください)。
- Confluence Server または Data Center のインスタンスには、Atlassian によって提供されているパッチを早急に適用してください。
先日、Confluence Server または Data Center インスタンスで任意のコードを実行可能にする、Atlassian Confluence における OGNL インジェクションの脆弱性 (CVE-2021-26084) が発表されました。Fastly は、この脆弱性から次世代 WAF をご利用のお客様を守るためのルールを構築・デプロイしました。この脆弱性は活発に悪用されており、さらに加速することが予想されています。自己管理で Confluence を利用している場合は注意が必要です。
影響範囲
脆弱性が存在するのは自己管理型の Confluence インスタンスのみで、クラウドホスティング型 (Confluence Cloud) のインスタンスには影響はありません。ユーザーのアカウント作成を許可するオプション (Allow people to sign up to create their account) が有効になっている場合、管理者以外のユーザーや認証されていないユーザーが、自己管理型の Confluence インスタンスへアクセスすることが可能になります。
この脆弱性の悪用にはローカルアクセスが必要でないため、攻撃キャンペーンにて利用されやすい脆弱性となっています。攻撃者は Confluence インスタンスのリモートコントロールを取得することで、顧客データを処理する他の本番サーバーへの移行、Cryptominer のインストール、今後のアクセスに備えたバックドアの埋め込みなど、システムを自由に操ることが可能になります。
OGNL インジェクションの脆弱性とは
今回問題となったのは、Object Graph Navigation Language (OGNL) のインジェクション攻撃に対する脆弱性です。OGNL は、Java オブジェクトのプロパティの取得・設定を行うための式言語であるため、実行可能なコードの作成や変更を行うことができるように設計されています (そのため、特に Apache Struts はOGNL インジェクション攻撃によって大きな被害を受けています)。
もともと OGNL の目的は、テンプレートに基づいたテキストの条件付き書式設定を可能にする、制限付き書式機能を提供することでした。しかし、実行コードを読み込むための Java ランタイムの一部を誤って公開してしまったことが原因で、任意のコードの実行が可能になってしまいました。
インジェクション攻撃の目的は、予想されるユーザーの入力にコードを挿入し、コンテキストなしでアプリケーションにそのコードを評価および実行させることです。この場合、脆弱性は Velocity (Apache Foundation の Java テンプレートエンジン) でのテンプレートインジェクション攻撃によって引き起こされます。攻撃者は、入力にコマンドライン (bash) のコマンドを含め、それをオペレーションシステム上で実行させることができます。
この攻撃では、OGNL 式の内部で悪意のあるものが呼び出されていないかをチェックする isSafeExpression
メソッドが巧妙に回避されています。Unicode 文字を使用することで、攻撃者は検証を回避する入力を作成することができます。例えば、#{3*33}
という入力の代わりに \u0027%2b#{{3*33}}%2b\u0027
という文字列を入力すると、最終的に99という結果が得られます。悪用手口について詳しくは、こちらの記事をご覧ください。
脆弱性への速やかな対応を
至急、以下の対策を講じるよう強くお勧めします。2021年8月31日には概念実証コードが公開されており、Fastly のセキュリティリサーチチームは脆弱性が活発に悪用されていることを確認しています。
Fastly の次世代 WAF を自己管理型の Confluence インスタンスの前に使用しているお客様は、速やかにこのルールを有効にし、シグナルが観測された場合はリクエストをブロックするよう設定することを強くお勧めします。Site Rules メニューからTemplated Rules を選択し、Category オプションで CVE を選択すると、お客様向けに公開されている CVE ルールのリストにそのルールが表示されます。
また、Atlassian のガイダンスに従い、影響を受けた Confluence インスタンスにパッチを適用することをお勧めします。問題となっている脆弱性は世界中で活発に悪用されています。この脆弱性を利用して攻撃者が脆弱なサーバー上でコードをリモート実行した場合、深刻な影響が及ぶ可能性があります。
さらに詳しく知りたい場合
一連の攻撃に関する技術的な詳細については、CSO Online のこちらの投稿をご参照ください。また、テンプレート化されたルールを有効化する方法に関しては、Fastly のドキュメントをご覧ください。