This post is also available in: English (英語)
概要
昨年末、Citrix Application Delivery Controller(ADC)およびCitrix Gatewayに脆弱性が確認されました。この脆弱性を悪用したリモートの攻撃者は、容易にディレクトリトラバーサルリクエストを送信し、ユーザー認証なしでシステム構成ファイルから機密情報を読み取り、任意のコードをリモートから実行できます。この脆弱性は、サポートされているすべての製品バージョンとサポートされているすべてのプラットフォームに影響します。
- Citrix ADCおよびCitrix Gatewayバージョン13.0のすべてのサポートされているビルド
- Citrix ADCおよびNetScaler Gatewayバージョン12.1のすべてのサポートされているビルド
- Citrix ADCおよびNetScaler Gatewayバージョン12.0のすべてのサポートされているビルド
- Citrix ADCおよびNetScaler Gatewayバージョン11.1のすべてのサポートされているビルド
- Citrix NetScaler ADCおよびNetScaler Gatewayバージョン10.5のすべてのサポートされているビルド
この脆弱性はCVE番号CVE-2019-19781で追跡されており、CVSS v3.1ベーススコアは9.8の「Critical (緊急)」です。Unit 42のリサーチャーは、本脆弱性を悪用するスキャン活動を発見しました。また、本脆弱性が1月10日に最初に開示されて以降、追加のIoC(侵害の指標)を特定しました。
本稿では、脆弱性の根本原因分析、概念実証例(PoC)、およびインターネット上で観測された攻撃活動に関する情報を提供します。
脆弱性の根本要因分析
このディレクトリトラバーサル脆弱性の原因は、パス名の処理が適切に行われていないことにあります。このシステムにはデータのサニティチェックがなく、与えられたリクエストのパスをそのまま利用しています。脆弱なシステムが /vpn/../vpns/services.html のようなパスを含むリクエストを受信したとき、Citrix 製品で実行されている Apache サーバーはこのパスを /vpn/../vpns/ から単純に /vpns/ に変換しています。Apache システムの本脆弱性により、リモートにいる攻撃者は、ユーザー認証なしで、ディレクトリトラバーサルリクエストをエクスプロイトし、機密ファイルにアクセスすることができるようになります。
このほか、さらに深刻なケースもあります。このディレクトリトラバーサルは、ユーザー認証もサニティチェックもなしにユーザーの入力に適用されてしまいます。そのため攻撃者は、POSTリクエストを使用し、細工済みのXMLファイルを脆弱なサーバー上に作成することができます。その後、攻撃者が作成済みファイルを求める別のHTTPリクエストを行うと、XMLファイル内の悪意のあるコードが実行される可能性があります。
PoC
私たちは検証環境で以下のようなPoCを作成し、これらディレクトリトラバーサルリクエストから得たレスポンスを観察しました。本PoCは、ディレクトリトラバーサルを含むリクエストが、脆弱なシステムにより正常に処理された様子を明確に示しています。リクエストの中には機密ファイルへのアクセスを提供するものもあり、これは情報漏えいやリモートコード実行にもつながります。
- GET /vpn/../vpns/services.html HTTP/1.1
図1 PoCのリクエストに対し正常レスポンスが返されている
- GET /vpn/../vpns/cfg/smb.conf HTTP/1.1
図2 PoCのリクエストによりsmb.confファイルにアクセスすることができる
- GET /vpn/../vpns/portal/scripts/newbm.pl HTTP/1.1
- GET /vpn/../vpns/portal/scripts/rmbm.pl HTTP/1.1
インターネット上で観測されたエクスプロイト状況
ここで、インターネット上に公開されている脆弱なシステムがどのようなものかをざっと眺めてみました。インターネットに接続されたデバイスを検索するサイトShodanでCitrix ADCを対象に単純な検索をかけた結果、脆弱なCitrix製品に関する約700件の結果が得られました。ただし、より詳細な条件で検索すれば、この数はぐんと増えるものと考えられます。
図3 Shodan検索で得られた脆弱なCitrixホストの一覧
私たちは、パロアルトネットワークスの次世代ファイアウォールプラットフォームを通じ、インターネット上で見られるこの脆弱性を悪用する複数の試みを捕捉しました。図5に示したように、ディレクトリトラバーサルリクエストにより、ユーザー認証なしでsmb.confが公開ないし取得がされてしまう可能性があります。また図6に示すように、NSC_USERは、HTTPヘッダ内のディレクトリトラバーサルエクスプロイトにおける鍵となるもので、これを使うことでリモートでコードが実行される可能性があります。
図5 インターネット上で見つかったディレクトリトラバーサルリクエスト
図6 インターネット上で見つかったディレクトリトラバーサルリクエスト
結論
本脆弱性は広く世界中のユーザー環境に見られるもので、Unit 42もほかのセキュリティ研究機関も実際にインターネット上で活発に悪用されている様子を確認しています。残念ながら、本脆弱性は悪用が容易で、リモートからのコードの実行にもつながります。
Citrixは2019年12月17日にSecurity Bulletin CTX267027とMitigation Steps CTX267679を公開しました。これらの文書は攻撃の可能性を抑止するのに役立ちます。Citrixはまた、Citrix ADCおよびCitrix Gatewayのバージョン10、11、12、13用のパッチを1月下旬に公開することを発表しました。
Citrixは、これらの製品を利用しているユーザーに対し、特定のレスポンダーポリシーを適用することで、エクスプロイトの試みをフィルタリングすることを推奨しています。CTX267679の緩和手順では、/../のディレクトリトラバーサルの試みを含んだリクエストと、/vpns/ディレクトリにアクセスしようとするリクエストをブロックする手法について説明しています。システム管理者は、脆弱性が適切に修正されるまでの間、案内されている緩和策を講じることを強く推奨します。
1 2 3 4 5 6 7 8 |
add responder action respondwith403 respondwith "\"HTTP/1.1 403 Forbidden\r\n\r\n\"" add responder policy ctx267027 "HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/vpns/\") && (!CLIENT.SSLVPN.IS_SSLVPN || HTTP.REQ.URL.DECODE_USING_TEXT_MODE.CONTAINS(\"/../\"))" respondwith403 |
ベストプラクティスに従って弊社の次世代セキュリティプラットフォームを配備し、Threat Preventionのサブスクリプションをお持ちのお客様は、同Citrix ADCの脆弱性から保護されています。弊社は2020年1月7日にお客様に同脅威に対する保護を公開済みです。また、2020年1月11日に、成功したエクスプロイトに関する公開レポートをリリースしています。Unit 42は引き続き本脆弱性のエクスプロイト状況を監視し、同エクスプロイトが継続する場合、対応する保護を追加していく予定です。
- 本脆弱性に対応するThreat Prevention シグネチャは 57497と 57570です。
- また、本脆弱性を悪用する異常なスキャン活動に関連する以下のIPアドレスが「Palo Alto Networks Known Malicious IP addresses (パロアルトネットワークス 既知の悪意のあるIPアドレス)」のブロックリストに追加されています。PAN-OS 8.1以降をご利用中のお客様は、pre-defined External Dynamic Listsを使うことにより、ポリシー内でブロックできるようになります。
IOC
- 111[.]206[.]59[.]134
- 111[.]206[.]52[.]101
- 111[.]206[.]52[.]81
- 111[.]206[.]59[.]142
- 104[.]244[.]74[.]47
- 104[.]168[.]166[.]234
- 23[.]129[.]64[.]157
- 27[.]115[.]124[.]70
- 27[.]115[.]124[.]9
- 27[.]115[.]124[.]74
- 45[.]32[.]45[.]46
- 45[.]83[.]67[.]200
- 47[.]52[.]196[.]15
- 47[.]52[.]196[.]152
- 167[.]88[.]7[.]134
- 185[.]212[.]170[.]163
- 5[.]101[.]0[.]209
- 185[.]220[.]101[.]69
- 85[.]248[.]227[.]164
- 192[.]236[.]192[.]119
- 192[.]236[.]192[.]3
- 94[.]140[.]114[.]194