{"id":49109,"date":"2026-09-21T11:06:21","date_gmt":"2026-09-21T05:36:21","guid":{"rendered":"https:\/\/www.getastra.com\/blog\/?p=49109"},"modified":"2026-09-21T12:18:17","modified_gmt":"2026-09-21T06:48:17","slug":"cve-coverage-vanity-metric","status":"publish","type":"post","link":"https:\/\/www.getastra.com\/blog\/penetration-testing\/cve-coverage-vanity-metric\/","title":{"rendered":"Can Autonomous Pentesting Rescue CVE Coverage From Vanity Metric Hell?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The security industry killed CVE coverage as a credible metric, and it deserved to die. Vendors inflated the numbers for years in the name of depth, and nobody in the room had an incentive to ask whether they reflected real validated risk or just a longer signature list. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So &#8220;CVE coverage is a vanity metric&#8221; became earned consensus. The question I keep coming back to is whether the autonomous pentesting era makes that consensus outdated.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The playbook was simple: inflate the CVE count and market it as more depth without having any validation mechanism. The attack surface even did the vendors a massive favor as usage of third-party supply chain libraries exploded. More libraries meant more published CVEs, which meant the count inflated itself organically on top of the padding vendors were already doing. I find it staggering that an industry built on trust ran this playbook in broad daylight and nobody flinched.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As applications grew more complex and dependency trees deeper, this CVE inflation compounded into false positives and made CVE coverage lose every shred of credibility it once carried as a yardstick.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The root problem was always context. Until very recently, acquiring context and applying reasoning during a pentest was something only a human tester could do. Scanners never had that capability, so every scanner was engineered to flag the smallest signal, over-report by design, and essentially mark everything as a finding while the customer sorted through the wreckage. Missing a live CVE is a terrible outcome for vendors because it validates the argument that manual pentesting is superior.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So the industry chose alert fatigue over accountability, and then had the audacity to call it a best practice. I have sat in rooms where vendors defended this logic with a straight face, and I have watched CISOs accept it because no alternative existed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We solved this at Astra years ago with vetted scanning, where every finding goes through a human validation layer before it reaches the customer. It works, but it costs real money and real time, and most other vendors are simply unwilling to absorb that cost because it eats into their margins. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So they left the noise in, forcing customers into the same ugly choice: swallow false positives or narrow coverage and risk missing something real. Customers pick the first option every single time because the second one leaves them less safe.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Autonomous pentesting has the capability to force the industry back into integrity, and I think it will.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CVE-2025-55315 is a request smuggling flaw in ASP.NET Core&#8217;s Kestrel server, rated 9.9. That score is Microsoft&#8217;s worst case across every application ever built on Kestrel, and what it actually costs you depends entirely on how your app was written and what sits in front of it. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"884\" height=\"290\" src=\"\/cdn-cgi\/image\/quality=80,format=auto,onerror=redirect,metadata=none\/https:\/\/cdn-blog.getastra.com\/2026\/09\/56f7463e-image.png\" alt=\"\" class=\"wp-image-49113\" style=\"aspect-ratio:3.0439024390243903;width:624px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A scanner reads the runtime version, matches the CVE, and stamps a 9.9 critical on every host it touches. An autonomous engine checks reachability and exploitability first, works toward a functioning PoC, and hands the result to validator agents before anything touches your report.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That validation step is where the economics of the entire category shift. False positives die before they reach the dashboard, which means security teams stop burning hours triaging noise and start working on exposures that are actually real. The cost of clearing false positives drops, the signal-to-noise ratio climbs, and CVE coverage becomes a number worth trusting again. The customers who always wanted a large CVE pool as a safety blanket finally get what they wanted, because a validated count can be both big and honest.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I am seeing real movement here. Every serious player entering this market now ships a validator agent that sits between raw findings and the final report. The implementations vary, and the variety matters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Symbolic execution<\/strong>, checking whether any real input can reach the vulnerable function along a feasible path<\/li>\n\n\n\n<li><strong>Call-graph analysis<\/strong>, tracing the route from an exposed endpoint to confirm the vulnerable function appears on the graph at all<\/li>\n\n\n\n<li><strong>Live payload execution<\/strong> inside sandboxed replicas, confirming exploitability under real runtime conditions<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Once verification is the baseline, CVE coverage starts working again, because the number finally reflects work that was done.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But this movement is fragile. CVE coverage will slide right back into vanity territory if validator agents rubber-stamp findings or vendors quietly count version-string matches as validated exploits. A fake validated count borrows credibility it never earned. I would rather the metric stay dead than come back dishonestly. And I am watching some vendors get dangerously close to exactly that.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We built&nbsp; Astra&#8217;s pipeline around that exact risk, and I say &#8220;we&#8221; deliberately because this was an engineering bet that required the entire team to commit to slower, harder, more expensive validation when the rest of the market was optimizing for speed and volume.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our autonomous pentesting validates reachability, exploitability, and blast radius on every finding before it reaches your dashboard, cutting false positives by more than <strong>50%<\/strong> on a typical engagement. We expect that number to approach 100% over the coming months.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The CVE coverage number is worth reclaiming. It only comes back if the industry commits to making validation real. I intend to make sure Astra is on the right side of that line.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The security industry killed CVE coverage as a credible metric, and it deserved to die. Vendors inflated the numbers for years in the name of depth, and nobody in the room had an incentive to ask whether they reflected real validated risk or just a longer signature list. So &#8220;CVE coverage is a vanity metric&#8221; &#8230; <a title=\"Can Autonomous Pentesting Rescue CVE Coverage From Vanity Metric Hell?\" class=\"read-more\" href=\"https:\/\/www.getastra.com\/blog\/penetration-testing\/cve-coverage-vanity-metric\/\" aria-label=\"Read more about Can Autonomous Pentesting Rescue CVE Coverage From Vanity Metric Hell?\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":49114,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[722],"tags":[],"class_list":["post-49109","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-penetration-testing"],"_links":{"self":[{"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/posts\/49109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/comments?post=49109"}],"version-history":[{"count":2,"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/posts\/49109\/revisions"}],"predecessor-version":[{"id":49115,"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/posts\/49109\/revisions\/49115"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/media\/49114"}],"wp:attachment":[{"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/media?parent=49109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/categories?post=49109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.getastra.com\/blog\/wp-json\/wp\/v2\/tags?post=49109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}