← 기술 목록으로

RHEL VEX 취약점 수집 구조 재설계

63,152개 CSAF/VEX 문서를 전수 분석해 CPE·구독 채널·모듈 기준의 수집 테이블과 서버 판정 순서를 다시 정리

기간2026-08
대상 저장소labrador-scrapers
역할데이터 엔지니어 · 수집 구조와 검증 설계
CSAF/VEXRHELCPEMySQLAirflowData Modeling

0오탐은 파서보다 데이터 모델에서 시작됐습니다

ServerCare의 RHEL 패키지 취약점 오탐을 따라가 보니 원천 포맷은 이미 VEX로 바뀌어 있었지만, 파싱 단계에는 OVAL 시절의 가정이 남아 있었습니다. 한 제품의 패치 버전을 같은 메이저의 모든 마이너 버전으로 늘리고, 모듈 조건을 판정에 쓰지 않으며, 패키지 이름을 첫 하이픈에서 자르는 문제가 함께 있었습니다.

현행 수집 테이블은 371만 행·14.7GB였습니다. 이 상태에서 파서만 부분 수정하면 어떤 행이 왜 만들어졌는지 설명하기 어려워, 기존 구현을 유지하지 않고 수집 단위와 서버 판정 경계를 다시 잡았습니다.

현재 상태는 설계·전수 측정 완료입니다. 수집기 구현, 시험 적재, 배포 전환, 운영 오탐 감소율 측정은 아직 끝나지 않았습니다.

163,152개 문서를 먼저 전수 측정했습니다

63,152
분석한 VEX 문서
0 / 715만
product_id 미해결 건수
약 487만
설계 fact 행 수
401
상태 충돌 grain

2세 가지 판단이 구조를 바꿨습니다

3아키텍처와 판정 경계

Red Hat CSAF VEX 문서를 CPE 사전과 취약점 fact로 파싱하고 호스트 CPE, 설치 패키지, 활성 모듈로 판정한 뒤 고객사 배포 경로로 전달하는 구조
수집 단계에서 CPE·패키지·모듈 조건을 보존하고, 서버 판정은 구독 채널과 활성 모듈을 확인한 뒤 수행합니다.

수집DB에는 CPE 사전, 취약점 fact, 문서 상태를 두고 배포DB에는 CPE 사전과 fact만 둡니다. 약 90행인 CPE 사전은 API가 통째로 캐시하고, fact 조회는 대상 CPE와 설치 패키지 목록으로 좁힙니다.

4고객사로 나가는 쓰기량까지 계산했습니다

배포DB는 고객사 on-premise 서버로 보내는 바이너리 로그의 발원지입니다. 문서가 바뀔 때 기존 행을 전부 지우고 다시 넣으면 내부 DB 부하에서 끝나지 않고 모든 고객사에 같은 쓰기가 전달됩니다.

5결과

6역할

기존 코드와 DB 행을 대조해 오탐을 만드는 가정을 찾고, VEX 전체 corpus를 측정해 스키마·수집 절차·판정 순서를 설계했습니다. 구현된 결과처럼 보이지 않도록 현재 완료 범위를 문서·측정·협의안으로 한정했습니다.

관련 항목: 멀티 배포판 OS 패키지 수집 개편 · OS 패키지 취약점 수집 정확도 개선