ゼロデイ攻撃は、修正版が提供される前などに、ソフトウェアの弱点を悪用する攻撃です。「新しい問題が発表されたこと」と「修正の準備が整う前に攻撃されたこと」は、分けて考える必要があります。
昨日まで普通に使っていたアプリに、突然「ゼロデイ」という言葉が付くと、不安になるかもしれません。何が新しいのかを、問題の公表、修正版、実際の悪用の三つに分けると、発表の意味を読み取りやすくなります。
ゼロデイ攻撃とは、修正版を待つ間などに起きる攻撃
ソフトウェアにある、安全上の弱点を脆弱性と呼びます。開発元が問題を直したプログラムは「修正版」「修正プログラム」「パッチ」などと呼ばれます。
警察庁は、メーカーが修正プログラムを配布するまでの間に、その弱点を利用して行う攻撃をゼロデイ攻撃と説明しています。警察庁の基本的なセキュリティ対策
修正版が出ていれば、対象の環境へ適用する対策を取れます。しかし、それがまだない段階では、修正版へ入れ替えるという方法を選べません。この時間差が、ゼロデイを理解するうえで大切です。
ゼロデイは「発見したその日だけ」という意味ではない
「ゼロ日」という名前でも、攻撃できる期間が一日未満に限られるわけではありません。問題の発見、開発元への連絡、公表、修正版の提供が、すべて同じ日に行われるとは限らないためです。
また、資料によっては、これまで知られていなかった弱点を悪用する点に重きを置きます。NISTの用語集も、そのように定義しています。NISTのzero-day attackの定義
呼び方だけで状況を決めず、いつ問題が知られ、いつ修正版が出て、いつの攻撃が確認されたかを見ることが重要です。開発元が問題を把握していても、修正版の提供前に攻撃される場合があります。
ゼロデイ脆弱性とゼロデイ攻撃は同じ?
「脆弱性」は弱点そのもの、「攻撃」はその弱点を悪用する行為です。弱点が見つかったという発表だけで、実際に攻撃が起きたと決めることはできません。
ニュースで「悪用を確認」「攻撃を観測」と書かれているか、それとも「悪用される可能性がある」と書かれているかも区別して読みます。後者だけなら、その文章は実際の被害を確認したとは言っていません。
ゼロデイと修正済みの脆弱性を狙う攻撃の違い
次の図は、順番を理解するための架空の例です。実際の事件の日付や、修正にかかる日数を示すものではありません。
この時点では修正版を入手できない
更新による対策を取れるようになる
ゼロデイ攻撃を理解するための例。発見や公表のタイミング、修正までの期間は事例によって異なります。
使っている環境には、まだ適用されていない
直せる弱点でも、その環境には残っている
修正版が出ることと、使っている環境で対策が完了することは別です。図の順番は架空の例です。
上の例では、攻撃が起きた時点で修正版がありません。下の例では、修正版はすでに出ていますが、使っている環境への適用が済んでいません。
修正版の公開後に、既知の弱点を狙う攻撃は「Nデイ攻撃」などと呼ばれることがあります。大切なのは用語よりも、修正版が存在するかと、自分の環境に適用されたかは別だということです。
「既知」なら安全、という意味でもない
知られている弱点でも、更新されていない環境では問題が残ります。ゼロデイという言葉が付かないから、対応の優先度が低いとは限りません。
逆に、今は修正版が出ている事件でも、調査の結果、提供前から悪用されていたと分かる場合があります。ニュースを読んだ日と、攻撃が起きた日を混同しないようにします。
新しいCVE番号だけでは、ゼロデイと判断できない
CVEは、脆弱性を区別して情報を共有するための識別番号です。番号が発表されたというだけでは、修正版の有無や、実際に攻撃されたかまでは分かりません。
CVE番号と、深刻さの評価であるCVSSの詳しい違いは、CVEとCVSSの違いで説明しています。本稿で押さえたいのは、番号、深刻さ、攻撃の有無を、それぞれ別の情報として読むことです。
ゼロデイ対策で修正版以外に確認する公式案内
修正版がまだない場合でも、何もできないとは限りません。提供元が、問題に関わる機能の一時停止や、接続範囲の制限などを案内することがあります。このように、原因を直接直す以外の方法で影響を避けるものを「回避策」「ワークアラウンド」と呼びます。
JVNという脆弱性対策情報のサイトも、製品とバージョン、開発元の対策に加え、回避策を掲載する場合があると説明しています。JVNに掲載される情報
公式発表では、三つの情報を別々に読む
| 確認すること | 読み取れること | それだけでは決まらないこと |
|---|---|---|
| 公表日・更新日と対象製品 | いつの案内で、何が対象か | 最初の攻撃がいつ起きたか |
| 修正版の有無と対象の版 | 更新による対策を取れるか | 自分の環境で更新が完了したか |
| 悪用の確認状況 | 実際の攻撃が報告されているか | 自分が被害を受けたか |
一つのニュースを読むとき、この三つに印を付けるつもりで探してみてください。分からない項目は、分からないまま残してかまいません。見出しから補って断定するより、続報で確かめるほうが正確です。
回避策は、対象の機種や版、使っている機能に合うものを選ぶ必要があります。別の製品向けの設定を流用すると、使えなくなる機能が増えたり、別の問題を作ったりするおそれがあります。管理されている職場の端末なら、担当者の案内を確認します。
修正版が出たら、回避策の扱いも見直す
修正版が出た後は、提供元の案内に従って更新します。回避策をいつ戻すか、追加の設定が必要かは、同じ案内や続報で確認します。問題が直ったことと、過去の不正な操作による影響が消えることも別です。
個別の発表の読み方として、PHPの脆弱性と修正版も参考になります。ただし、その記事にある問題を、すべてゼロデイ攻撃だったと位置付けるものではありません。
ゼロデイのニュースで確かめたいのは、怖い名前の強さではなく、今使える対策が何か、自分の環境で誰が実施するかです。問題の公表と修正と悪用を分けることで、必要な対応を見失いにくくなります。




