Citrix NetScalerの深刻な脆弱性「CVE-2026-88772」、認証不要でroot権限の奪取に至る技術詳細が公開
要点
-
Citrix NetScaler ADCおよびGatewayに存在する深刻な脆弱性「CVE-2026-88772」(CVSSスコア:9.5)の技術的詳細とエクスプロイト手法が公開された。
-
DTLSプロトコルの処理エンジンにおけるパケット解析の不整合により、認証前の段階でメモリバッファオーバーフローが発生する。
-
35,840バイトの内部バッファに対して約174KBのデータを送り込むことで、境界外への書き込みが引き起こされる。
-
メモリ保護機能を回避して制御フローを奪い、最高管理者権限(root権限)で任意のシェルコードを実行できることが実証された。
-
本脆弱性はパッチが提供済みであるものの、別の脆弱性「CVE-2026-88771」とともに実際のサイバー攻撃で既に悪用されている。
-
サイバーセキュリティ研究機関のwatchTowrは、Citrixのネットワーク機器「NetScaler ADC」および「NetScaler Gateway」に存在する重大な脆弱性「CVE-2026-88772」について、認証を経ずに任意のシェルコードを実行可能にする技術的な詳細を公開しました。本脆弱性はすでに修正パッチが提供されているものの、実際の環境で悪用が確認されていると報告されています。
CVSSスコア9.5の深刻なメモリオーバーフロー脆弱性
今回の脆弱性「CVE-2026-88772」は、共通脆弱性評価システム(CVSS)のスコアで9.5という極めて高い深刻度が割り当てられている問題です。Citrix NetScalerのパケット処理エンジンである「NetScaler Packet Processing Engine(NSPPE)」において、通信の暗号化を行うプロトコル「DTLS(Datagram Transport Layer Security)」の処理過程に存在するメモリオーバーフローの不具合に起因しています。
米国土安全保障省サイバーセキュリティ・インフラセキュリティ庁(CISA)も本件について言及しており、Citrix NetScaler ADCおよびGatewayにおいてメモリバッファの境界内操作が適切に制限されていないため、リモートからのコード実行やサービス拒否(DoS)状態を引き起こす可能性があると指摘しています。
DTLSヘッダーの解析不整合とバッファ溢れの仕組み
watchTowrの分析によると、問題の根本原因はNetScalerがDTLSハンドシェイクヘッダーを解析する際、宣言されたフラグメントサイズを過度に信頼してしまう点にあります。
具体的には、DTLSハンドシェイクヘッダー内のメッセージ全体長を示すフィールド(length)が「120バイト」と指定されている一方で、分割された個々のデータサイズを示すフィールド(fragment_length)が「1バイト」と設定されているようなケースで解析の不整合が発生します。攻撃者はこれを利用し、レコード自体は見かけ上極めて小さく見せかけながら、実際に内部バッファへコピーされるデータ量を大幅に増大させる悪意あるレコードを構築できるとされています。
watchTowrのセキュリティ研究者であるSina Kheirkhah氏は、この挙動について次のように解説しています。例えば、120バイトのハンドシェイクメッセージが120個のフラグメントに分割されて到達する場合、すべてのフラグメントで全体長(length)が120と指定されつつ、各フラグメント長(fragment_length)は1と設定されます。それぞれのオフセット値は0から119まで順に割り振られ、すべての位置のデータが揃った段階で、サーバー側は120バイトのメッセージが完全に到達したと認識してデータの再構築(リアセンブリ)を開始します。
受信された各パケット(1,459バイト)はNetScaler独自のバッファ構造である「NetScaler Buffers(NSB)」に格納され、その後、わずか35,840バイトの容量しかない単一の作業用スクラッチバッファへと結合されます。しかし、脆弱性を抱えるバージョンでは、次のパケットがこのスクラッチバッファの空き容量に収まるかどうかの検証を行いません。その結果、バッファの終端を超えてデータが書き込まれ、バッファオーバーフローが発生することになります。
Kheirkhah氏によると、悪意あるレコード群は再構築処理に対して「各レコードは120バイトのメッセージのうち1バイトしか提供していない」と認識させますが、NSPPEはほぼレコード全体をNSB内に保持し続けます。これにより、120個のレコードを受信してメッセージが完了したとみなされた時点において、NSBのチェーン全体には約174KBもの膨大なデータが蓄積されることになります。
メモリ保護の回避とroot権限による任意コード実行
watchTowrのさらなる解析では、このバッファオーバーフローを悪用することで、プログラムの制御フローを任意のシェルコード(不正に実行させる機械語コード)へとリダイレクトできることが判明しました。
実証されたエクスプロイトでは、OSのメモリ保護機能であるNX(No-Execute:メモリ領域における不正なコード実行を防ぐ機能)を回避するためにシステムコール「mprotect()」が利用されています。これにより、攻撃者は認証を一切受けていない状態から、最上位の権限であるroot権限を持った状態で任意のシェルコードを実行させることが可能になると報告されています。
併用される関連脆弱性「CVE-2026-88771」
今回の詳細公開は、watchTowrが別の関連脆弱性「CVE-2026-88771」の概念実証(PoC)コードを公開した翌日に行われました。CVE-2026-88771もまた、現実のサイバー攻撃において今回詳細が明らかになったCVE-2026-88772と組み合わせて悪用されていることが確認されています。