작업 완료 · 2023

파일/함수 취약점 수집 파이프라인 재설계

취약 커밋 식별과 소스 수집을 분리하고 NVD 참조 링크를 더 따라가 누락된 커밋을 찾았습니다.

기간2023
소속래브라도랩스(LabradorLabs)
역할데이터 엔지니어 · 파이프라인 재설계 주도
Python아키텍처보안

작업 요약

취약 커밋 식별 성공률 75% → 95%

실패한 단계만 다시 수집하도록 나눴습니다

취약점 수집 파이프라인이 한 프로세스에 묶이면 한 단계의 실패 때문에 전체 데이터를 다시 수집해야 할 수 있습니다. 이 작업은 실패 범위를 줄이고 재처리할 단위를 분리하는 데 초점이 있었습니다.

DB 스키마도 정규화해 파일/함수 단위 취약점 데이터의 중복을 줄이고 검증할 수 있도록 했습니다.

배경

공개된 보안 패치 정보를 기반으로 취약했던 소스코드와 수정 diff를 수집해, 파일/함수 단위 취약점 데이터셋을 구축하는 시스템입니다. 기존 수집기는 수집·검증·저장을 하나의 프로세스에서 모두 처리하는 구조였습니다.

접근 — 수집을 2단계로 분리

모든 작업을 한 프로세스가 담당하던 구조를, 책임이 명확한 두 단계 파이프라인으로 분리하고 단계별 상태를 추적할 수 있게 했습니다.

전체 구조를 먼저 보고, 크게 열어 세부 내용을 확인하세요.크게 보기ExcalidrawMermaid
1단계에서 공개 패치의 커밋 URL을 수집·검증하고, 2단계에서 검증된 URL로 소스코드와 diff를 수집합니다. 커밋 URL의 processed 상태로 실패 건을 추적해 재처리하고, 결과를 정규화된 취약점 데이터셋에 저장합니다.
1단계에서 공개 패치의 커밋 URL을 수집·검증하고, 2단계에서 검증된 URL로 소스코드와 diff를 수집합니다. 커밋 URL의 processed 상태로 실패 건을 추적해 재처리하고, 결과를 정규화된 취약점 데이터셋에 저장합니다.

결과

수집 단계 분리단계 분리로 장애 격리가 쉬워지고 단계별 독립 확장·유지보수가 가능
데이터 누락 최소화상태 플래그로 단계별 처리 현황을 추적하고 실패 건을 재처리
저장·쿼리 효율스키마 정규화로 중복 제거, 저장 효율과 쿼리 성능 개선
처리 상태 확인전체 수집 흐름에서 각 데이터의 처리 상태 확인

역할

데이터 엔지니어로서 기존 단일 프로세스 구조의 한계를 진단하고, 수집 단계 분리 설계 → DB 스키마 정규화 → 상태 기반 처리 도입까지 재설계를 단독으로 수행했습니다. 데이터 중복·비효율을 줄이는 동시에, 실패 추적·재처리가 가능한 파이프라인으로 전환했습니다.