이 논문은 소프트웨어가 만들어지는 과정 (공급망) 에서 발생하는 보안 문제를 해결하기 위한 새로운 방법을 제안합니다. 전문 용어 대신 일상적인 비유를 들어 쉽게 설명해 드리겠습니다.
🍕 피자를 주문할 때의 비유: "단순한 재료 목록 vs. 레시피의 연결고리"
소프트웨어를 만드는 과정은 거대한 피자를 만드는 것과 같습니다.
SBOM(소프트웨어 재료 명세서): 피자 가게가 사용하는 모든 재료 (토마토, 치즈, 페퍼로니, 도우 등) 의 목록입니다.
CVE(취약점): 이 재료들 중 일부가 상한 것이나 위험한 것일 수 있다는 경고입니다. (예: "이 페퍼로니는 세균이 있을 수 있음")
1. 기존 방식의 문제점: "상한 재료 하나하나만 체크하기"
지금까지 보안 전문가들은 이 목록을 볼 때, **"이 페퍼로니는 상했으니 위험, 저 치즈는 안전"**이라고 각각 따로따로 판단했습니다. 하지만 진짜 문제는 따로따로 있는 게 아닙니다.
실제 위험: "상한 페퍼로니"와 "약한 도우"가 만나서, 그리고 "잘못된 오븐 온도"가 더해지면, 개별적으로는 별거 아닌 것처럼 보이는 재료들이 합쳐져서 피자를 완전히 망가뜨리는 치명적인 공격 경로가 만들어집니다.
현재의 한계: 기존 도구들은 각 재료의 상태만 보고 "이건 위험해"라고 알려줄 뿐, **"이 재료들이 어떻게 연결되면 피자가 폭발할까?"**를 예측하지 못했습니다.
2. 이 논문이 제안하는 새로운 방법: "재료들의 관계를 그리는 지도"
저자들은 이 문제를 해결하기 위해 **SBOM 을 단순한 목록이 아니라 '관계 지도 (그래프)'**로 바꾸자고 제안합니다.
지도 그리기 (그래프 학습):
각 재료 (컴포넌트) 를 **노드 (점)**로, 재료 간의 관계 (어떤 재료가 어떤 재료에 들어가는지) 를 **선 (엣지)**으로 그립니다.
여기에 "상한 페퍼로니"라는 경고도 점에 붙입니다.
이제 우리는 **"상한 페퍼로니가 약한 도우와 연결되어 있나?"**를 한눈에 볼 수 있는 지도를 갖게 됩니다.
두 단계의 지능형 탐정:
첫 번째 탐정 (HGAT 모델): 이 지도를 보고 "어떤 재료가 실제로 위험한가?"를 빠르게 분류합니다. 단순히 재료 자체만 보는 게 아니라, 주변 재료들과 어떻게 연결되어 있는지를 보고 위험도를 판단합니다. (예: "이 치즈는 안전해 보이지만, 상한 페퍼로니 바로 옆에 붙어있으니 위험할 수 있어!")
두 번째 탐정 (MLP 모델): 과거에 실제로 피자가 망가진 사례 (공격 사례) 를 공부합니다. "상한 페퍼로니 + 약한 도우"가 함께 쓰였을 때 폭발했다는 기록을 바탕으로, **"앞으로 어떤 재료 조합이 폭발할까?"**를 예측합니다.
3. 왜 이것이 중요한가요? (실제 효과)
이 논문은 실제 데이터 (200 개의 피자 가게 메뉴) 를 가지고 실험했습니다.
결과: 단순히 재료 목록만 본다면 놓치기 쉬운 **연쇄적인 위험 (공격 사슬)**을 찾아내는 데 매우 효과적이었습니다.
핵심 통찰: 개별 재료의 상태만 보는 것은 불완전합니다. **"재료들이 어떻게 서로 연결되어 있는가?"**가 바로 해커가 피자를 망가뜨리는 열쇠입니다.
🚀 요약: 무엇을 바꾸려고 하나요?
과거: "이 재료는 나쁘고, 저 재료는 좋아." (개별 점수 매기기)
미래: "이 나쁜 재료들이 저 나쁜 재료와 손잡고 연결되면, 전체 시스템이 무너질 수 있어!" (관계와 연결고리 예측)
이 연구는 마치 피자 가게의 안전 관리를 할 때, 단순히 "재료가 상했나?"를 체크하는 것을 넘어, **"상한 재료가 어떤 순서로 섞이면 치명적인 독이 될까?"**를 미리 예측하여 사고를 막으려는 시도입니다.
이 기술이 발전하면, 소프트웨어 개발자들은 해커가 어떤 경로로 시스템을 뚫을지 미리 예측하고, 그 연결고리를 끊는 예방 조치를 취할 수 있게 될 것입니다.
1. 문제 정의 (Problem)
소프트웨어 공급망 보안 침해는 종종 단일 취약점이 아닌, 여러 취약한 구성 요소 간의 연쇄적 상호작용 (Cascaded Interactions) 으로 인해 발생합니다. 그러나 기존의 SBOM(소프트웨어 재고 목록) 기반 보안 분석 파이프라인은 다음과 같은 한계가 있습니다.
단일 CVE 중심 접근: 대부분의 도구 (Snyk, Trivy 등) 는 각 CVE(공통 취약점 및 노출) 를 독립적인 레코드로 처리하며, CVSS 점수나 개별 스코어에 의존합니다.
연쇄 공격 간과: 여러 구성 요소에 걸쳐 발생하는 취약점의 상호작용 (예: ProxyLogon 캠페인처럼 4 개의 취약점이 연결된 경우) 을 포착하지 못합니다.
데이터의 불연속성: 스캐너 출력물이 평면적인 취약점 목록으로 제공되어, 의존성 구조 내에서 발생하는 고차원적인 공격 경로를 추론하기 어렵습니다.
2. 방법론 (Methodology)
저자들은 SBOM 구조와 스캐너 출력을 의존성 제약이 있는 증거 그래프 (Dependency-constrained Evidence Graph) 로 재해석하고, 이를 기반으로 한 새로운 머신러닝 파이프라인을 제안합니다. 전체 아키텍처는 크게 4 단계로 구성됩니다.
가. 이종 그래프 구성 (Heterogeneous Graph Construction)
CycloneDX 형식의 SBOM을 이종 그래프 (Heterogeneous Graph) 로 변환합니다.
노드 유형: 소프트웨어 구성 요소 (Component), 취약점 (CVE), 취약성 유형 (CWE).
엣지 유형:
DEPENDS_ON: 구성 요소 간의 의존성 관계.
HAS_VULNERABILITY: 구성 요소와 CVE 간의 연결.
HAS_CWE: CVE 와 CWE 간의 연결 (현재 프로토타입에서는 구현 예정 단계).
노드에는 CVSS 점수, 의존성 메타데이터, 라이선스 정보 등 경량화된 특징 (Features) 이 포함됩니다.
나. 구성 요소 분류 (Component Classification via HGAT)
모델: 이종 그래프 어텐션 네트워크 (HGAT, Heterogeneous Graph Attention Network) 를 사용합니다.
목표: 그래프 구조를 학습하여 특정 구성 요소가 알려진 CVE 와 연관되어 있는지 (Has-any-CVE) 분류하는 타당성 검증 (Feasibility Check) 을 수행합니다.
메커니즘: 어텐션 메커니즘을 통해 의존성 엣지와 취약점 링크 등 다양한 엣지 유형을 가중치 있게 집계합니다.
다. 연쇄 공격 예측 (Cascade Prediction via MLP)
문제 정의: 제한된 학습 데이터 (문서화된 공격 체인) 를 고려하여, CVE 쌍 (CVE-pair) 링크 예측 문제로 접근합니다.
모델: 경량 다층 퍼셉트론 (MLP) 을 사용합니다.
특징: HGAT 임베딩 대신 NVD(국가 취약점 데이터베이스) 메타데이터에서 추출한 22 차원 특징 벡터 (CVSS 점수, 연도, 악용 여부, CWE 수 등) 를 사용합니다.
학습: 문서화된 35 개의 공격 체인에서 추출한 CVE 쌍을 양 (+) 샘플로, 무작위 쌍을 음 (-) 샘플 (비율 2:1) 로 사용하여 학습합니다.
라. 결과 매핑 (Projection & Inspection)
예측된 CVE 쌍을 SBOM 의존성 서브그래프에 투영하여, 실제 소프트웨어 구성 요소 간의 연결성을 확인하고 분석가의 검토를 위한 후보 체인을 생성합니다.
3. 주요 기여 (Key Contributions)
SBOM 기반 이종 그래프 파이프라인 제안: CycloneDX SBOM 을 유형화된 노드와 엣지를 가진 이종 그래프로 변환하는 프레임워크를 제시했습니다.
의존성 구조의 신호 검증: HGAT 를 통한 타당성 연구 (Ablation Study) 를 수행하여, 단순 노드 메타데이터만으로는 분류가 어렵고 의존성 구조 (Dependency Structure) 가 학습 가능한 중요한 신호임을 입증했습니다.
희소 데이터 기반 연쇄 예측: 제한된 공격 체인 데이터로도 MLP 를 통해 CVE 간 공조 악용 (Co-exploitation) 패턴을 학습하고 순위 매길 수 있음을 보였습니다.
분석가 중심 워크플로우: 문서화된 공격 증거를 SBOM 서브그래프로 매핑하여 분석가가 쉽게 검증하고 오류를 분석할 수 있는 프로토콜을 제안했습니다.
4. 실험 결과 (Results)
데이터셋: Wild SBOMs 공개 데이터셋에서 추출한 200 개의 Python 프로젝트 SBOM 과 35 개의 문서화된 공격 체인 (Seed set).
HGAT 성능 (구성 요소 분류):
정확도 (Accuracy): 91.03%
F1-Score: 74.02%
Ablation Study: 의존성 엣지 (DEPENDS_ON) 를 제거한 경우, 재현율 (Recall) 이 0 으로 떨어지며 모델이 의존성 구조에 크게 의존함을 확인했습니다.
MLP 성능 (CVE 쌍 예측):
ROC-AUC: 0.93
문서화된 체인 내 CVE 쌍과 무작위 쌍을 명확히 구분하는 능력을 입증했습니다.
5. 의의 및 향후 과제 (Significance & Future Work)
의의: 기존의 'CVE 점수 매기기' 패러다임을 넘어, 의존성 그래프 기반의 상호작용 학습으로 소프트웨어 공급망 보안을 전환하는 새로운 연구 방향을 제시했습니다. 이는 단일 취약점으로는 발견되지 않는 고위험 연쇄 공격을 조기에 탐지할 수 있는 가능성을 열었습니다.
한계 및 향후 과제:
현재 HGAT 와 MLP 모델이 분리되어 운영 중이며, 이를 엔드 - 투 - 엔드 (End-to-End) 로 연결하여 HGAT 임베딩을 MLP 입력으로 활용해야 합니다.
공격 체인 데이터의 부족으로 인한 일반화 능력 향상을 위해 체인 레벨 분할 (Chain-level splitting) 및 시계열 분할을 도입할 계획입니다.
SPDX 형식 SBOM 지원 확대, CWE 추출 활성화, LLM 기반 베이스라인 비교 등을 통해 연구 범위를 확장할 예정입니다.
이 논문은 소프트웨어 공급망 보안에서 머신러닝과 그래프 신경망 (GNN) 을 활용하여 복잡한 취약점 체인을 예측하는 초기 단계의 유망한 연구로 평가됩니다.