エクスプロイト&脆弱性
ZDI-CAN-25373: Windowsショートカットの未修正脆弱性を悪用するゼロデイ攻撃
トレンドマイクロのZero Day Initiative™(ZDI)は、ZDI-CAN-25373と識別されるWindowsの.lnkファイルの未修正の脆弱性が、国家背景の攻撃グループやサイバー犯罪組織によって以前から広範に悪用されていることを明らかにしました。この脆弱性を利用すると、隠れたコマンドの実行が可能になります。
- トレンドマイクロのZero Day Initiative™(ZDI)は、ZDI-CAN-25373を悪用する約1,000件の悪意ある.lnkファイルを確認しました。この脆弱性を利用することで、攻撃者は細工されたショートカットファイルを通じて被害者のマシン上で隠れた悪意あるコマンドを実行できます。
- 攻撃では、.lnkファイル内に隠されたコマンドライン引数を利用して悪意のあるペイロードを実行し、検出を困難にしています。ZDI-CAN-25373の悪用により、データ窃取やサイバースパイ活動といった重大なリスクにさらされる可能性があります。
- トレンドマイクロの調査によればこの脆弱性は既に2017年の時点で悪用されていたことを確認しています。北朝鮮、イラン、ロシア、中国の国家支援型APTグループによって悪用されており、北米、欧州、アジア、南米、オーストラリアの政府機関、金融、通信、軍事、エネルギー分野の組織が影響を受けています。
- ZDI-CAN-25373脆弱性は本記事執筆時点で未修正です。影響を受ける可能性のある組織は、セキュリティ対策を即座に実施し、不審な.lnkファイルに警戒するとともに、エンドポイントおよびネットワークの包括的な防御対策を整える必要があります。トレンドマイクロ製品では2024年10月および2025年1月にリリースされたルールやフィルタによってこの脆弱性を悪用した攻撃から保護されます。
Trend Zero Day Initiative™(ZDI) のスレットハンティングチームは、ZDI-CAN-25373が2017年以降、さまざまな攻撃キャンペーンで悪用されてきた事例を確認しました。分析の結果、北朝鮮、イラン、ロシア、中国の国家支援型グループ11組織が、この脆弱性をサイバースパイ活動やデータ窃取を目的とした攻撃に利用していたことが判明しました。
ZDI-CAN-25373を悪用するShell Link(.lnk)ファイルのサンプルを約1,000件発見しましたが、実際の攻撃試行回数はさらに多い可能性があります。この脆弱性に関する概念実証(PoC)をZDIのバグバウンティプログラムを通じてMicrosoftに提出しましたが、同社はセキュリティパッチによる修正を行わない判断を下しました。
ZDI-CAN-25373を悪用したスパイ活動とデータ窃取を行う国家支援型APTグループ
ZDI-CAN-25373の悪用を追跡する中で、多くの攻撃者やAPT(Advanced Persistent Threat)グループによるこの脆弱性の広範な悪用が確認されました。これらの脅威には、国家支援型グループと非国家支援型グループの両方が含まれています。多くのAPTグループは高度な攻撃手法を持ち、過去にもゼロデイ脆弱性を悪用してきた実績があります。

図1の元データはこちらで確認できます。
図1に示されているサンプルは、APTグループによるものであると高い確度で特定されています。ZDIのスレットハンティングチームは、さらに数百件の追加サンプルを確認しましたが、現時点では特定のAPTグループに帰属させる確証は得られていません。しかし、これらのサンプルも実際にZDI-CAN-25373を悪用していたことが確認されています。

図2は、ZDI-CAN-25373を攻撃チェーンの一部として悪用したAPTグループが背景とする国を示しています。これらのAPTグループには、国家支援型、国家と関連のあるグループ、サイバー犯罪組織が含まれています。図3では、これらの中から国家支援型APTグループのみを抽出して示しています。

ZDI-CAN-25373を悪用する国家支援型攻撃者のうち、ほぼ半数が北朝鮮に由来していることが報告されています。この傾向から、北朝鮮を背景とする脅威グループの間で技術やツールの共有、戦術の共用が行われていることが示唆されます。
ZDI-CAN-25373を悪用する攻撃キャンペーンとそれに関連する侵入手法を分析した結果、攻撃の約70%が主にスパイ活動や情報窃取を目的としていることが判明しました(図4)。一方で、20%以上の攻撃は金銭的な利益を目的としています。中には、スパイ活動を主な目的とする攻撃者が、金銭目的の攻撃を行うことで諜報活動の資金を調達しているケースも確認されています。


図5の元データはこちらで確認できます。
ZDI-CAN-25373の脆弱性を悪用した攻撃の全体像を分析した結果、特に以下の業界が標的とされていたことが判明しました。
- 政府機関
- 民間企業
- 金融機関(暗号資産関連を含む)
- シンクタンク(非政府組織〈NGO〉を含む)
- 通信業界
- 軍事・防衛
- エネルギー業界
これらの業界に属する組織は、特に攻撃のリスクが高いため、ZDI-CAN-25373に対するセキュリティ対策を直ちに実施し、不審な.lnkファイルに警戒する必要があります。また、ZDI-CAN-25373が侵入手法として使用されている可能性を考慮し、すでに侵害されていないか、または侵害の試みが行われていないかを調査することが推奨されます。
マルウェアペイロードの分析
ZDI-CAN-25373を悪用する.lnkファイルと関連する攻撃キャンペーンを追跡する中で、一部のマルウェアペイロードを回収し、トレンドマイクロの脅威テレメトリを通じて関連付けることができました。これにより、ZDI-CAN-25373を悪用する攻撃キャンペーンにおいて、多様なマルウェアペイロードやローダーが使用されていることが明らかになりました。

図6の元データはこちらで確認できます。
図6の「Malware-as-a-Service(MaaS)」に分類されたサンプルについては、具体的なマルウェアペイロードを回収することはできませんでしたが、観測された発信元ドメインではMaaSおよび一般的なマルウェアペイロードが配布されていることが確認されています。また、「PoC」は、回収された概念実証(PoC)サンプルを示しており、これらは攻撃チェーンの開発過程で使用された可能性が高いと考えられます。追跡を進める中で、Water Asena(Evil Corp)がZDI-CAN-25373を悪用し、Raspberry Robin攻撃キャンペーンの一環として攻撃を行っていたことが確認されました。この発見は、攻撃者が高度なマルウェアツールを活用し、攻撃を進化させている実態を示しています。
被害傾向
分析したサンプルの多くは、アメリカやカナダを含む北米から提出されたものでした。しかし、ZDI-CAN-25373を悪用するAPTグループの数が多いため、被害の範囲はそれにとどまらず、ヨーロッパ、アジア、南米、アフリカ、オーストラリアにも広がっています(図7)。

図7の元データはこちらで確認できます。
図8のマップ上に示されるように、ZDI-CAN-25373の悪用は北米、南米、ヨーロッパ、東アジア、オーストラリアを中心に広範囲に及んでいます。なお、この影響範囲はさらに広い可能性があり、図8に示されているのはZDIのスレットハンティングチームが回収できたサンプルに基づくものにすぎません。

図8の元データはこちらで確認できます。
技術的詳細
ZDI-CAN-25373は、Windowsがショートカット(.lnk)ファイルの内容をWindowsのUI上で表示する方法に関連する脆弱性です。この脆弱性を悪用することで、攻撃者は被害者に送付するための悪意のある.lnkファイルを作成できます。被害者がWindowsの標準UIを使用してこのファイルを確認しても、ファイル内に悪意のある内容が含まれていることを判別することはできません。以下のセクションで、この脆弱性の詳細について説明します。
MS-SHLLINK(.lnk)ファイルフォーマット
Windowsのショートカットファイル(Shell Linkファイルとも呼ばれる .lnkファイル)は、Windowsオペレーティングシステムがファイルやフォルダ、アプリケーションへのショートカットとして機能させるために使用するバイナリ形式のファイルです。このファイル形式は、.lnkファイルのTargetフィールドにコマンドライン引数を埋め込むことが可能であるため、攻撃者にとって魅力的な手段となっています。この特性を利用することで、被害者のマシン上でコードを実行することができます。本セクションでは、Windowsショートカット(MS-SHLLINK)のバイナリフォーマットの基本について説明し、ZDI-CAN-25373の悪用に関する理解を深めます。
ShellLinkHeader
すべての.lnkファイルは、ShellLinkHeader構造から始まります。この中には、すべての.lnkファイルに共通する2つの必須フィールドがあります(表1)。これらはHeaderSizeとLinkCLSIDであり、図9に示すように、これらの2つのフィールドを利用して.lnkファイルであるかどうかを判別することが可能です。


LinkFlags
LinkFlags構造は、HeaderSizeおよびLinkCLSIDの後に続きます。この構造には、.lnkファイル内に追加の構造が含まれているかどうかを示すフラグが格納されています。特に重要なのがHasArgumentsフラグです。このフラグが設定されている場合、.lnkファイルにはCOMMAND_LINE_ARGUMENTS構造が含まれることになります(図10)。.lnkバイナリフォーマットの一部として、追加のCOMMAND_LINE_ARGUMENTSを.lnkファイルのTargetに渡すことが可能です。悪意のある.lnkファイルでは、これを利用してcmd.exeやpowershell.exeなどのLOLbinというバイナリを介して悪意のあるペイロードをダウンロードおよび実行させることができます。これは、攻撃者が.lnkファイルを攻撃チェーンの一部として使用する際によく利用される手法であり、ZDI-CAN-25373の悪用においても確認されています。

LinkTargetIDList
この構造には.lnkファイルのターゲットが含まれています(図11)。この構造が使用される場合、LinkFlagsセクション内のHasLinkTargetIDListフラグが設定されます。

COMMAND_LINE_ARGUMENTS
LinksFlags構造内でHasArgumentsフラグが設定されている場合、COMMAND_LINE_ARGUMENTS構造が含まれます。この構造には、ショートカットが実行された際にターゲットに渡されるコマンドライン引数が格納されます(図12)。これは、.lnkファイルを利用した攻撃においてコード実行を行う際に頻繁に悪用されます。

ICON_LOCATION
攻撃者は、ICON_LOCATION構造を悪用して、.lnkファイルの表示アイコンを制御することがよくあります(図13)。

.lnkファイルを利用した攻撃キャンペーンでは、攻撃者がアイコンを変更し、被害者が誤ってショートカットを実行するよう誘導するケースが多く見られます。Windowsは.lnk拡張子の表示を常に抑制するため、攻撃者は「.pdf.lnk」などの偽装拡張子を使用し、さらにアイコンを変更してユーザを騙す手法を用いることが一般的です。通常、.lnkファイルのアイコンには左下に矢印が表示されますが、視覚的な違いを最小限にするために、これを隠す工夫が施される場合もあります。
脆弱性の詳細
ZDI-CAN-25373を悪用するために、攻撃者はCOMMAND_LINE_ARGUMENTS構造内に空白文字を巧妙に埋め込んだ.lnkファイルを作成しました(表2)。

このような不正なパディングを含む.lnkファイルをユーザが確認した場合、Windowsのユーザインターフェースでは、指定された領域内に悪意のある引数を正しく表示することができません(図14)。その結果、.lnkファイルによって実行されるコマンドライン引数が完全にユーザの視界から隠されることになります。

ZDI-CAN-25373を悪用するサンプルのTargetフィールドや以下の構造の内容を確認するには、サードパーティのツールが必要になります。
COMMAND_LINE_ARGUMENTS

サンプルをバイナリエディタで確認すると、COMMAND_LINE_ARGUMENTS構造内に大量のスペース(\x20)文字が含まれていることがわかります(図16)。

分析を進める中で、攻撃者がCOMMAND_LINE_ARGUMENTS構造内にラインフィード(\x0A)やキャリッジリターン(\x0D)を使用してパディングしているケースも確認されました。この場合、.lnkファイルのプロパティを確認すると、Targetフィールドには単一の選択可能な文字しか表示されません(図17)。

また、北朝鮮の攻撃者であるEarth Manticore(APT37)やEarth Imp(Konni)が、極めて大きな.lnkファイルを使用し、大量の空白や不要なデータを挿入して検出を回避していることが確認されました。Earth Impの使用した.lnkファイルの中央値サイズは3.32MB、最大サイズは70.1MBに達していました。一方、Earth Manticoreの.lnkファイルの中央値サイズは33.33MB、最大サイズは55.16MBに及んでいます。
ZDI-CAN-25373は、CWE-451(ユーザインターフェースにおける重要情報の誤表示)に分類される脆弱性の一例です。これは、WindowsのUIがユーザに対して適切な情報を表示できないことを意味します。以前に発見された類似の脆弱性と同様に、セキュリティ上重要な情報を適切に提示できないUIの設計ミスに起因するものです。ZDI-CAN-25373を悪用することで、攻撃者はユーザに対して実行されるコマンドを隠し、ファイルのリスク評価を困難にすることができます。
まとめ
国家を背景とするAPT(Advanced Persistent Threat)グループや高度な技術を持つサイバー犯罪者による脅威は、政府機関、重要インフラ、民間企業が管理するデータの機密性、完全性、可用性に対して重大なリスクをもたらしています。ZDI-CAN-25373を悪用する11の国家支援型APTグループの大半はこれまでにもゼロデイ脆弱性を悪用した攻撃を行ってきた記録があります。ソフトウェアベンダーに知られておらず、対応するセキュリティパッチも存在しないゼロデイ脆弱性は、政府機関や企業が防ぐ手段がない脆弱な状態のまま攻撃を受ける可能性が高まります。
地政学的な緊張や紛争が高まるにつれ、攻撃者の攻撃手法はますます高度化し、ゼロデイ脆弱性の利用が増加すると予測されます。国家やサイバー犯罪者が競争上の優位性を獲得するために、ゼロデイ脆弱性を積極的に活用する傾向は今後も続くと考えられます。このような状況の中で、重要な資産や業界を効果的に保護するためには、包括的なセキュリティ対策の実施が不可欠です。
この脆弱性は、ZDIのバグバウンティプログラムを通じてMicrosoftに報告されましたが、Microsoftはこれを低リスクと判断し、直ちにパッチを適用する予定はないとしています。ソフトウェアの安全性を向上させ、ゼロデイ攻撃からユーザを守るため、ZDIはセキュリティ研究者やベンダーと協力し、APTグループが攻撃に利用する前に脆弱性を修正し、適切に開示する活動を行っています。また、ZDIのスレットハンティングチームは、ゼロデイ攻撃を事前に特定し、業界全体の安全を確保するために積極的な調査を続けています。
Trend Vision One™によるプロアクティブなセキュリティ
APTグループによる攻撃から組織を守るためには、Trend Vision One™を活用することが有効です。これは、サイバーリスクの管理、セキュリティオペレーション、強力な多層防御を一元化する、唯一のAI駆動型エンタープライズサイバーセキュリティプラットフォームです。この包括的なアプローチにより、脅威を予測し、未然に防ぐことが可能となり、組織全体のデジタル環境におけるプロアクティブなセキュリティ対策を加速させます。
Trend Vision Oneは、長年にわたるサイバーセキュリティの専門知識と、業界初のプロアクティブなサイバーセキュリティAIであるTrend Cybertronを活用し、確かな成果を提供します。具体的には、ランサムウェアリスクの92%削減、検出時間の99%短縮といった実績があります。セキュリティリーダーは、自社のセキュリティ態勢を評価し、継続的な改善をステークホルダーに示すことが可能になります。Trend Vision Oneを導入することで、セキュリティの盲点を排除し、最も重要な課題に集中し、セキュリティをイノベーションの戦略的パートナーへと昇華させることができます。
不審な侵入や異常な動作が確認された場合、組織はシステムがすでに侵害されている可能性を前提に行動し、影響を受けたデータやツールチェーンを直ちに隔離することが重要です。広い視野を持ち、迅速に対応することで、侵害を封じ込め、残りのシステムを保護することが可能となります。特に、堅牢なエンドポイントおよびネットワークセキュリティソリューションの導入が不可欠です。
このプラットフォームのセキュリティオペレーション機能は、ネイティブセンサーとサードパーティのテレメトリデータを活用した比類なき可視性により、攻撃者の行動を阻止します。XDR、SIEM、SOARのパワーを活用することで、脅威を検出し、調査・対応をプロアクティブに実施できます。攻撃者に、もはや隠れる場所はありません。
- 44844 - ZDI-CAN-25373: Zero Day Initiative 脆弱性(Microsoft Windows)
Trend Vision One™ – エンドポイントセキュリティ、Trend Micro™ Deep Security™、Trend Vision One Network Sensor、Trend Micro Deep Discovery Inspector(DDI)
- 5351 - ZDI-CAN-25373 MICROSOFT WINDOWS ZERO DAY VULNERABILITY - HTTP(RESPONSE)
- 1012182 - Microsoft Windows Zero Day Vulnerability Over HTTP (ZDI-CAN-25373)
- 1012183 - Microsoft Windows Zero Day Vulnerability Over SMB (ZDI-CAN-25373)
その他のTrendのルールとフィルタについては、こちらで確認できます。
Trend Vision Oneのスレットインテリジェンス
進化する脅威に先んじるために、Trend Vision Oneのユーザは、さまざまな「Intelligence Report」や「Threat Insights」にアクセスできます。Threat Insightsは、サイバー脅威が発生する前にその動向を把握し、攻撃者やその悪意ある活動、攻撃手法に関する包括的な情報を提供することで、新たな脅威への備えを可能にします。このインテリジェンスを活用することで、環境を保護し、リスクを軽減し、効果的に脅威へ対応するためのプロアクティブな対策を講じることができます。
Trend Vision Oneのアプリ「Threat Insights」
攻撃者: Water Glashtyn, Earth Iktomi, Water Poukai, Water Cetus, Earth Balayang, Fire Tengu, Earth Imp, Water Asena, Earth Akurra, Earth GelertEarth Iktomi, Water Poukai, Water Cetus, Earth Balayang, Fire Tengu, Earth Imp, Water Asena, Earth Akurra, Earth Anansi, Earth Gelert, Earth Vetala, Earth Kapre, Earth Preta, Earth Tengshe, Earth Lusca
Trend Vision Oneのハンティングクエリ
Trend Vision One Search アプリ
Trend Vision One のお客様は、Searchアプリを使って、この機能で紹介されている悪意のあるインジケーターを自社環境のデータと照合したり、調査に利用したりすることができます。
LNKファイルからのcmd.exeまたはpowershell.exeの不審な実行を検出
eventSubId:2 AND (processFilePath:"\cmd.exe" OR processFilePath:"\powershell.exe") AND parentFilePath:"*.lnk"
「Threat Insights」のライセンスお持ちのVision Oneのお客様は、さらに多くのハンティングクエリをご利用いただけます。
YARAスレットハンティングルール
このYARAルールを使用して、ZDI-CAN-25373を悪用するファイルを検出してください。
rule ZTH_LNK_EXPLOIT_A { meta: author = "Peter Girnus" description = "This YARA file detects padded LNK files designed to exploit ZDI-CAN-25373." reference = "<LINK_TO_BLOG>" target_entity = "file" strings: magic=4C00000001140200magic=4C00000001140200spoof_a = {20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00} spoofb=0900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900spoofb=0900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900090009000900spoof_c = {0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00 0A 00} spoofd=0D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D00spoofd=0D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D00spoof_e = {11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00 11 00} spooff=1200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200spooff=1200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200120012001200spoof_g = {13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00 13 00} $spoof_h = {0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00 0D 00 0A 00} condition: magic at 0x00 and (spoof_a or $spoof_b or $spoof_c or $spoof_d or $spoof_e or $spoof_f or $spoof_g or $spoof_h) }
侵入の痕跡(IoC:Indicators of Compromise)
すべてのIOCリストはこちらのページでご確認いただけます。
参考記事:
ZDI-CAN-25373: Windows Shortcut Exploit Abused as Zero-Day in Widespread APT Campaigns
By: Peter Girnus, Aliakbar Zahravi
翻訳:与那城 務(Platform Marketing, Trend Micro™ Research)