2025年9月 Ciscoソフトウェアに影響を与えるゼロデイ脆弱性
Cisco社の報告によると、高度な技術を持つ国家支援型のアクターが、Cisco Adaptive Security Appliance (ASA) および Firepower Threat Defense (FTD) ソフトウェアに存在する複数のゼロデイ脆弱性を活発に悪用しています。Cisco社は、この攻撃者を、以前に同社が「ArcaneDoor」と名付けたキャンペーンと同一のアクターであると特定しています。
この脅威アクターは、主に世界中の政府機関のネットワークを標的にデータ窃取活動を行っています。Cisco社の観測によると、攻撃者は新たに特定されたこれらのゼロデイ脆弱性を悪用する際、高度な回避技術を用いてログへの記録や活動の特定を妨害しています。
国家が関与すると疑われる攻撃者が、インターネットに面したデバイスのゼロデイ脆弱性を悪用する傾向は依然として続いています。エッジデバイスとも呼ばれるこれらのインターネット接続機器は、組織の内部ネットワークとパブリックインターネット間のセキュリティ境界として機能します。これには、ファイアウォール、VPNゲートウェイ、ルーター、ロードバランサーなどが含まれます。これらのデバイスが侵害されると、攻撃者はネットワークへの直接的かつ検知されにくい侵入経路を確保することが可能になります。
脆弱性の詳細
Cisco社は、ASAおよびFTDに関する3つの重大な脆弱性についてアドバイザリを公開しました。このうち2つ、CVE-2025-20333とCVE-2025-20362は、現在、攻撃者によって活発に悪用されています。Cisco社は、3つ目の脆弱性であるCVE-2025-20363についても、差し迫った悪用のリスクが高いと特定しています。これらの脆弱性により、攻撃者は任意のコード実行、データ窃取、および永続的なマルウェアの設置が可能となり、デバイスの再起動後もアクセスを維持することができます。
CVE番号 | 説明 | CVSS深刻度 |
CVE-2025-20333 | Cisco Secure Firewall Adaptive Security Appliance (ASA) SoftwareおよびCisco Secure Firewall Threat Defense (FTD) SoftwareのVPNウェブサーバーの脆弱性により、認証されたリモートの攻撃者が、影響を受けるデバイス上で任意のコードを実行できる可能性があります。 | 9.9 緊急 |
CVE-2025-20362 | Cisco Secure Firewall Adaptive Security Appliance (ASA) SoftwareおよびCisco Secure Firewall Threat Defense (FTD) SoftwareのVPNウェブサーバーの脆弱性により、認証されていないリモートの攻撃者が、通常は認証なしではアクセスできないはずのリモートアクセスVPNに関連する制限付きURLエンドポイントにアクセスできる可能性があります。 | 6.7 警告 |
CVE-2025-20363 | Cisco Secure Firewall Adaptive Security Appliance (ASA) Software、Cisco Secure Firewall Threat Defense (FTD) Software、Cisco IOS Software、Cisco IOS XE Software、およびCisco IOS XR Softwareのウェブサービスの脆弱性により、認証されていないリモートの攻撃者(Cisco ASAおよびFTD Softwareの場合)、または低いユーザー権限を持つ認証されたリモートの攻撃者(Cisco IOS、IOS XE、およびIOS XR Softwareの場合)が、影響を受けるデバイス上で任意のコードを実行できる可能性があります。 | 9.0 緊急 |
2025年9月25日現在、Cisco社は3つの脆弱性すべてに対処するソフトウェアアップデートをリリースしています。同社は、脅威を軽減し、侵害を防ぐため、すべての影響を受けるシステムを直ちに利用可能な最新のソフトウェアバージョンにアップグレードすることを強く推奨しています。
米国サイバーセキュリティ・社会基盤安全保障庁(CISA)は、このキャンペーンがもたらす重大なリスクのため、連邦政府機関に対して即時の緩和措置を義務付ける緊急指令(ED)25-03を発行しました。この脆弱性は、重要な境界ネットワークデバイスに影響を与え、公共部門と民間部門の両方の組織に重大なリスクをもたらします。
英国の国家サイバーセキュリティセンター(NCSC)は、これらのゼロデイ脆弱性を悪用する攻撃で使用されるマルウェアファミリー「RayInitiator」と「LINE VIPER」に関するマルウェア分析レポートを公開しました。彼らの分析によると、RayInitiatorは、再起動やファームウェアのアップグレードを処理するマルチステージのGrand Unified Bootloader(GRUB)ブートキットです。また、セキュアブートを持たないCisco ASA 5500-XシリーズデバイスにLINE VIPERシェルコードローダーを展開します。LINE VIPERはRayInitiatorによってメモリにロードされ、WebVPNクライアント認証セッションを介してHTTPSで、またはICMPを介してコマンド&コントロール(C2)の指示を受け取り、応答は生のTCPを介して行われます。
ゼロデイ脆弱性のライフサイクル
攻撃者、特に国家が関与するアクターは、エッジデバイスにおけるゼロデイ脆弱性の発見と悪用に多大なリソースを投入しています。これらの欠陥はこれまで知られていなかったため、ベンダーがパッチをリリースするまでの間、攻撃者に重要な機会の窓を提供します。ゼロデイが兵器化されると、攻撃者は同じ脆弱な製品を使用している広範囲の組織に対してエクスプロイトを使用することができます。
さらに、国家が関与するアクターがゼロデイエクスプロイトを成功裏に使用した後、その脆弱性に関する知識と悪用方法は、時間の経過とともに必然的に独占的なものではなくなります。これにより、二次的で、しばしばより広範な悪用の段階へと移行します。
他の脅威アクターが、元の高度なエクスプロイトをリバースエンジニアリングしたり、ベンダーからの公開アドバイザリやパッチリリースによって、根本的な脆弱性が明らかになる場合があります。この情報公開は、サイバー犯罪グループや機会主義的なハッカーにとっての設計図として機能します。
これらの攻撃者はその後、独自の概念実証(PoC)コードを開発します。これは、国家が関与するアクターの元のエクスプロイトよりも単純でステルス性は低いことが多いですが、パッチが適用されていないシステムに対しては依然として非常に効果的です。このPoCコードは急速に兵器化され、ダークウェブのフォーラムで販売されたり、エクスプロイトキットに統合されたりすることで、かつては国家の独占的な能力であったものが、はるかに広範囲の金銭目的の攻撃者が利用できるようになります。
この現象は、「パッチを適用するか、さもなければ侵害されるか(patch-or-perish)」というシナリオを生み出し、ベンダーのパッチを迅速に適用しない組織は、新たな大規模かつ機会主義的な攻撃の波に対して非常に脆弱な状態に置かれます。
結論
Palo Alto Networksは、直ちにパッチを適用することを推奨します。Cisco社はまた、脆弱性はあるがアップデートできないデバイス向けに、一時的な緩和策ガイダンスも提供しています。これらの一時的な緩和策には、SSL/TLSベースのVPNウェブサービスを無効にするなどの独自のリスクが伴います。
Palo Alto Networksは、このキャンペーンに関する詳細情報と、この活動を検出するために、以下のアドバイザリを確認することを推奨します。
- セキュリティアドバイザリ:Cisco Secure Firewall Adaptive Security Appliance SoftwareおよびSecure Firewall Threat Defense Software VPN Web Server Remote Code Execution Vulnerability
- セキュリティアドバイザリ:Cisco Secure Firewall Adaptive Security Appliance SoftwareおよびSecure Firewall Threat Defense Software VPN Web Server Unauthorized Access Vulnerability
- セキュリティアドバイザリ:Cisco Secure Firewall Adaptive Security Appliance Software, Secure Firewall Threat Defense Software, IOS Software, IOS XE Software, and IOS XR Software Web Services Remote Code Execution Vulnerability
この記事の付録では、Cortex XDRおよびXSIAMのお客様向けに、Cisco ASAデバイスからのロギングが無効化または中断された場合を特定するための2つのハンティングクエリを提供しています。
侵害された可能性がある場合、または緊急の案件がある場合は、Unit 42インシデントレスポンスチームにご連絡いただくか、以下の番号にお電話ください。
- 北米:フリーダイヤル:+1 (866) 486-4842 (866.4.UNIT42)
- 英国:+44.20.3743.3660
- ヨーロッパおよび中東:+31.20.299.3130
- アジア:+65.6983.8730
- 日本:+81.50.1790.0200
- オーストラリア:+61.2.4062.7950
- インド:000 800 050 45107
追加リソース
- セキュリティアドバイザリ:Cisco Secure Firewall Adaptive Security Appliance SoftwareおよびSecure Firewall Threat Defense Software VPN Web Server Remote Code Execution Vulnerability - Cisco
- セキュリティアドバイザリ:Cisco Secure Firewall Adaptive Security Appliance SoftwareおよびSecure Firewall Threat Defense Software VPN Web Server Unauthorized Access Vulnerability - Cisco
- セキュリティアドバイザリ:Cisco Secure Firewall Adaptive Security Appliance Software, Secure Firewall Threat Defense Software, IOS Software, IOS XE Software, and IOS XR Software Web Services Remote Code Execution Vulnerability - Cisco
- Ciscoイベントレスポンス:Ciscoファイアウォールに対する継続的な攻撃 - Cisco
- ArcaneDoorの背後にいる脅威アクターによるCiscoファイアウォールへの継続的な攻撃に関する検出ガイド - Cisco
- マルウェア分析レポート:RayInitiator & LINE VIPER - 英国国家サイバーセキュリティセンター
付録
Unit 42は、Cortex XDRのお客様向けに、Cisco ASAデバイスからのロギングが無効化または中断されたタイミングを特定するための以下の2つのハンティングクエリを開発しました。
このクエリは、Cisco ASAデバイスからのすべてのログタイプをグラフ化します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
dataset = cisco_asa_raw | alter alert_level = arrayindex(regextract(_raw_log, "\s%.*?(ASA\-[\d])\-[\d]{1,}\:"), 0) | alter alert_level_friendly = "" | alter alert_level_friendly = if((alert_level contains "ASA-1"), "Alert Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-2"), "Critical Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-3"), "Error Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-4"), "Warning Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-5"), "Notification Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-6"), "Informational Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-7"), "Debug Message", alert_level_friendly) | alter debug_count = if(alert_level = "ASA-7", 1, 0) | alter info_count = if(alert_level = "ASA-6", 1, 0) | alter notification_count = if(alert_level = "ASA-5", 1, 0) | alter warning_count = if(alert_level = "ASA-4", 1, 0) | alter error_count = if(alert_level = "ASA-3", 1, 0) | alter critical_count = if(alert_level = "ASA-2", 1, 0) | alter alert_count = if(alert_level = "ASA-1", 1, 0) | alter Date = format_timestamp("%Y/%m/%d", _time) // Check for all messages | comp sum(info_count) as info_log_count, sum(debug_count) as debug_log_count, sum(notification_count) as notification_log_count, sum(warning_count) as warning_log_count, sum(error_count) as error_log_count, sum(critical_count) as critical_log_count, sum(alert_count) as alert_log_count by Date | sort asc Date | view graph type = line xaxis = Date yaxis = info_log_count, debug_log_count, notification_log_count, warning_count, error_log_count,critical_log_count,alert_log_count header = "All Logs" |
このクエリは、Cisco ASAデバイスからのデバッグおよび情報ロギングをグラフ化します(注意:デバッグおよび情報ログは手動での設定が必要です):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
dataset = cisco_asa_raw | alter alert_level = arrayindex(regextract(_raw_log, "\s%.*?(ASA\-[\d])\-[\d]{1,}\:"), 0) | alter alert_level_friendly = "" | alter alert_level_friendly = if((alert_level contains "ASA-1"), "Alert Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-2"), "Critical Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-3"), "Error Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-4"), "Warning Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-5"), "Notification Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-6"), "Informational Message", alert_level_friendly) | alter alert_level_friendly = if((alert_level contains "ASA-7"), "Debug Message", alert_level_friendly) | alter debug_count = if(alert_level = "ASA-7", 1, 0) | alter info_count = if(alert_level = "ASA-6", 1, 0) | alter notification_count = if(alert_level = "ASA-5", 1, 0) | alter warning_count = if(alert_level = "ASA-4", 1, 0) | alter error_count = if(alert_level = "ASA-3", 1, 0) | alter critical_count = if(alert_level = "ASA-2", 1, 0) | alter alert_count = if(alert_level = "ASA-1", 1, 0) | alter Date = format_timestamp("%Y/%m/%d", _time) // Focus only on the Informational and Debug messages | filter alert_level_friendly in ("Informational Message", "Debug Message") | comp sum(info_count) as info_log_count, sum(debug_count) as debug_log_count by Date | sort asc Date | view graph type = line xaxis = Date yaxis = info_log_count, debug_log_count header = "Info + Debug Logs" |