1. なぜ Office マクロは危険なのか
Microsoft Office マクロ(VBA)は、単なる「表計算の自動化機能」だけではありません。技術的には、ユーザー権限で任意のコードを実行できる仕組みであり、機能的にはユーザーが意図しない Windows のコマンドに実行や、インターネットとの通信のきっかけを作る事が可能であり、攻撃者にとっては実に魅力的な「実行ファイルと同等の侵入口」となります。特にランサムウェア攻撃では、マクロは長年にわたり最も成功率の高い初期侵入手段として悪用されてきました。
2. 実際の攻撃例に見る Office マクロの危険性
事例1:請求書・見積書を装ったマクロ攻撃
- 利用者に「請求書」「見積書」「支払通知」などを装った Excel ファイルがメールで届く
- ファイルを開くと 「正しく表示するにはコンテンツの有効化が必要です」と表示される
- 利用者がマクロを有効化すると、以下が 裏で自動実行 される
- PowerShell を起動
- Invoke-WebRequest などで外部サーバーからマルウェア本体をダウンロード
- マルウェアは、外部通信用のバックドアを常駐させ C&C サーバーと通信
👉 ユーザーは「Excelを開いただけ」のつもりでも、実際には不正プログラムを実行していることとなる
事例2:マクロ → PowerShell → ランサムウェア
より高度なケースでは、マクロ自体は非常に短く、
- 難読化された VBA コード
- 数行で PowerShell を呼び出すだけ
という構成になっています。
PowerShell 側で:
- Defender の一部機能を回避
- Windows に保存された資格情報を窃取
- ネットワーク内を探索
- 最終的にランサムウェアを展開
👉 マクロは「入口」にすぎず、本体は別の手段で実行される
事例3:Outlook マクロによる自動感染Outlook では、特定条件(件名・差出人など)を満たすメール受信時にユーザー操作なしで VBA を実行できる 構造の悪用
- メール受信をトリガにマクロ実行
- 添付ファイルの保存・展開
- 次のメールを自動送信(内部拡散)
👉 一度許可すると「開いていないのに感染」が成立する
3. なぜ「ユーザーの注意」では防げないのか
Office マクロ攻撃が厄介なのは、以下の理由によります。
- マクロは 正規機能 であり、ウイルスではない
- 業務上「有効化せざるを得ない」経験がある
- 表示される警告が分かりにくい
- 標的型メールでは内容が極めて自然
つまり、“「気をつけましょう」では防御にならない” というのが現実です。
4. 推奨される基本方針
このため、Office マクロに対しては以下の考え方が強く推奨されます。
マクロは危険なコード実行機能であり、業務上の必要性が明確な場合のみ、署名付きマクロを条件に許可制とし、原則として無効とする
なお、Office マクロ内で、コマンドラインインターフェースや PowerShell を起動したりすると、電子署名されたマクロであっても ASR ルールでブロックされる可能性があります。
5. 推奨設定
① インターネット由来ファイルのマクロを禁止する
メール添付や Web ダウンロードなど、外部から取得した Office ファイルに含まれるマクロは、実行を禁止します。
これにより、
- 標的型メール
- 不正ダウンロード
- ZIP 展開後のファイル
を起点とするマクロ攻撃を、ユーザー操作以前に遮断できます。
② マクロは既定で無効とする
Office の既定設定として、
- すべてのマクロを無効
- 通知付きでの有効化は許可しない
という構成を取ります。誤操作を想定し “「警告を見て判断させる」運用は行わない” ことが重要です。
③ 署名付きマクロのみ例外的に許可する
業務上どうしてもマクロが必要な場合に限り、以下を条件とします。
- 社内で管理された証明書で署名されたマクロのみ許可
- 未署名・外部作成マクロは実行不可
これにより、
- 誰が作成したか分からないマクロ
- 改ざんされたマクロ
の実行を防止できます。署名付きマクロの作成方法を参照してください。
④ マクロの「出口」を塞ぐ(重要)
仮にマクロが実行されても被害に至らないよう、OS 側(Defender / ASR 等)でブロックします。
- マクロからの PowerShell 起動
- 実行ファイル生成
- 子プロセス起動
👉 「万一動いても攻撃に発展しない」構成
⑤ Outlook マクロは原則禁止する
Outlook マクロは、
- 自動実行が可能
- メールという攻撃起点と直結
しているため、原則として使用を禁止します。
6. まとめ
Office マクロは、ユーザー操作を装って任意のコードを実行できる機能であり、ランサムウェアや標的型攻撃において初期侵入手段として多用されてきました。
このため、マクロは原則として無効とし、インターネット由来ファイルに含まれるマクロの実行を禁止する必要があります。業務上やむを得ず使用する場合に限り、管理された証明書で署名されたマクロのみを例外的に許可するしなければなりません。
併せて、マクロを起点とした不正なプロセス生成やコード実行をOS 側の防御機構である、ASR ルールの有効化によって防止する必要があります。
