심각도가 아니라 도달성
한 줄 요약
CVSS 점수(심각도)는 "이 취약점이 얼마나 나쁠 수 있는가" 이지 "우리에게 얼마나 급한가" 가 아닙니다. 우선순위는 도달성과 범위, 그리고 고칠 판이 있는지로 정합니다.
왜 이게 필요했나
CRITICAL 이 42개면 전부 오늘 고쳐야 할 것 같지만, 그 중 상당수는 우리 코드가 그 취약 함수를 부르지 않거나, 그 패키지가 테스트에만 쓰여 배포에 실리지 않습니다. 반대로 MEDIUM 하나가 외부 입력이 바로 닿는 경로에 있으면 그게 제일 급합니다. 심각도만으로 줄 세우면 급한 것이 뒤로 밀립니다.
어떻게 동작하나
세 가지 축으로 분류합니다.
- 도달성(reachable): 그 취약 함수가 우리 코드의 실행 경로에 있는가. 완전한 분석은 호출 그래프가 필요하지만, 실무에서는 "그 위험 API 를 쓰는가" 를 코드 검색으로 근사하기도 합니다. pyyaml 의
full_load에 버그가 있어도 우리가safe_load만 쓴다면 닿지 않습니다. - 범위(scope): runtime 이면 배포 산출물에 실리고, dev 면 빌드·테스트에만 쓰입니다. dev 전용 의존의 CVE 는 사용자에게 닿지 않습니다(그렇다고 무시하는 것은 아니고, 우선순위가 낮습니다).
- 고칠 판(fixable): 수정 버전이 나와 있는가. fix 가 없으면 오늘 올릴 수 없고, 완화책(mitigation)이나 예외 기록으로 갑니다.
이 셋을 조합하면 작업이 세 칸으로 갈립니다. 배포에 실리고·도달 가능하고·심각도 높고·fix 가 있으면 지금, 도달 불가거나 dev 전용이면 지켜보기, 나머지는 나중입니다.
고친 뒤에는 반드시 다시 잽니다. OS 취약점은 베이스 이미지를 올리면 여러 개가 한꺼번에 사라집니다. 재스캔으로 before/after 를 비교하지 않으면 무엇이 실제로 해결됐고 무엇이 남았는지 모릅니다 — fix 가 없어 남은 것(예: 아직 패치가 안 나온 CVE)과 깜빡 빠뜨린 것을 구별해야 합니다.
현장에서 만나는 모습
가장 흔한 함정은 "CRITICAL 이니까 지금" 입니다. 도달 불가 CRITICAL 을 최우선으로 올리면 정작 도달 가능한 HIGH 가 밀립니다. 둘째는 fix 없는 취약점을 '오늘 할 일' 에 넣어 팀이 할 수 없는 일에 매달리는 것입니다. 셋째는 고친 뒤 재스캔을 생략해 "고쳤다고 생각했는데 그대로" 인 경우입니다.
English corner
- reachability: 도달 가능성. 취약 코드가 실제 실행 경로에 있는지입니다.
- exploitability vs severity: 악용 가능성과 심각도. CVSS 는 심각도이지 우리 환경의 악용 가능성이 아닙니다.
- triage: 분류·우선순위 결정. 응급실에서 온 말입니다.
- rescan after remediation: 고친 뒤 다시 스캔. 확인 없는 수정은 미완입니다.
다음 실습에서 할 것
Trivy 형식 리포트에 도달성·범위를 붙여 now·later·watch 로 나누고, fix 가 있는 것만 계획으로 옮기고, 베이스를 올린 리포트와 견주어 OS 취약점이 얼마나 줄었는지 확인합니다.
한 걸음 더 — EPSS 와 KEV
도달성·범위 말고도 우선순위를 돕는 외부 신호가 있습니다. EPSS(Exploit Prediction Scoring System)는 그 취약점이 가까운 시일에 실제로 악용될 확률을 추정한 점수입니다. KEV(Known Exploited Vulnerabilities)는 이미 현실에서 악용이 확인된 취약점 목록입니다. CVSS 가 높아도 EPSS 가 낮으면 급하지 않을 수 있고, CVSS 가 중간이어도 KEV 에 있으면 지금 막아야 합니다.
이 신호들을 도달성과 함께 쓰면 '잠재적 심각도' 에서 '우리 환경의 실제 위험' 으로 한 걸음 더 갑니다. 다만 외부 점수도 맥락이 없으면 또 하나의 숫자일 뿐입니다 — KEV 에 있는 취약점이라도 그 함수를 우리가 안 부르면 우리에게는 닿지 않습니다. 외부 신호는 사내 판단(도달성·범위)을 대체하지 않고 보완합니다.
점검 순서
- 심각도만이 아니라 도달성·범위로 분류했는가.
- fix 가 있는 것과 없는 것을 갈랐는가(오늘 할 일과 완화책).
- 외부 신호(EPSS·KEV)로 급한 것을 다시 짚었는가.
- 고친 뒤 다시 스캔해 before/after 를 확인했는가.