App & API Protector によって CitrixBleed 2 (CVE-2025‑5777) NetScaler のメモリー漏えいを緩和
2025 年 7 月 4 日(金)、Citrix NetScaler ADC および Gateway デバイスに影響を与えるメモリーの漏えいを引き起こす脆弱性について、悪用の詳細が公開されました。これは事前認証に関する脆弱性のため、影響を受ける NetScaler デバイスから初期化されていないメモリーを漏えいさせる悪性の要求を、攻撃者が作成できるようになってしまいます。
この脆弱性は、当初、2025 年 6 月 17 日に Citrix のユーザーに通知されました。その後、調査機関が、この脆弱性に関連する活動、侵害の兆候、悪用の概念実証を示してきました。影響を受けたデバイスに迅速にパッチを適用したとしても、概念実証が公開されたことをすぐに確認することが重要です。この脆弱性により、影響を受けるデバイスを VPN、プロキシ、または AAA 仮想サーバーとして設定できることを考慮すると、深刻な結果を招く可能性があると考えられます。セッショントークンやその他の機微な情報が公開される可能性があり、これによって、内部アプリケーション、VPN、データセンターネットワーク、および内部ネットワークへの不正アクセスが可能になるかもしれません。
影響を受けるデバイスとバージョン:
- 14.1-43.56 以前の NetScaler ADC および NetScaler Gateway 14.1
- 13.1-58.32 以前の NetScaler ADC および NetScaler Gateway 13.1
- 13.1-37.235-FIPS および NDcPP 以前の NetScaler ADC 13.1-FIPS および NDcPP
- 12.1-55.328-FIPS 以前の NetScaler ADC 12.1-FIPS
Akamai では、この脆弱性が公開された後から、脆弱性スキャナーのトラフィックが著しく増加し、脆弱なターゲットを探す脅威アクターも増加していることを確認しています。App & API Protector をご利用のお客様は、この CVE に対処するためにリリースされた特別な Rapid Rule 3000967 で保護されています。
Citrix CVE には、他にも以下のバージョンがあることにご注意ください。
CVE‑2025‑6543:これは、Citrix NetScaler ADC/Gateway(VPN/AAA モード)の未認証のメモリーオーバーフローです。制御フローを中断させたり、サービス妨害を引き起こしたり、リモートでコードを実行したりする可能性があります。しかし、公開されている PoC はまだありません。
CVE‑2025‑5349:これは、NetScaler 管理インターフェースに影響を与える不適切なアクセス制御の脆弱性に関連するもので、認証を経ずに管理操作を実行する可能性があります。現時点では、公開されている既知の PoC はありません。
脆弱性の詳細
Citrix NetScaler の基盤となるコードは、C または C++ で記述されています。この脆弱性はログインパラメーターを処理する認証関数内に存在します。
根本的な原因は、初期化されていないログイン変数(ユーザー名の詳細を保持することを目的としたもの)が、不適切なメモリーでの処理、入力検証の欠陥、および Citrix NetScaler の認証ロジックでのエラー処理の欠落時に使用されてしまうことです。C と C++ は変数をゼロ、null、またはその他の指定された値に自動的に初期化しないため、初期化されていない変数がランダムなスタックメモリー領域を指定し、攻撃者がこのメモリー領域(本質的には以前の操作や処理によって残ったデータ)に存在する意図しない/機微な情報にアクセスできるようになる可能性があります。
この脆弱性が狙うのは、/p/u/doAuthentication.do という URL パスです。この URL パスは認証を必要としないため、攻撃者が非常にアクセスしやすいものであり、事前条件も必要ありません。このような悪条件が重なることにより、認証されていない攻撃者でも機密性の高いメモリーコンテンツを漏えいさせることができます。また、すでに侵害を始めている一定の脅威アクターは野放しになっています。影響を受けた被害者や組織の全体的な影響および範囲はまだ明確になっていません。
脆弱性の悪用
認証を行うための正当な POST リクエストには、login や passwd などの使用される可能性の高いパラメーター名や、それに対応する値を持つ追加のパラメーターが含まれます(図 1)。
悪用の試みでは、User-Agent ヘッダーと HTTP 本文に、攻撃者が制御する明らかに大きなペイロードが存在し、本文にはログイン文字列のみが含まれている場合があります(図 2)。これが、より悪用されやすくなる要因です。
CitrixBleed と呼ばれる理由
「CitrixBleed」という用語は、同じペイロードを送信することによりメモリーの漏えいが繰り返し発生し、毎回新しいスタックメモリーの一部が漏えいすることで、重要な情報が実際に「流れ出る」ことを表しています。長い User-Agent ヘッダーは、スタックに認識可能なパターンを挿入するために使用されます。攻撃者は、THR-WAF-RESEARCH のような十分に大きなランダムな文字列を何度も繰り返してメモリーを埋めることで、初期化されていないスタックのメモリーが漏えいするタイミングを確実にします。このような特徴的なマーカーは、HTTP 応答の本文の <InitialValue>…</InitialValue> XML タグ内に現れます。これにより、漏えいと、メモリーの一部(通常はセッション変数、トークン、パスワード、ユーザー名、設定値などの機微な情報を含む)漏えいが確認できます。
2023 年に公開されたオリジナルの CitrixBleed 脆弱性(CVE‑2023‑4966)が、不正なホストヘッダーを介してメモリーを漏えいさせたのと同様に、CitrixBleed 2(CVE‑2025‑5777)は、今回も初期化されていない変数を使用してメモリーを漏えいさせます。最初の問題は、厳密な Host ヘッダー検証により、Akamai Ghost Server によってデフォルトで緩和されました。一方、CitrixBleed 2 では、専用の Adaptive Security Engine(ASE)ルールが必要です。
悪用のステップを以下に簡単にまとめました。
1)再構成:露出している Citrix NetScaler ADC/Gateway のインスタンスをスキャンします。
2)列挙:ターゲットが脆弱なバージョンを実行しているかどうかを確認します。
3)悪用:長い User-Agent ヘッダーと細工したリクエストを /p/u/doAuthentication.do に送信します(このとき認証は不要です)。
4)漏えい:デバイスは、<initialValue> XML タグの漏えいしたスタックメモリーで応答します。
5)流出フェーズ:ステップ 3~4 が繰り返され、同じターゲットデバイスからスタックメモリーが継続的に漏えい(CitrixBleed 2)します。
6)攻撃後:漏えいさせて入手したデータを不正な目的で使用します。たとえば、漏えいさせて入手したセッショントークンでの認証に悪用します。
App & API Protector による緩和策
CitrixBleed 2 に対応するため、WAF Threat Research Team は 2025 年 7 月 7 日、デフォルトアクションを「Alert」に設定した新しい Rapid Rule をリリースしました。
3000967 -Citrix NetScaler のメモリー漏えいが検出されました(CVE-2025-5777)
2025 年 7 月 8 日、ルールが正確であることを確認した後、推奨される Rapid Rule アクションが「Deny」のデフォルトアクションに設定されました。
悪用の詳細
私たちは、7 月 8 日に、複数のホスト名で、さまざまな IP アドレスから、URL パス /p/u/doAuthentication. do をターゲットにした 20 万件もの POST リクエストを確認しました。これらは脆弱な NetScaler インスタンスを特定することを目的とした大規模なスキャン試行でした。図 4 は、このアクティビティ中に検知されたリクエストの例です。