<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Андрей Гордиенко</title>
    <description>The latest articles on DEV Community by Андрей Гордиенко (@__d04208eb).</description>
    <link>https://dev.to/__d04208eb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1838862%2Fff49c695-8bd0-4ae1-8a6c-8a8862076223.png</url>
      <title>DEV Community: Андрей Гордиенко</title>
      <link>https://dev.to/__d04208eb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/__d04208eb"/>
    <language>en</language>
    <item>
      <title>Why CVSS Isn't Enough: Prioritising Vulnerabilities with EPSS and CISA KEV</title>
      <dc:creator>Андрей Гордиенко</dc:creator>
      <pubDate>Thu, 18 Jun 2026 10:19:50 +0000</pubDate>
      <link>https://dev.to/__d04208eb/why-cvss-isnt-enough-prioritising-vulnerabilities-with-epss-and-cisa-kev-59ol</link>
      <guid>https://dev.to/__d04208eb/why-cvss-isnt-enough-prioritising-vulnerabilities-with-epss-and-cisa-kev-59ol</guid>
      <description>&lt;p&gt;--&lt;br&gt;
title: "Why CVSS Isn't Enough: Prioritising Vulnerabilities with EPSS and CISA KEV"&lt;br&gt;
published: false&lt;br&gt;
description: "Severity tells you how bad a vulnerability is. EPSS and CISA KEV tell you how likely it is to be exploited. Here's how to combine them into a real fix-first order."&lt;/p&gt;

&lt;h2&gt;
  
  
  tags: security, cybersecurity, devops, opensource
&lt;/h2&gt;

&lt;p&gt;If you've ever run a vulnerability scan, you know the feeling: hundreds of findings,&lt;br&gt;
all sorted by CVSS, and no realistic way to fix them all. So you start at the top with&lt;br&gt;
the 9.8s and work down. The problem? &lt;strong&gt;CVSS measures impact, not likelihood.&lt;/strong&gt; A&lt;br&gt;
critical-severity bug that nobody is exploiting can quietly outrank a medium-severity&lt;br&gt;
bug that attackers are actively weaponising right now.&lt;/p&gt;

&lt;p&gt;Two freely available data sources fix this: &lt;strong&gt;EPSS&lt;/strong&gt; and the &lt;strong&gt;CISA KEV&lt;/strong&gt; catalog.&lt;/p&gt;

&lt;h2&gt;
  
  
  EPSS — the Exploit Prediction Scoring System
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.first.org/epss/" rel="noopener noreferrer"&gt;EPSS&lt;/a&gt;, maintained by FIRST.org, is a model that outputs a&lt;br&gt;
score between 0 and 1 estimating the probability a given CVE will be &lt;strong&gt;exploited in the&lt;br&gt;
wild within the next 30 days&lt;/strong&gt;. It's recalculated daily from real-world signals.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EPSS &lt;strong&gt;0.97&lt;/strong&gt; → almost certainly going to be attacked soon.&lt;/li&gt;
&lt;li&gt;EPSS &lt;strong&gt;0.02&lt;/strong&gt; → very unlikely, even if the CVSS is high.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because it updates daily, a CVE that looks quiet today can spike the moment a public&lt;br&gt;
exploit drops.&lt;/p&gt;

&lt;h2&gt;
  
  
  CISA KEV — Known Exploited Vulnerabilities
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://www.cisa.gov/known-exploited-vulnerabilities-catalog" rel="noopener noreferrer"&gt;CISA KEV catalog&lt;/a&gt; is&lt;br&gt;
an authoritative list of CVEs &lt;strong&gt;confirmed to be actively exploited&lt;/strong&gt;. If something is in&lt;br&gt;
KEV, it isn't theoretical — it's being used by attackers in the real world, and it&lt;br&gt;
belongs at the very top of your queue regardless of its EPSS or CVSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  CVSS vs EPSS: two different axes
&lt;/h2&gt;

&lt;p&gt;Think of it as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CVSS = impact&lt;/strong&gt; — how bad it is &lt;em&gt;if&lt;/em&gt; exploited.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EPSS = likelihood&lt;/strong&gt; — how probable exploitation actually is.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You need both. The strongest fix-first order combines all three signals:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;KEV first&lt;/strong&gt; — confirmed active exploitation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;then EPSS&lt;/strong&gt; — highest exploit probability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;then severity&lt;/strong&gt; — CVSS as the tie-breaker.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  A worked example
&lt;/h2&gt;

&lt;p&gt;Say a scan returns four findings. Sorting by CVSS alone puts the two 9.8s on top — but&lt;br&gt;
that's not where the real risk lives:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Finding&lt;/th&gt;
&lt;th&gt;CVSS&lt;/th&gt;
&lt;th&gt;EPSS&lt;/th&gt;
&lt;th&gt;KEV?&lt;/th&gt;
&lt;th&gt;Fix-first rank&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SMBv1 RCE (MS17-010)&lt;/td&gt;
&lt;td&gt;9.3&lt;/td&gt;
&lt;td&gt;0.97&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenSSH regreSSHion&lt;/td&gt;
&lt;td&gt;8.1&lt;/td&gt;
&lt;td&gt;0.92&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Obscure parser bug&lt;/td&gt;
&lt;td&gt;9.8&lt;/td&gt;
&lt;td&gt;0.04&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weak TLS ciphers&lt;/td&gt;
&lt;td&gt;5.3&lt;/td&gt;
&lt;td&gt;0.03&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The CVSS 9.8 parser bug drops below two lower-severity issues because almost nobody is&lt;br&gt;
exploiting it, while the KEV-flagged SMBv1 and OpenSSH bugs are being actively&lt;br&gt;
weaponised. That re-ordering &lt;em&gt;is&lt;/em&gt; the point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operationalising it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Treat &lt;strong&gt;everything in KEV&lt;/strong&gt; as "patch now".&lt;/li&gt;
&lt;li&gt;Pick an &lt;strong&gt;EPSS threshold&lt;/strong&gt; that matches your capacity — many teams use ≥ 0.1 (a 10%+
chance in 30 days) as "act soon".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-pull EPSS regularly&lt;/strong&gt; — it's a moving target.&lt;/li&gt;
&lt;li&gt;Don't drop CVSS entirely; use it to break ties between similarly-likely findings.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Doing it without spreadsheets
&lt;/h2&gt;

&lt;p&gt;Stitching EPSS and KEV onto scanner output by hand gets old fast. I ended up building it&lt;br&gt;
into an open-source scanner — &lt;a href="https://andriigordiienko.github.io/ShadowSecurityScanner-site/" rel="noopener noreferrer"&gt;ShadowSecurityScanner&lt;/a&gt; —&lt;br&gt;
which folds EPSS and KEV onto every finding automatically and sorts by that&lt;br&gt;
KEV → EPSS → severity order, including in its SARIF/PDF exports. It's free, MIT-licensed,&lt;br&gt;
and runs as a single desktop app on Windows, macOS and Linux. But the &lt;em&gt;concept&lt;/em&gt; is&lt;br&gt;
tool-agnostic: however you scan, prioritising by exploitability instead of raw severity&lt;br&gt;
is one of the highest-leverage changes you can make to a remediation workflow.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Further reading: &lt;a href="https://andriigordiienko.github.io/ShadowSecurityScanner-site/guides/what-is-epss-and-kev/" rel="noopener noreferrer"&gt;What are EPSS and CISA KEV?&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
