← 기술 목록으로

함수 추상화 정확도 문제 분석·해결

코드 유사성 분석 도구의 함수 추상화 단계가 사실상 동일한 함수를 일관되게 식별하지 못하던 결함을, 원인 규명부터 내용 기반 해시 명명 로직 도입까지 해결

기간2023
소속래브라도랩스(LabradorLabs) · 데이터파트
역할데이터 엔지니어 · 원인 분석·해결 주도
C++Java코드 유사성 분석구문 분석(Parser)정규식해시 함수

1배경

코드 레벨 보안 분석 도구는 소스 코드를 함수 단위로 추상화(정규화)한 뒤 함수 시그니처를 비교해 유사 코드와 취약점을 탐지합니다. 그런데 이 추상화 단계에서 변수명·타입만 다를 뿐 사실상 동일한 함수가 매번 다른 시그니처로 생성되는 문제가 있었습니다.

2접근

원본 소스C++ / Java 등 다언어 함수
구문 분석함수 구조 파싱
추상화변수명·타입 정규화
내용 해시 명명함수 내용 기반 고유·일관 함수명
유사성 비교일관된 시그니처로 매칭

여러 언어의 소스로 심층 테스트를 수행해 원인을 좁혔습니다. 결과적으로 두 가지 결함이 확인됐습니다.

핵심 해결책은 익명 함수가 매번 다른 이름으로 처리되는 문제를, 함수 내용 기반 해시값으로 고유하고 일관된 함수명을 부여하도록 명명 로직을 개발·적용한 것입니다. 같은 내용이면 항상 같은 이름이 나오므로 동일 함수가 일관되게 식별됩니다.

3임팩트

추상화 정확성·일관성 향상 — 변수명·타입만 다른 동일 함수를 일관된 시그니처로 식별
유사 코드 탐지 강화 — 내용 기반 해시 명명으로 동일 로직을 안정적으로 매칭
취약점 분석 기반 강화 — 코드 레벨 취약점 분석의 정확도 향상

4역할

데이터 엔지니어로서 문제 재현 → 다언어 심층 테스트 → 원인 규명 → 해결 로직 설계·적용까지 주도했습니다. 표면적인 증상(불일치하는 시그니처)에서 출발해 구문 분석기와 정규식 로직이라는 근본 원인을 분리해내고, 익명 함수 명명을 내용 기반 해시로 대체하는 일반적 해법으로 마무리했습니다.

코드 유사성·취약점 분석 파이프라인의 정밀도 개선 작업의 일부로 진행.