reinforce:wikify - Batch 19: Static Analysis & Code Modeling (5 artifacts)
This commit is contained in:
@@ -1,46 +1,47 @@
|
||||
---
|
||||
id: P-REINFORCE-WIKI-DEV-CPG
|
||||
title: "코드 속성 그래프와 의미론적 분석 (Code Property Graph, CPG)"
|
||||
title: "코드 속성 그래프와 다차원 보안 분석 (Code Property Graph)"
|
||||
category: "10_Wiki/💻 Topics_Dev"
|
||||
status: verified
|
||||
canonical_id: ""
|
||||
aliases: ["CPG", "Code Property Graph", "코드 속성 그래프", "의미론적 코드 분석"]
|
||||
aliases: ["CPG", "Code Property Graph", "코드 속성 그래프", "다차원 코드 분석"]
|
||||
duplicate_of: ""
|
||||
source_trust_level: A
|
||||
confidence_score: 1.0
|
||||
tags: ["Analysis", "Security", "Graph_Theory", "Vulnerability", "Semantic_Analysis"]
|
||||
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, CPG)]]
|
||||
# [[코드 속성 그래프와 다차원 보안 분석 (Code Property Graph)]]
|
||||
|
||||
## 1. 개요
|
||||
코드 속성 그래프(Code Property Graph, CPG)는 소프트웨어 코드베이스의 구조와 의미를 다층적으로 분석하기 위해 고안된 데이터 모델이다. 추상 구문 트리(AST), 제어 흐름 그래프(CFG), 데이터 종속성 그래프(DDG) 등을 하나의 통합된 그래프 구조로 융합하여, 단순한 구문 검색을 넘어 코드 간의 복잡한 논리적 연결성과 보안 취약점의 악용 가능성(Exploitability)을 정밀하게 분석하는 데 사용된다.
|
||||
코드 속성 그래프(CPG, Code Property Graph)는 추상 구문 트리(AST), 제어 흐름 그래프(CFG), 프로그램 의존성 그래프(PDG)를 하나의 거대한 유향 그래프로 통합한 다차원 코드 모델이다. 개별적인 정적 분석 모델들의 한계를 넘어, 데이터 흐름과 제어 흐름, 구문 구조를 동시에 분석함으로써 복잡한 소프트웨어의 보안 취약점과 악용 가능성(Exploitability)을 고도로 정밀하게 판별할 수 있게 한다.
|
||||
|
||||
## 2. 핵심 계층 및 융합
|
||||
- **추상 구문 트리 (AST)**: 코드의 문법적 구조를 계층적으로 표현.
|
||||
- **제어 흐름 그래프 (CFG)**: 프로그램의 실행 경로와 분기 논리 표현.
|
||||
- **데이터 종속성 그래프 (DDG)**: 변수와 데이터가 프로그램 내에서 어떻게 전달되고 변환되는지 표현.
|
||||
- **융합의 가치**: 위 그래프들을 통합함으로써 "특정 사용자 입력(Data Flow)이 보안 검증 없이(Control Flow) 위험한 함수(AST)에 도달하는가?"와 같은 복잡한 쿼리를 효율적으로 처리 가능.
|
||||
## 2. 핵심 구성 및 통합 구조
|
||||
CPG는 소스 코드를 다음과 같은 다층적 관점에서 동시에 표현한다.
|
||||
- **구문 계층 (AST)**: 코드의 논리적인 구조와 문법적 관계 정의.
|
||||
- **제어 흐름 계층 (CFG)**: 실행 가능한 경로와 조건문에 따른 분기 논리 모델링.
|
||||
- **데이터 흐름 계층 (PDG)**: 변수와 데이터가 할당되고 참조되는 의존 관계 추적.
|
||||
- **심볼릭 및 타입 정보**: 변수의 타입 정보와 호출되는 함수의 사양을 그래프 노드 속성으로 포함.
|
||||
|
||||
## 3. 실전 적용 및 장점
|
||||
- **오탐(False Positive)의 획기적 감소**: 단순히 위험한 함수 호출을 찾는 것이 아니라, 해당 호출까지 도달하는 데이터의 경로와 제어 조건을 모두 검증하므로 분석 정확도가 비약적으로 향상됨.
|
||||
- **악용 가능성 중심 분석**: 수많은 결함 중 실제로 공격자가 남용할 수 있는 '실질적 위협'을 우선순위화하여 대응 리소스를 최적화.
|
||||
- **아키텍처 결함 탐지**: 서비스 간 통신이나 모듈 간 복잡한 상호작용에서 발생하는 논리적 오류를 그래프 탐색 알고리즘으로 식별.
|
||||
## 3. 엔지니어링 가치
|
||||
- **오탐지(False Positive)의 획기적 감소**: 단순히 위험한 함수가 사용된 것(AST 분석)을 넘어, 외부 입력값이 필터링 없이 해당 함수에 도달하는지(데이터 흐름 분석)와 실행 가능한 경로인지(제어 흐름 분석)를 통합적으로 검증.
|
||||
- **악용 가능성 중심 우선순위화**: 발견된 모든 결함 중 실제 공격 시나리오로 연결될 수 있는 지점만을 선별하여 보안 패치 효율성 극대화.
|
||||
- **복잡한 취약점 패턴 탐지**: 여러 파일과 함수를 가로지르는 복잡한 인젝션(Injection) 공격이나 인증 우회 로직을 그래프 횡단(Graph Traversal) 쿼리를 통해 효율적으로 식별.
|
||||
|
||||
## 4. 트레이드오프 및 주의사항
|
||||
- **높은 구현 및 학습 난이도**: CPG 모델을 구축하고 이를 검색하기 위한 전용 쿼리 언어(예: Joern, Cypher 등)를 숙달하는 데 가파른 학습 곡선이 존재함.
|
||||
- **리소스 집약적**: 수백만 줄의 대규모 코드베이스를 그래프로 모델링하고 인덱싱하는 과정에서 상당한 메모리와 연산 리소스가 소모됨.
|
||||
- **커스터마이징 오버헤드**: 특정 조직의 독자적인 코딩 패턴이나 보안 정책에 맞게 모델을 튜닝하는 과정에 고도의 정적 분석 전문 지식이 요구됨.
|
||||
- **가파른 학습 곡선**: CPG 쿼리 언어(예: Joern, Qwiet AI)를 익히고 조직에 맞는 커스텀 보안 규칙을 작성하기 위해 상당한 전문 지식과 학습 시간이 요구됨.
|
||||
- **모델 생성 비용**: 대규모 모노레포 전체를 CPG로 모델링하는 과정에서 방대한 메모리와 연산 자원이 소모됨. 점진적 생성(Incremental Building) 전략 필수.
|
||||
- **추상화 수준의 선택**: 너무 세밀한 모델링은 분석 속도를 늦추고, 너무 거친 모델링은 정밀도를 떨어뜨리므로 분석 목적에 맞는 그래프 밀도 조절 필요.
|
||||
|
||||
## 5. 지식 연결 (Related)
|
||||
- [[Static_Code_Analysis]]: CPG가 기반으로 하는 정적 분석 기술의 상위 범주.
|
||||
- [[SAST_Fundamentals]]: CPG가 가장 활발하게 적용되는 보안 분석 영역.
|
||||
- [[Data_Flow_Tracing]]: CPG 내부에서 데이터의 이동 경로를 추적하는 핵심 메커니즘.
|
||||
- [[Abstract_Syntax_Tree]]: CPG를 구성하는 가장 기초적인 구조 계층.
|
||||
- [[Control_Flow_Graph]]: CPG 내에서 코드의 실행 경로를 담당하는 계층.
|
||||
- [[Data_Flow_Analysis]]: 데이터의 유입과 오염을 추적하는 핵심 로직.
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
- **정보 상태**: 검증 완료 (Verified)
|
||||
- **출처 신뢰도**: A
|
||||
- **검토 이유**: 단순 구문 분석의 한계를 극복하고 코드의 깊은 맥락을 이해하기 위한 차세대 코드 분석 표준 모델 정립.
|
||||
- **검토 이유**: 단순 구문 분석을 넘어 런타임 악용 가능성까지 예측하는 최첨단 코드 모델링 기법의 표준 정립.
|
||||
|
||||
Reference in New Issue
Block a user