TT Lab
블로그 시작하기
배우기 러닝패스 코스

스캐너는 빨간 줄 마흔 개를 줬다

심각도가 아니라 도달성

TT Lab 에서 이어서 보기

한 줄 요약

CVSS 점수(심각도)는 "이 취약점이 얼마나 나쁠 수 있는가" 이지 "우리에게 얼마나 급한가" 가 아닙니다. 우선순위는 도달성과 범위, 그리고 고칠 판이 있는지로 정합니다.

왜 이게 필요했나

CRITICAL 이 42개면 전부 오늘 고쳐야 할 것 같지만, 그 중 상당수는 우리 코드가 그 취약 함수를 부르지 않거나, 그 패키지가 테스트에만 쓰여 배포에 실리지 않습니다. 반대로 MEDIUM 하나가 외부 입력이 바로 닿는 경로에 있으면 그게 제일 급합니다. 심각도만으로 줄 세우면 급한 것이 뒤로 밀립니다.

어떻게 동작하나

세 가지 축으로 분류합니다.

이 셋을 조합하면 작업이 세 칸으로 갈립니다. 배포에 실리고·도달 가능하고·심각도 높고·fix 가 있으면 지금, 도달 불가거나 dev 전용이면 지켜보기, 나머지는 나중입니다.

고친 뒤에는 반드시 다시 잽니다. OS 취약점은 베이스 이미지를 올리면 여러 개가 한꺼번에 사라집니다. 재스캔으로 before/after 를 비교하지 않으면 무엇이 실제로 해결됐고 무엇이 남았는지 모릅니다 — fix 가 없어 남은 것(예: 아직 패치가 안 나온 CVE)과 깜빡 빠뜨린 것을 구별해야 합니다.

현장에서 만나는 모습

가장 흔한 함정은 "CRITICAL 이니까 지금" 입니다. 도달 불가 CRITICAL 을 최우선으로 올리면 정작 도달 가능한 HIGH 가 밀립니다. 둘째는 fix 없는 취약점을 '오늘 할 일' 에 넣어 팀이 할 수 없는 일에 매달리는 것입니다. 셋째는 고친 뒤 재스캔을 생략해 "고쳤다고 생각했는데 그대로" 인 경우입니다.

English corner

다음 실습에서 할 것

Trivy 형식 리포트에 도달성·범위를 붙여 now·later·watch 로 나누고, fix 가 있는 것만 계획으로 옮기고, 베이스를 올린 리포트와 견주어 OS 취약점이 얼마나 줄었는지 확인합니다.

한 걸음 더 — EPSS 와 KEV

도달성·범위 말고도 우선순위를 돕는 외부 신호가 있습니다. EPSS(Exploit Prediction Scoring System)는 그 취약점이 가까운 시일에 실제로 악용될 확률을 추정한 점수입니다. KEV(Known Exploited Vulnerabilities)는 이미 현실에서 악용이 확인된 취약점 목록입니다. CVSS 가 높아도 EPSS 가 낮으면 급하지 않을 수 있고, CVSS 가 중간이어도 KEV 에 있으면 지금 막아야 합니다.

이 신호들을 도달성과 함께 쓰면 '잠재적 심각도' 에서 '우리 환경의 실제 위험' 으로 한 걸음 더 갑니다. 다만 외부 점수도 맥락이 없으면 또 하나의 숫자일 뿐입니다 — KEV 에 있는 취약점이라도 그 함수를 우리가 안 부르면 우리에게는 닿지 않습니다. 외부 신호는 사내 판단(도달성·범위)을 대체하지 않고 보완합니다.

점검 순서

  1. 심각도만이 아니라 도달성·범위로 분류했는가.
  2. fix 가 있는 것과 없는 것을 갈랐는가(오늘 할 일과 완화책).
  3. 외부 신호(EPSS·KEV)로 급한 것을 다시 짚었는가.
  4. 고친 뒤 다시 스캔해 before/after 를 확인했는가.