An independent observatory
Cybersecurity is almost impossible to measure.We are trying anyway.
Zero Day Clock is a public scoreboard for vulnerability management and exploitation. It gathers the telemetry that already exists, keeps only the part of it that is reliable, and publishes the current state of play across cybersecurity domains in a form that a journalist, a regulator or a board can read and then go and check for themselves.
Where this began
A conference in San Francisco, early 2026
The project started at the first Unprompted conference in San Francisco in early 2026, where several AI labs described what they believed to be the first credible signals of AI capability being applied to cyber offence. The room could not agree on how large the effect was, or even on whether it had properly begun. What became obvious across those two days was something rather different, which is that nobody in the room had an instrument capable of settling the question either way.
Closing that gap is what this project is for. It is deliberately not just a project about AI. An instrument built for one narrative tends to measure that narrative and very little else. This one is built to measure pressure across cybersecurity domains over a long period, whatever turns out to be driving it, and to still be worth trusting in ten years when the question everybody is asking has changed.
What we are for
A neutral instrument, built for the long term
Neutral
No vendor, no product and no thesis that needs protecting. Every number is reproducible by a stranger from public sources and the published code.
Independent
Funded by nobody who appears in the data. Where a source is weak we say so on the chart itself rather than in a footnote nobody reads.
Long term
Built as an instrument rather than as a report. Methods are versioned, so a chart published three years ago can still be rebuilt exactly as it was.
The long term mission is public awareness. Cybersecurity today is discussed either in language that only practitioners can parse, or in headlines that survive no scrutiny at all. Sitting between those two is an audience of boards, regulators, journalists and the people who fund the work, all of whom would act on a clear picture if a clear picture existed. Making the current state legible, and reinforcing the call to action in good cyber practice, is the point of the whole exercise.
The hard part was never the charting. It is that the things which matter most, meaning exposure, risk, and how much of either is genuinely out there, are exactly the things that nobody can measure directly. Holding to an academic standard of evidence while remaining readable by a non specialist pulls in opposite directions on almost every decision we make. Where the two conflict we would rather publish a smaller number we can defend than a larger one that is easier to quote.
Why this is hard
The life of a vulnerability
Everything a public observatory can see happens in the lower half of this picture. Log4Shell is the example because every one of its dates is settled and none of them will ever change.
- 24 NovReported privatelyNo record anywhere
- 1 DecExploited in the wildNo record anywhereEnd of the period nothing could observe
- 9 DecDisclosed publiclyCVE Program, NVD
- 10 DecPatched and listedKEV catalogues, Vendor advisory
- 11 DecInternet wide scanningHoneypot sensors
- 17 DecTwo more identifiersCVE Program
Honest boundaries
What we can measure, and what we cannot
The second list is the more important of the two, and a great many vulnerability statistics are quietly built on top of it.
We can measure
What was filed, and when it was filed
Counts of records entering the public system by month, by vendor and by technology domain. If your remediation queue grew, this will show it growing.
What a KEV catalogue listed, and when
The date each KEV catalogue first listed a vulnerability as exploited, and how far the four catalogues disagree with one another about it.
What a sensor network actually saw
Exploitation attempts against honeypots, which are real connections that were counted, against services exposed to the internet.
How much the sources agree
The overlap between KEV catalogues, and how much of the published picture rests on a single observer rather than several.
Change against the same period a year earlier
A ratio that compares like with like, and that survives a KEV catalogue widening its coverage partway through the series.
We cannot
How much vulnerability exists in the world
We only ever see what somebody chose to write down. A rise can mean more flaws, more researchers looking, or one vendor changing its filing policy, and in this data those three look identical.
Whether anybody was actually compromised
A honeypot sighting means somebody aimed an exploit at a sensor. It is not a breach, and we never promote it into one.
When exploitation genuinely began
Only when somebody first recorded it. Log4Shell was being exploited eight days before any public record of it existed at all.
The risk to your own organisation
Nothing here knows what you run, how it is exposed, or what an incident would cost you. This is a population level instrument and not a substitute for knowing your own estate.
Whether a decline is good news
A falling line can mean a quieter world or a quieter sensor, and the two are not distinguishable from inside the dataset. Absence of data is not data.
Printed wherever the matching metric appears
For some vulnerabilities, the first publicly documented evidence of exploitation occurs months or years after CVE publication. This date represents observed confirmation—not necessarily the true start of exploitation—and recent cohorts are right-censored.
CVE IDs are assigned by CVE Numbering Authorities, not by NVD. CVE reservation-to-publication can take days or weeks, while NVD generally ingests a CVE shortly after public CVE publication. Neither timestamp reliably measures when the vulnerability first became known.
A trap worth naming
More CVEs does not mean more vulnerability
Two parts of this system have grown at completely different rates, and mixing them up produces most of the bad statistics in this field.
Over the past several years the CVE Program has deliberately widened who is allowed to issue an identifier. The number of CNAs, meaning the organisations authorised to assign CVE records, has grown substantially, and many vendors now issue records for their own products as a matter of routine. That democratisation was a genuinely good thing. It brought a great deal of previously invisible activity into public view, and it means many more flaws are now written down rather than fixed quietly.
It also means that the count of published CVE records went up sharply for reasons that have nothing to do with software becoming more dangerous. More people writing things down produces more records. One vendor becoming a CNA and then filing a record for every backported fix can move a yearly total on its own, and that has already happened more than once.
Nothing comparable happened to the KEV catalogues. There was no equivalent widening of who gets to say that something is being exploited, and the criteria for listing did not loosen in step. A KEV catalogue entry still requires somebody to be reasonably certain that real exploitation is happening, and in practice it arrives once the evidence has become difficult to argue with. So the two series are not comparable in the way that they look: one has grown partly because visibility improved, and the other has stayed a relatively narrow and conservative signal.
This is why we never divide one by the other to produce a percentage of vulnerabilities that are exploited. That ratio would fall every time the CVE Program succeeded at bringing more activity into the open, which would be an improvement in transparency being reported as an improvement in safety.
Provenance
Where every number comes from
These are the nine public feeds behind everything on this site. Each one is listed with what it is, the job it does here and the terms it comes under, so that you can go and check it yourself.
| Source | What it is | Role here | Terms |
|---|---|---|---|
| CISA KEV catalogue | The United States federal Known Exploited Vulnerabilities catalogue | Exploitation listing | US Gov, public domain |
| EUVD KEV catalogue | The European vulnerability database operated by ENISA | Exploitation listing | Open |
| CIRCL KEV catalogue | The CIRCL and GCVE exploited vulnerability feed | Exploitation listing, and an issuer in its own right | Open, mirroring not permitted |
| VulnCheck KEV catalogue | A community KEV catalogue that is broader than the CISA one | Exploitation listing | Free with an API key |
| Shadowserver | A global honeypot sensor network | Exploitation attempts that were actually observed | By arrangement |
| MSRC | The Microsoft Security Response Center advisory feed | Vendor statements about exploitation, and fix dates | Public |
| CVE Program | The CVE record itself, issued by a CNA | Identity, reservation dates and publication dates | CC0 |
| NVD | The National Vulnerability Database run by NIST | Severity scores, product data and the analysis layer | US Gov, public domain |
| EPSS | The Exploit Prediction Scoring System from FIRST.org | A forecast, and never treated as evidence | CC BY 4.0 |
Four of those are KEV catalogues and they are deliberately never merged into a single figure. Where they disagree with each other, the disagreement is itself the finding. A sensor network is also not a KEV catalogue, and the distinction matters: Shadowserver publishes no KEV catalogue at all, and its honeypot data is kept in a separate pipeline so that a probe against a sensor can never be counted as though it were a KEV catalogue listing.
Use it
Everything here is free to cite
There is no paywall, no login and no permission needed. If you are going to quote a number we would much rather you quoted it correctly than not at all.
Cite any chart
Every chart carries its source line, its observation window and its censoring date on its face, so that a screenshot stays honest once it has travelled away from this site.
Download the data
The derived tables behind every chart are published as CSV, with a manifest naming the censoring date and the method version that produced them.
Read the method
Each metric has a written method and a version number. Changing a method creates a new version rather than editing the old one, so the history stays reconstructible.
Check the code
Ingestion, transforms and statistics are all open to review. If a number cannot be reproduced then it should not have shipped, and we would like to know when one does.
If you are writing about a figure and you are not certain what it counts, please ask before you publish. The offer is genuine, and it is a good deal faster than issuing a correction afterwards.
Questions
The ones worth answering properly
Including the two we are asked most often, and the metric that we refuse to publish.
▸Why do you not publish a time to exploitation metric?
Because it fails in three separate ways, and each of them flattens the line for reasons that have nothing whatever to do with attacker behaviour.
First, and most importantly, it ignores aging. The metric compares years that have had wildly different amounts of time in which to accumulate evidence. A vulnerability published six years ago has had six years in which somebody might notice it being exploited, whereas one published last quarter has had a few weeks. Recent years therefore look artificially fast and older years look artificially slow, and a large part of any trend you draw through them is simply the passage of time rather than a change in the world.
Second, it saturates. Time to exploitation is floored at zero. Once a large share of exploitation is landing on the day of publication, the metric has nowhere left to go and cannot represent any further acceleration. A vulnerability exploited quietly for months before anybody knew it existed and one exploited on the morning of disclosure both record the same value, which is to say the metric stops being able to tell apart the two situations that matter most.
Third, the next real change would move both ends at once, and an average cannot show that. As the cost of finding and weaponising a vulnerability falls, we would expect to see more exploitation arriving at or before disclosure, and at the same time more exploitation of the long tail of older vulnerabilities that was previously protected by nothing more than attacker labour cost. That tail is already where a great deal of the damage sits. Mass moving toward zero and a tail growing fatter offset one another inside a mean, so the number could sit perfectly still while both halves of the distribution moved.
We are not claiming that this shift has already happened. We are saying that a time to exploitation metric could not tell you whether it had, and that on its own is reason enough to stop using it.
▸Why is a KEV catalogue not enough on its own?
A KEV catalogue entry is a decision somebody made, not a measurement somebody took. The CISA KEV catalogue exists in order to tell United States federal agencies what to patch, and it is very good at that job. It is a remediation directive with a legal deadline attached to it, which makes it government shaped in ways that matter a great deal if you read it as a picture of the world instead.
It sets severity aside deliberately, because the purpose is the last mile of getting something patched rather than how badly it scores. An entry also tends to appear only once there is already enough public evidence and pressure to justify adding one. A KEV catalogue is therefore closer to a last warning that something is being heavily exploited than to an early signal that it might be. It is a useful and honest instrument, and it is a biased one, and both of those things are true at the same time.
That is why this site reads four KEV catalogues rather than one, keeps them separate instead of merging them into a single number, and measures how much they disagree. Where a chart here says KEV it means all four unless it states otherwise, which is roughly three times the population of the CISA KEV catalogue on its own.
▸Do you count proof of concept exploit code?
No, and we think conflating the two is one of the easiest ways to inflate a vulnerability dataset without anybody noticing. Exploit code existing is a statement about what the world knows. Exploitation is a statement about what somebody actually did. They are different claims that deserve different standards of evidence.
This project counts two things only: listings in a KEV catalogue, and exploitation attempts observed by honeypot sensor networks. We do not track proof of concept repositories, exploit marketplaces or published exploit kits, and none of that material contaminates any figure on this site. If a chart here says a vulnerability was exploited, it means a KEV catalogue listed it as such or a sensor recorded somebody attempting it.
▸Why do the charts compare against the same period a year earlier?
Because the denominator underneath is not stable. KEV catalogues widen their coverage, sensors come and go, and a rate computed across several years mostly ends up tracking how hard somebody was looking. Dividing a window by the same window twelve months earlier compares like with like, because both halves are subject to the same seasonal shape and a source that was present in both periods cancels itself out.
It is a deliberately unclever statistic. There is one division in it, with nothing fitted and nothing predicted. A better calibrated estimator would be blind to precisely the structural breaks that we most need to be able to see.
▸Why does a number here differ from one I have seen elsewhere?
Usually because the two figures are counting different things. The word exploited can mean that a KEV catalogue listed it, that a vendor said so, that a sensor observed an attempt, or that exploit code exists somewhere. Those are four different claims with four different standards of evidence behind them, and this site keeps them apart on purpose rather than adding them together.
Every chart states its observation window, its censoring date and the version of the method that produced it. If a figure cannot be reproduced from the published data and the published code then you should treat it as wrong, and we would be glad to hear about it.
▸Why does the most recent end of a chart look incomplete?
Because it genuinely is incomplete, and saying so is more useful than quietly hiding it. A vulnerability published last month has had a month in which somebody might observe it, whereas one published in 2019 has had years. Recent periods are right censored, so charts here mark incomplete periods explicitly rather than letting a shortage of follow up time read as though it were a decline.
Get involved
Tell us where this is wrong, or what you wish you could see
The measurement problems here are genuinely unsolved, and the project improves fastest when somebody outside it disagrees in detail. Requests for things that do not exist yet are just as useful as corrections to what does.
Researchers
Method critique, better estimators, or a coverage correction that actually works. Academic proposals and co-authored papers are very welcome.
Practitioners
Tell us which chart answered a question you actually had, and which one you had to explain to your board twice before it landed.
Data holders
If you hold telemetry that could widen the picture, particularly beyond internet facing services, then we would like to talk to you.
Ideas, corrections, collaboration, a chart that misled you, or a question you wish this site could answer and currently cannot. Especially welcome is a reason that a metric here is wrong, because several of these charts exist in their present form only because somebody took the trouble to say so.
Roadmap: request a feature or provide feedbackThe roadmap is the faster route for anything concrete. It shows what has already been asked for, it lets you vote on what matters most to you, and it takes the requirement without asking for your name.
Contact
[email protected]