--- id: P-REINFORCE-WIKI-DEV-CPG title: "코드 속성 그래프와 의미론적 분석 (Code Property Graph, CPG)" category: "10_Wiki/💻 Topics_Dev" status: verified canonical_id: "" aliases: ["CPG", "Code Property Graph", "코드 속성 그래프", "의미론적 코드 분석"] duplicate_of: "" source_trust_level: A confidence_score: 1.0 tags: ["Analysis", "Security", "Graph_Theory", "Vulnerability", "Semantic_Analysis"] raw_sources: ["Datacollector_Export_2026-05-02"] last_reinforced: 2026-05-02 github_commit: "" --- # [[코드 속성 그래프와 의미론적 분석 (Code Property Graph, CPG)]] ## 1. 개요 코드 속성 그래프(Code Property Graph, CPG)는 소프트웨어 코드베이스의 구조와 의미를 다층적으로 분석하기 위해 고안된 데이터 모델이다. 추상 구문 트리(AST), 제어 흐름 그래프(CFG), 데이터 종속성 그래프(DDG) 등을 하나의 통합된 그래프 구조로 융합하여, 단순한 구문 검색을 넘어 코드 간의 복잡한 논리적 연결성과 보안 취약점의 악용 가능성(Exploitability)을 정밀하게 분석하는 데 사용된다. ## 2. 핵심 계층 및 융합 - **추상 구문 트리 (AST)**: 코드의 문법적 구조를 계층적으로 표현. - **제어 흐름 그래프 (CFG)**: 프로그램의 실행 경로와 분기 논리 표현. - **데이터 종속성 그래프 (DDG)**: 변수와 데이터가 프로그램 내에서 어떻게 전달되고 변환되는지 표현. - **융합의 가치**: 위 그래프들을 통합함으로써 "특정 사용자 입력(Data Flow)이 보안 검증 없이(Control Flow) 위험한 함수(AST)에 도달하는가?"와 같은 복잡한 쿼리를 효율적으로 처리 가능. ## 3. 실전 적용 및 장점 - **오탐(False Positive)의 획기적 감소**: 단순히 위험한 함수 호출을 찾는 것이 아니라, 해당 호출까지 도달하는 데이터의 경로와 제어 조건을 모두 검증하므로 분석 정확도가 비약적으로 향상됨. - **악용 가능성 중심 분석**: 수많은 결함 중 실제로 공격자가 남용할 수 있는 '실질적 위협'을 우선순위화하여 대응 리소스를 최적화. - **아키텍처 결함 탐지**: 서비스 간 통신이나 모듈 간 복잡한 상호작용에서 발생하는 논리적 오류를 그래프 탐색 알고리즘으로 식별. ## 4. 트레이드오프 및 주의사항 - **높은 구현 및 학습 난이도**: CPG 모델을 구축하고 이를 검색하기 위한 전용 쿼리 언어(예: Joern, Cypher 등)를 숙달하는 데 가파른 학습 곡선이 존재함. - **리소스 집약적**: 수백만 줄의 대규모 코드베이스를 그래프로 모델링하고 인덱싱하는 과정에서 상당한 메모리와 연산 리소스가 소모됨. - **커스터마이징 오버헤드**: 특정 조직의 독자적인 코딩 패턴이나 보안 정책에 맞게 모델을 튜닝하는 과정에 고도의 정적 분석 전문 지식이 요구됨. ## 5. 지식 연결 (Related) - [[Static_Code_Analysis]]: CPG가 기반으로 하는 정적 분석 기술의 상위 범주. - [[SAST_Fundamentals]]: CPG가 가장 활발하게 적용되는 보안 분석 영역. - [[Data_Flow_Tracing]]: CPG 내부에서 데이터의 이동 경로를 추적하는 핵심 메커니즘. ## 🧪 검증 상태 (Validation) - **정보 상태**: 검증 완료 (Verified) - **출처 신뢰도**: A - **검토 이유**: 단순 구문 분석의 한계를 극복하고 코드의 깊은 맥락을 이해하기 위한 차세대 코드 분석 표준 모델 정립.