---
id: P-REINFORCE-WIKI-DEV-CPG
title: "코드 속성 그래프와 다차원 보안 분석 (Code Property Graph)"
category: Unified
status: verified
canonical_id: ""
aliases: ["CPG", "Code Property Graph", "코드 속성 그래프", "다차원 코드 분석"]
duplicate_of: ""
source_trust_level: A
confidence_score: 1.0
tags: ["Security", "Code_Modeling", "Static_Analysis", "Vulnerability", "Graph_Theory"]
raw_sources: ["Datacollector_Export_2026-05-02"]
last_reinforced: 2026-05-02
github_commit: ""
---

# [[코드 속성 그래프와 다차원 보안 분석 (Code Property Graph)]]

## 1. 개요
코드 속성 그래프(CPG, Code Property Graph)는 추상 구문 트리(AST), 제어 흐름 그래프(CFG), 프로그램 의존성 그래프(PDG)를 하나의 거대한 유향 그래프로 통합한 다차원 코드 모델이다. 개별적인 정적 분석 모델들의 한계를 넘어, 데이터 흐름과 제어 흐름, 구문 구조를 동시에 분석함으로써 복잡한 소프트웨어의 보안 취약점과 악용 가능성(Exploitability)을 고도로 정밀하게 판별할 수 있게 한다.

## 2. 핵심 구성 및 통합 구조
CPG는 소스 코드를 다음과 같은 다층적 관점에서 동시에 표현한다.
- **구문 계층 (AST)**: 코드의 논리적인 구조와 문법적 관계 정의.
- **제어 흐름 계층 (CFG)**: 실행 가능한 경로와 조건문에 따른 분기 논리 모델링.
- **데이터 흐름 계층 (PDG)**: 변수와 데이터가 할당되고 참조되는 의존 관계 추적.
- **심볼릭 및 타입 정보**: 변수의 타입 정보와 호출되는 함수의 사양을 그래프 노드 속성으로 포함.

## 3. 엔지니어링 가치
- **오탐지(False Positive)의 획기적 감소**: 단순히 위험한 함수가 사용된 것(AST 분석)을 넘어, 외부 입력값이 필터링 없이 해당 함수에 도달하는지(데이터 흐름 분석)와 실행 가능한 경로인지(제어 흐름 분석)를 통합적으로 검증.
- **악용 가능성 중심 우선순위화**: 발견된 모든 결함 중 실제 공격 시나리오로 연결될 수 있는 지점만을 선별하여 보안 패치 효율성 극대화.
- **복잡한 취약점 패턴 탐지**: 여러 파일과 함수를 가로지르는 복잡한 인젝션(Injection) 공격이나 인증 우회 로직을 그래프 횡단(Graph Traversal) 쿼리를 통해 효율적으로 식별.

## 4. 트레이드오프 및 주의사항
- **가파른 학습 곡선**: CPG 쿼리 언어(예: Joern, Qwiet AI)를 익히고 조직에 맞는 커스텀 보안 규칙을 작성하기 위해 상당한 전문 지식과 학습 시간이 요구됨.
- **모델 생성 비용**: 대규모 모노레포 전체를 CPG로 모델링하는 과정에서 방대한 메모리와 연산 자원이 소모됨. 점진적 생성(Incremental Building) 전략 필수.
- **추상화 수준의 선택**: 너무 세밀한 모델링은 분석 속도를 늦추고, 너무 거친 모델링은 정밀도를 떨어뜨리므로 분석 목적에 맞는 그래프 밀도 조절 필요.

## 5. 지식 연결 (Related)
- [[Abstract_Syntax_Tree]]: CPG를 구성하는 가장 기초적인 구조 계층.
- [[Control_Flow_Graph]]: CPG 내에서 코드의 실행 경로를 담당하는 계층.
- [[Data_Flow_Analysis]]: 데이터의 유입과 오염을 추적하는 핵심 로직.

## 🧪 검증 상태 (Validation)
- **정보 상태**: 검증 완료 (Verified)
- **출처 신뢰도**: A
- **검토 이유**: 단순 구문 분석을 넘어 런타임 악용 가능성까지 예측하는 최첨단 코드 모델링 기법의 표준 정립.
