메인 콘텐츠로 건너뛰기
익스플로잇 가능성 분석 개요
대부분의 취약점 프로그램은 발견 사항에 빠져 있습니다. 모든 것이 심각으로 레이블링되지만, 실제로 익스플로잇 가능한 것은 거의 없습니다. 팀은 실제 위협이 없는 것들을 패치하는 데 엔지니어링 시간을 소비하고, 진정으로 중요한 하나의 문제는 백로그에 묻혀 있습니다. 일상적인 현실은 다음과 같습니다:
  • 클라우드와 코드 전반에 수천 개의 발견 사항
  • 실제 위험을 반영하지 않는 심각한 심각도 점수
  • 끝없는 스프레드시트, 회의, 수동 분류
  • 제품 개선 대신 낮은 영향의 문제를 패치하는 데 소비되는 엔지니어링 시간
  • 진정으로 익스플로잇 가능한 하나의 문제가 묻혀 있다는 지속적인 걱정
익스플로잇 가능성 분석은 이 노이즈를 제거합니다. 모든 CVE를 동등하게 취급하는 대신, 각 취약점이 우리의 특정 환경에서 실제로 익스플로잇 가능한지 평가하고 — 이를 뒷받침하는 증거를 제공합니다. 저는 맥락에서 익스플로잇 가능하지 않은 것, 긴급한 것, 다음에 해야 할 것을 파악하며, 전체 팀이 따르고 신뢰할 수 있는 추론을 제공합니다.

질문: 여기서 익스플로잇 가능한가요?

CVE는 어디서나 자동으로 익스플로잇 가능한 것이 아닙니다. 종이에 작성되어 책상 위에 있는 취약한 코드는 공격자가 컴퓨터에 접근하기 위해 실행할 수 없습니다. 시스템에 있어야 하고, 실행 중인 서비스의 일부여야 하며, 네트워크에 노출되어 있어야 하고, 인터넷으로 가는 경로가 있어야 합니다. 모든 취약점에는 이러한 요구사항이 있습니다. 공격자가 성공하기 위해 충족해야 하는 전제 조건의 체크리스트라고 생각하시면 됩니다. 익스플로잇 요구사항의 예시:
  • 운영 체제가 특정 유형이어야 함 (Windows vs Linux)
  • 시스템 아키텍처가 특정 유형이어야 함 (x86_64 vs ARM/Graviton)
  • 특정 기능이 켜져 있어야 함
  • 서비스가 실행 중이고 네트워크를 통해 도달 가능해야 함
  • 특정 버전의 소프트웨어 라이브러리가 있고 사용되어야 함
  • 특정 하드웨어가 연결되어 있어야 함
우리 시스템과 환경에서 요구사항이 충족되지 않으면, 취약점은 우리 맥락에서 익스플로잇될 수 없습니다. 그것이 제가 다르게 하는 것입니다: 각 자산의 각 CVE에 대해 답합니다: 우리 환경에서 이것이 익스플로잇 가능한가요? 그리고 답변 뒤의 모든 증거를 보여드립니다.

예시: 서류상으로는 심각, 실제로는 익스플로잇 불가능

다음은 노이즈를 만들고 알림 피로를 유발하는 일반적인 경우들입니다. CVE는 일반 데이터베이스에서 심각으로 평가될 수 있지만, 익스플로잇 요구사항이 워크로드를 실제로 실행하는 방식과 맞지 않습니다.

예시 1: Linux 워크로드의 Windows 전용 취약점 (CVE-2024-49138)

  • 우리가 보는 것: CVE-2024-49138, 이 서버에 표시된 심각한 Windows 권한 상승 취약점.
  • 익스플로잇 요구사항: 대상이 Windows를 실행 중이어야 함.
  • 우리의 현실: 자산이 Linux를 실행 중.
  • 결과: 이 자산에서 익스플로잇 불가능. 주의와 엔지니어링 시간을 경쟁할 필요가 없습니다.

예시 2: RDMA 요구사항 (CVE-2023-25775)

  • 우리가 보는 것: CVE-2023-25775, Intel 이더넷 컨트롤러 RDMA 드라이버의 높은 심각도 취약점.
  • 익스플로잇 요구사항: Intel RDMA 드라이버가 설치된 RDMA 가능 하드웨어.
  • 우리의 현실: 표준 NIC, RDMA 없음.
  • 결과: 이 자산에서 익스플로잇 불가능.

예시 3: 네트워크 도달 가능성 (CVE-2024-6387)

  • 우리가 보는 것: CVE-2024-6387 (regreSSHion), OpenSSH의 심각한 원격 코드 실행 취약점.
  • 익스플로잇 요구사항: OpenSSH 서버 (sshd)가 실행 중이고 공격자가 도달 가능해야 함.
  • 우리의 현실: 이 자산에서 sshd가 실행되지 않음.
  • 결과: 이 자산에서 익스플로잇 불가능.

운영 심각도: 우리에게 긴급한 것은?

취약점이 익스플로잇 가능하다는 것을 알게 되면, 다음 질문은 우선순위입니다: 우리 환경에서 얼마나 긴급하게 조치해야 하는가? 다음 사이에는 차이가 있습니다:
  • 기본 심각도: 추상적인 최악의 영향을 설명하려는 일반적인 점수 (CVSS 같은).
  • 운영 심각도: 익스플로잇 가능성과 맥락을 기반으로 우리 자산과 환경에 대한 점수.
따라서 모든 심각을 동등하게 긴급하게 취급하는 대신, 명확한 레인으로 작업을 나눕니다:
  • 익스플로잇 불가능: 자신 있게 우선순위 낮추기.
  • 익스플로잇 가능성 낮음: 우선순위 낮추되, 완전히는 아님 — 증거가 100% 확실하지 않음.
  • 익스플로잇 가능성 높음: 먼저 수정하고, 종료까지 추적하며, SLA에 맞추기.
  • 불분명/증거 누락: 수동으로 조사한 다음 결정.
이것이 팀이 위험을 증가시키지 않고 백로그 감옥에서 벗어나는 방법입니다.

설명 가능한 결정

저는 단순히 심각도 점수를 주고 보내드리지 않습니다. 신뢰할 수 있는 추론을 드립니다. 각 자산의 각 취약점에 대해, 저는 요구사항, 각 요구사항이 충족되는지 여부, 그리고 이를 뒷받침하는 증거와 추론을 보여드립니다. 즉, 항상 제기되는 질문에 답할 수 있습니다:
  • 왜 이것을 우선순위 낮췄나요?
  • 무엇이 이것을 익스플로잇 가능하게 만들까요?
  • 노출을 줄이기 위해 무엇을 바꿔야 하나요?
추론이 투명할 때 보안과 엔지니어링을 더 쉽게 정렬하고 — 감사인에게 결정을 방어하기가 더 쉽습니다.

수정: 다음에 해야 할 것

취약점이 우리 환경에서 익스플로잇 가능하지 않을 때, 자신 있게 우선순위를 낮출 수 있습니다. 하지만 익스플로잇 가능할 때, 다음 질문은: 실제로 어떻게 처리할까요? 모든 익스플로잇 가능한 취약점에 대해, 저는 ROI로 순위가 매겨진 구체적인 조치의 우선순위 목록을 작성합니다. 각 조치는 수정해야 하는 것뿐만 아니라 얼마나 가치 있는지를 팀이 볼 수 있도록:
우선순위조치하는 일
1이미지 수정이 CVE를 해결하고 단일 조치로 전체 플릿 전반에서 잠재적으로 수백 개를 해결
2패키지 패치이 자산의 영향받은 패키지에 대한 직접 수정
3완화벤더 패치를 기다리는 동안 노출을 줄이기 위한 보완 컨트롤
4위험 수용현재 수정이 가능하지 않을 때 위험이 이해되고 수용된다는 공식 인정
우선순위 논리는 ROI 우선입니다. 플릿 전반에 공유된 이미지를 수정하면 단일 조치로 모든 인스턴스에 내재된 모든 취약점이 제거됩니다. 하나의 자산에서 하나의 패키지를 패치하는 것보다 훨씬 높은 수익입니다. 우선순위 1부터 시작하면 최소한의 노력으로 가장 많은 위험이 제거됩니다.

조율: 수정을 완료까지 추진

무엇이 중요한지 알면, 저는 일반적인 조율 비용 없이 팀이 수정할 수 있도록 도와드립니다:
  • SLA에 맞게 Jira 이슈 생성 또는 풀 리퀘스트 올리기
  • 엔지니어가 조치할 수 있는 명확한 수정 지침 제공
  • 영향 표시 (예: 이것을 수정하면 12개의 VM에서 158개의 취약점이 해결됨)
  • 수정 사항 검증 및 루프 종료
  • Slack, Microsoft Teams, 또는 이메일로 업데이트 유지

저의 혜택

노이즈 ~90% 감소

자산에서 실제로 익스플로잇 가능하지 않은 취약점을 필터링하여 알림 피로를 줄입니다. 백로그가 중요한 것으로만 줄어듭니다.

조사 시간 절약, 실제 위험 더 빠르게 수정

익스플로잇 가능한 것과 그 이유를 설명하고 (엔지니어와 감사인을 위한 감사 추적과 함께), 진정으로 수정이 필요한 취약점에 대한 수정을 완료까지 추진합니다.

ROI 우선 취약점 수정

모든 익스플로잇 가능한 취약점에 대해 ROI로 수정 조치의 우선순위를 지정합니다.

수정을 완료까지 추진

무엇을 수정할지 알면, Jira 이슈를 생성하거나 풀 리퀘스트를 올리고, 수정 사항을 검증하며, 루프를 종료합니다. 취약점이 단순히 파악되는 것이 아니라 해결됩니다.