
vex8s v0.5.0
스캔에 Kubernetes 컨텍스트를 적용하여 취약점을 억제
Vex8s
(이 로고는 AI로 생성되지 않았습니다)
Vex8s는 컨테이너 취약점을 Kubernetes 설정과 상호 연관시켜 클러스터에서 실제로 악용 가능한 CVE를 판별하여 VEX 문서를 생성합니다.
이 프로젝트는 실험적인 프로젝트입니다. 사항이 빠르게 변경될 수 있습니다.
작동 방식
이 프로젝트는 취약점 분류와 securityContext 분석을 결합하여 Kubernetes 워크로드 내 알려진 CVE의 악용 가능성을 평가하는 것을 목표로 합니다.

다음 개념을 기반으로 합니다:
- 각 CVE는 하나 이상의 취약점 클래스(CWE)로 분류됩니다.
- CVE 설명은 내장된 ML 모델에 의해 처리되어 악용 범주를 예측합니다.
- CWE와 예측된 악용 범주를 결합하여 CVE가 완화 가능한지 판단합니다.
- 각 악용 범주는 차단하거나 영향을 줄일 수 있는 Kubernetes 설정 집합에 매핑됩니다.
- Kubernetes 매니페스트를 파싱하여 관련 설정이 적용되었는지 컨테이너 설정을 검사할 수 있습니다.
- 두 분석을 결합하여 시스템이 특정 워크로드 구성에서 CVE가 악용 가능한지 판단할 수 있습니다.
- CVE 완화로 판단되면 최종 VEX 문서에 추가합니다.
더 깊이 있는 내용은 다음 논문을 참조하세요: 환경 인식 취약점 억제: Kubernetes 보안 컨텍스트 및 VEX 사용
설치
릴리스 페이지에서 최신 바이너리를 다운로드할 수 있습니다.
또는 직접 빌드할 수 있습니다:
make build
사용법
vex8s는 현재 VEX 문서를 생성하는 2가지 방법을 지원합니다:
-
수동 모드:
trivy또는grype로 생성된 기존 취약점 보고서를 전달합니다. -
능동 모드:
trivy또는grype엔진을 사용하여 이미지를 적극적으로 스캔한 후 결과를 기반으로 문서를 생성합니다.
수동 모드 (권장)
trivy 사용:
# 취약점 보고서 생성.
trivy image --format json --output nginx.trivy.json nginx:1.21.0
# 취약점 보고서를 처리하여 VEX 문서 생성.
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json --output nginx.vex.json
# VEX 문서로 다시 스캔하여 취약점 억제.
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0
grype에도 동일하게 적용할 수 있습니다:
# sbom 보고서 생성.
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0
# 취약점 보고서 생성.
grype sbom:./nginx.grype.json --output json --file nginx.grype-vr.json
# 취약점 보고서를 처리하여 VEX 문서 생성.
vex8s generate --manifest examples/nginx.yaml --report nginx.grype-vr.json --output nginx.vex.json
# VEX 문서로 sbom을 스캔하여 취약점 억제.
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed
능동 모드
trivy 사용:
# 이미지를 스캔하고 VEX 문서를 자동으로 생성.
vex8s generate --manifest examples/nginx.yaml --scan.engine trivy --output nginx.vex.json
# VEX 문서로 다시 스캔하여 취약점 억제.
trivy image --vex nginx.vex.json --show-suppressed nginx:1.21.0
grype에도 동일하게 적용할 수 있습니다:
# sbom 보고서 생성.
grype --output cyclonedx-json --file nginx.grype.json nginx:1.21.0
# 이미지를 스캔하고 VEX 문서를 자동으로 생성.
vex8s generate --manifest examples/nginx.yaml --scan.engine grype --output nginx.vex.json
# VEX 문서로 sbom을 스캔하여 취약점 억제.
grype sbom:./nginx.grype.json --output table --vex nginx.vex.json --show-suppressed
분류기
각 CVE는 완화 결정을 주도하는 하나 이상의 악용 클래스로 분류됩니다. vex8s는 --classifier를 통해 두 가지 분류기 엔진을 지원합니다:
embedded(기본값): 바이너리에 포함된 오프라인 ONNX ML 모델. 네트워크 액세스가 필요하지 않습니다.gemini: Google의 Gemini LLM을 사용하여 CVE 설명을 분류합니다.GEMINI_API_KEY환경 변수(선택적으로GEMINI_MODEL)가 필요합니다.
export GEMINI_API_KEY="your-api-key"
vex8s generate --manifest examples/nginx.yaml --report nginx.trivy.json \
--output nginx.vex.json --classifier gemini
전체 워크스루, Gemini 분류기 설정 및 전체 플래그 참조는 문서 — 특히 사용자 가이드를 참조하세요.
참고 자료
이 프로젝트는 Akihiro Suda의 프로젝트 vexllm에서 영감을 받았습니다.