「ゼロデイ（脆弱性）」の定義

# 背景とモチベーション
資料書きをする際にセキュリティ関連用語について正しい定義で使えているかな、、、と不安になる時がありまして。
そんな中でも、「ゼロデイ」は微妙に資料やサイトによって定義がぶれているような気がしていたのですが、今回裏とりをしないといけない都合があったので、少々調べました。

# 先に結論
- ソフトウェアについて、既知の脆弱性（セキュリティバグ）があり、かつそれに対応するためのアップデート(修正プログラム/パッチ)が提供されていない状態のこと。
- アップデートが公開された瞬間ゼロデイ状態ではなくなる。
  - システムの都合でアップデートを当てていない場合は含まない。
  - そういう状態はN-Dayと呼ぶ。
- ソフトウェアの開発事業者が気がついているかは関係ない。
  - 第三者が開発者に情報開示せずに、先に公に情報開示するケースがある。
- ワークアラウンドがあるかどうかは関係ない
  - あくまで、「アップデートが公開されるまでの状態」のこと。
- 攻撃手法が既知になっているかどうかも関係ない
  - 攻撃方法が既知になって攻撃されたら「ゼロデイ攻撃」になる、と。

というのが、今回調べてみた感じでの私の理解です。

# 「ゼロデイ」の定義の私の認識
大体上記の認識だったのですけど、資料やサイトによって記載がぶれていたり、別の意味に読める書き方が見られる時があるので、一回整理しておこうかなと思った次第です。
具体的には、上記のN-dayをゼロデイに含めるように読めてしまう書き方や、アップデートが出ていなくても緩和策が公開されたらゼロデイではないと読めてしまう書き方など。

# 世の中の定義
オーソリティと言えそうな定義を色々と調べてみました。

## そもそも誰が使い始めたの？
わかりませんでした。。

https://scan.netsecurity.ne.jp/article/2004/11/15/14188.html
Googleで時期指定して追いかけていってみると、日本語ベースだと2004年の上記の記事が一番古いな、、という感じです。マイクロソフト関連ですね。

https://docs.broadcom.com/doc/istr-04-march-en
英語ベースだともうちょっと遡れますが、2003年ころ。

。。一番最初に定義されたときの文言が一番正しかろうと思ったのですが、、この調査は無理でした。。

## マイクロソフト
https://docs.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/tvm-zero-day-vulnerabilities?view=o365-worldwide

「ゼロデイの脆弱性は、公式の更新プログラムやセキュリティ更新プログラムがリリースされていないソフトウェアの欠陥です。 ソフトウェア ベンダーは、この脆弱性を認識している場合と認識していない可能性があります。」

前半は私が思ってた定義と同じなのですが、後半に一瞬引っかかりました。
「ソフトウェア ベンダーは、この脆弱性を認識している場合と認識していない可能性があります。」
のところです。

「現在誰も気がついていない未知の潜在的な脆弱性」のことを言っているのか、、と思いましたが、そうではないですね。
おそらく、攻撃者やマナーのよろしくないセキュリティ関係者が、ベンダに内々で報告せずにいきなり脆弱性を公開してしまうケースがあるので、その場合のことを表現しているのかな、、と。

## トレンドマイクロ
https://www.trendmicro.com/vinfo/jp/threat-encyclopedia/web-attack/3145/zeroday-vulnerabilities-101

「すでに存在していながら、公には周知されていない脆弱性のことを「ゼロデイ脆弱性」と呼びます。」

https://www.trendmicro.com/vinfo/us/security/definition/zero-day-vulnerability

「A zero-day vulnerability is a vulnerability in a system or device that has been disclosed but is not yet patched.」
「Because they were discovered before security researchers and software developers became aware of them—and before they can issue a patch—zero-day vulnerabilities pose a higher risk to users for the following reasons:　（略）

日本語の方はゼロデイの定義を語るのが本題の文書ではないので、説明を省略し（すぎ、、）ているだけですかね。。
ベンダがゼロデイとして公に注意喚起して、アップデート以外のワークアラウンドを公開するというケースもありますし。

英語の方は、前半は認識通り。
後半は、マイクロソフトの定義にもあった「ベンダが認識ていない場合がある」のケースのリスクについてフォーカスして記載している、ということなのかなと。

## 総務省
https://www.soumu.go.jp/main_sosiki/joho_tsusin/security/basic/risk/11.html
「ゼロデイ攻撃とは、OSやソフトウェアに対する脆弱性が発見されたときに、メーカーが修正プログラムを配布するまでの間に、その脆弱性を利用して行われる攻撃です。脆弱性が公開されてから、メーカーが対応策を検討して修正プログラムを開発することも多いため、完全な対策は困難と言わざるを得ません。そのため、指摘された脆弱性の内容を確認し、危険となる行為を行わないなど、修正プログラムを適用するまでの間は十分な注意が必要です」

ゼロデイという状態ではなくて、ゼロデイ攻撃に対する記載なので少々ニュアンスが変わるのですが、「メーカが修正プログラムを配布するまでの間に」とありますので、上記の認識であっているかなと思います。
また、マイクロソフトの「ベンダが認識していない場合」については、説明文で「誰が脆弱性を発見したか」を明記しないので「ベンダもそれ以外もどっちも含む」という意味ととれますので、言っていることは同じで良いのかなと。

## IPA
https://www.ipa.go.jp/about/press/20220127.html

「ゼロデイ攻撃は、修正プログラムが提供される前の脆弱性を悪用した攻撃です。」
「ゼロデイ攻撃の場合、修正プログラムが提供された時点ですでに攻撃が行われているため、（略）」

意味としては上記と同じですね。

## N-Day
https://www.trendmicro.com/zh_hk/ciso/21/k/n-day-exploit-protection-strategies.html
「An N-day exploit is an exploited vulnerability that has a patch available. This differs from zero-day exploits, which are new and awaiting patches from the compromised vendor. 」

トレンドマイクロの記事で非常に良いものが。
patch(セキュリティアップデート/修正プログラム）が出ているのに当てない状態のことを「N-Day」と表現されています。
「アップデートが提供されているが、自システムに展開してない」という状態を明示的に定義しているわけです。

検索してみると、ゼロデイほどのヒット数はないのですが、ポロポロと当たる感じ。

# まとめ
調査件数が足りていない気はしますが、心が折れたのでこんなところで。

上記では記載を避けましたが、他の記事で「アップデートプログラムが提供される」と書かずに「対処方法が提供される」と書いてしまっている関係でワークアラウンドが見つかったらゼロデイではなくなると読めてしまうケースや、N-Dayをゼロデイの定義に含むように書いてしまっているケースがありました。
ある程度オーソリティと言えそうな情報をさらった感じとしては、皆、「アップデート（パッチ）が出るまでの間」という明瞭な記載になっているようでしたので、ゼロデイの言葉の定義場は上記のようなケースは含まない、と判断して良いかな、という結論に達しました。

「これが定義だ！！」という大本情報みたいなものが見つからなかたので、歯切れの悪い感はいなめませんが。

とりあえずこんなところで。