취약점 관리의 주요 과제 중 하나는 제한된 자원과 결합된 취약점의 압도적 인 수입니다.모든 취약점이 동등하게 위험한 것은 아니며 모든 취약점이 긴급한 해결을 필요로하는 것은 아닙니다. 예를 들어, 높은 CVSS 점수가 있는 취약점은 착취 가능성이 극도로 낮으면 거의 현실적인 위험을 초래할 수 없습니다. 이전 글에서, I introduced a 이 문서에서는 EPSS 지원을 어떻게 구현했는지 보여주고 이 측정을 필터링 및 분석 프로세스에 통합하여 복구 노력을 향상시킬 수 있습니다. Budibase를 사용하여 취약점 우선화에 대한 no-code 솔루션 EPSS 기반의 우선 순위를 채택함으로써, 진정으로 중요한 취약점에 집중함으로써 복구 전략의 효율성을 크게 향상시킬 수 있습니다.Out of my research, I have discovered that many vulnerability management solutions still do not fully incorporate EPSS, despite its availability to the public. 좋은 소식은 EPSS 기반 우선 순위를 구현하는 데 비싼 플랫폼이 필요 없다는 것입니다. EPSS는 무엇이며 왜 유용합니까? 예상치 못한 시스템(The Exploit Prediction System) 다음 30일 이내에 특정 취약점이 이용될 확률을 나타내며, 비율로 표현됩니다. EPSS 모델의 현재 버전은 2025년 3월 17일에 출시된 버전 4입니다. 프로젝트를 유지하고 있으며 데이터는 매일 업데이트되고 .csv 형식으로 다운로드 할 수 있습니다. FIRST.org 이용 가능성이 매우 낮은 취약점은 더 적은 즉각적인 위협을 나타냅니다. 이용 가능성이 매우 낮은 취약점은 더 적은 즉각적인 위협을 나타냅니다. 이 접근법은 시간과 노력을 포함한 자원을 더 큰 위험을 초래하는 취약점에 지시함으로써 효율성을 향상시켜 더 나중에 취약점이 더 위험해지거나 추가 자원이 제공될 때 덜 중요한 취약점에 대처할 수 있게 한다. 예를 들어, CVSS 점수가 7.0이고 EPSS 점수가 0.01인 두 가지 취약점을 고려하고, CVSS 점수가 6.5이고 EPSS 점수가 0.91인 두 번째 취약점은 91%의 취약점을 나타냅니다. CVSS는 이론적 심각성을 나타내는 반면, EPSS는 취약점이 이용될 가능성에 대한 통찰력을 제공하며, 잠재적 현실적 위협에 대한 가치있는 맥락을 제공합니다. 위의 이미지를 보여주듯이, 10% 이상의 경계가 있는 EPSS 방법을 적용할 때: 노력이 2.7 %로 줄어들며 CVSS 경계가 7 이상인 경우 필요한 노력이 상당히 낮습니다. 커버링은 63.2 %에 달하며, CVSS 접근법보다 약간 낮으며, 이는 덜 관련된 취약점을 과도하게 우선시하는 것을 방지하는 데 유익합니다. 효율성은 65.2%로, 이는 CVSS 7+ 방법으로 달성되는 것보다 훨씬 높습니다. EPSS 점수 외에도, 동일한 또는 낮은 이용 확률을 가진 취약점의 비율 (또는 비율)을 나타내는 센티일 메트릭이 있습니다. 예를 들어, 취약점에 EPSS 점수가 0.10(10%)이고 센티일이 88인 경우, 다른 모든 취약점의 88%가 EPSS 점수가 낮다는 것을 의미합니다. EPSS 점수를 센티일과 함께 사용하면 특히 대규모 데이터 세트를 다루는 경우 더 정확한 우선 순위를 설정할 수 있습니다.A detailed explanation of how to interpret these values can be found in the article below. https://www.first.org/epss/articles/prob_percentile_bins?embedable=true EPSS 점수가 예측이 아니라 착취의 보증임을 기억하는 것이 중요합니다.모델이 어떻게 작동하는지에 대한 자세한 내용은 공식 페이지를 방문하십시오. https://www.first.org/epss/model. Budibase를 사용하여 시스템에 EPSS를 구현하는 방법 EPSS 값을 기반으로 필터링을 구현하려면 먼저 공식 파일에서 아카이브를 다운로드했습니다. 취약점에 대한 최신 착취 확률 점수를 포함하는 웹사이트입니다.Here is an example of the content from the CSV file in the archive: first.org #model_version:v2025.03.14,score_date:2025-08-02T12:55:00Z cve,epss,percentile CVE-1999-0001,0.0142,0.79836 CVE-1999-0002,0.14818,0.94265 CVE-1999-0003,0.90339,0.99584 ... 그런 다음 VM 솔루션에서 취약점을 내보내기 위해 사용하는 Python 스크립트를 업데이트했습니다.I added the following enhancements: Parsing the EPSS and percentile values Converting these values into percentages by multiplying by 100 Rounding them to whole numbers 모든 CVE가 EPSS 데이터 세트에 존재하는 것은 아니며, 포함되지 않은 경우 99의 값을 지정합니다. 모든 CVE가 EPSS 데이터 세트에 존재하는 것은 아니며, 포함되지 않은 경우 99의 값을 지정합니다. 데이터베이스에 데이터를 가져온 후 Budibase에서 다음과 같은 기능을 구현했습니다. EPSS 지표에 대한 필터링 양식, 예를 들어 >10% 선택한 한계를 기반으로 대시보드를 자동으로 새롭게 하는 메커니즘 Two control buttons: One for viewing the list of vulnerabilities in a pop-up window Another for exporting the results to a .csv file for further analysis or reporting. 그 후 Budibase에서 SQL 쿼리를 업데이트하여 EPSS 값과 비율로 필터링하는 조건을 추가했습니다.This enabled flexible control over the display of vulnerabilities based on the selected thresholds. 조건 블록의 예: ... ( CASE WHEN {{epssthr}}::text IS NULL THEN TRUE ELSE epssScore >= {{epssthr}} END ) AND ( CASE WHEN {{epssrating}}::text IS NULL THEN TRUE ELSE epsspercentile >= {{epssrating}} END ) ... 다음은 상위 취약 서비스를 표시하는 대시보드에 대한 SQL 쿼리의 예입니다.Here is an example of an SQL query for the dashboard that displays the top vulnerable services: SELECT COUNT(hostname) AS total, VulnerableEntity || ' ' || VulnerableEntityVersion AS VulnerableObject FROM mat_allassets WHERE osname ILIKE '%windows 20%' AND VulnerableEntity IS NOT NULL AND status = 'new' AND VulnerabilityIssueTime < CURRENT_DATE - {{days}}::interval AND ( CASE WHEN {{ sev }}::text IS NULL THEN TRUE ELSE severity = {{ sev }}::text END ) AND ( CASE WHEN {{expltbl}}::bool IS NULL THEN TRUE ELSE metrics ILIKE 'Exploitable: {{expltbl}}%'::text END ) AND ( CASE WHEN {{expltbl}}::bool IS NULL THEN TRUE ELSE metrics ILIKE 'Exploitable: {{expltbl}}%'::text END ) AND ( CASE WHEN {{netvector}}::bool IS NULL THEN TRUE ELSE metrics ILIKE '%HasNetworkAttackVector: {{netvector}}%'::text END ) AND ( CASE WHEN {{remedy}}::bool IS NULL THEN TRUE ELSE metrics ILIKE '%HasFix: {{remedy}}%'::text END ) AND ( CASE WHEN {{vulntrend}}::bool IS NULL THEN TRUE ELSE VulnerIsTrend = '{{vulntrend}}'::text END ) AND ( CASE WHEN {{hostimport}}::text IS NULL THEN TRUE ELSE HostImportance = '{{hostimport}}'::text END ) AND ( CASE WHEN {{epssthr}}::text IS NULL THEN TRUE ELSE epssScore >= {{epssthr}} END ) AND ( CASE WHEN {{epssrating}}::text IS NULL THEN TRUE ELSE epsspercentile >= {{epssrating}} END ) GROUP BY VulnerableObject ORDER BY total DESC LIMIT 10; 그 후, 나는 UI에서 변수 결합을 SQL 쿼리에 포함했다.I discussed this in my previous . 취약성 우선 순위에 관한 기사 마지막으로, 나는 우선 순위 필터를 설정할 수있는 간단하고 사용자 친화적 인 응용 프로그램을 개발했습니다.Exploit Prediction Scoring System (EPSS)의 한계를 포함하여 아래의 스크린 샷에서 EPSS의 한계를 10 이상으로 설정했으며 14 일 이상의 트렌드 취약점을 선택했으며 악용의 존재를 요구했습니다. EPSS(Exploit Predictive Scoring System) 10 %의 경계를 사용함으로써 우리는 활용된 취약점의 63.2 %를 덮을 수 있으며 65.2 %의 복구 효율을 달성하면서 자원을 적게 사용합니다. EPSS 필터링을 비활성화하려면 단순히 경계 값을 0로 설정합니다; 필터는 더 이상 적용되지 않습니다. 또한 중증도 필터를 평균 이상으로 설정하면 일반적으로 Remote Code Executions (RCEs), Command Executions 또는 SQL Injections와 같은 취약점을 강조합니다.These are the types of vulnerabilities that pose the biggest threat to the business. 중요한 곳에 집중하라 EPSS는 취약성 우선순위화의 효율성을 크게 향상시키는 강력한 도구입니다.“불을 눈먼 채 지우는” 대신, 우리는 이제 가장 중요한 문제에 초점을 맞추고 의도적으로 작업합니다. 즉, 각 인프라가 독특하며, 모든 우선 순위 설정 시스템은 특정 환경에 맞춰야 합니다. 모든 취약성 관리 프로세스는 자산을 발견하고 재고하는 것으로 시작한다는 것을 기억하는 것이 중요합니다.우리가 보호하는 것에 대한 명확한 이해가 없으면 다른 모든 단계는 중요성을 잃습니다.또한 기본 구성을 인프라에 남겨 두지 마십시오. 나는 코멘트에서 당신의 생각을 듣고 싶습니다 : Do you use EPSS in your work?