정적 코드 분석을 이용한 방화벽 정책 이상 탐지
초록
본 논문은 방화벽 정책을 명령형 특수 언어로 간주하고, 이를 중간 표현 언어로 추상화한 뒤 정적 코드 분석 기법을 적용해 정책 이상(불일치, 도달 불가, 살아있는 변수 등)을 자동 검출하는 방법을 제시한다. 주요 기여는 기존 방화벽 언어의 제어 흐름 분석, 중간 규칙 언어 설계, Datalog 기반 정적 분석 구현이다.
상세 분석
이 논문은 방화벽 정책을 일반적인 프로그래밍 언어와 동일한 관점에서 바라보는 획기적인 접근을 시도한다. 먼저 Netfilter, PF, IPFW, IPFilter 등 주요 방화벽 플랫폼이 제공하는 제어 흐름 명령(ACCEPT, DROP, JUMP, CALL, RETURN, SET 등)을 체계적으로 분류하고, 이들 명령이 실제 정책 실행 시 어떤 흐름 그래프를 형성하는지를 상세히 분석한다. 이를 바탕으로 저자는 “Intermediate Rule Language”(IRL)라는 중간 언어를 정의한다. IRL은 필터링 조건, 대상 지정, 라벨, 변수, 추상 구문 등으로 구성되며, 각 방화벽 언어의 구문을 IRL의 구문으로 매핑하는 규칙을 제시한다. 특히 제어 흐름 전환(JUMP, CALL, RETURN)과 변수 할당(SET)을 명시적으로 표현함으로써, 정책 간의 상호 작용과 복잡한 서브루틴 호출 구조를 정형화한다.
정적 분석 단계에서는 전통적인 데이터 흐름 분석과 제어 흐름 분석을 결합한다. 저자는 “Minimal Combining Set of Intervals”(MCSI)라는 개념을 도입해 연속적인 주소·포트 구간을 최소 집합으로 압축하고, 이를 기반으로 도달 불가 코드(Unreachable Code)와 살아있는 변수(Live Variable) 분석을 수행한다. MCSI 계산 알고리즘은 구간 교차·합집합·차집합 연산을 반복하여 최적의 구간 집합을 도출한다. 이후 Datalog 규칙으로 표현된 CFG(제어 흐름 그래프)와 데이터 흐름 정보를 이용해 고정점 연산을 수행함으로써, 각 라벨에서 가능한 변수 정의·사용 관계와 정책 간의 충돌(Shadowing, Redundancy, Shadow Rule 등)을 자동으로 탐지한다.
구현 부분에서는 파서 모듈, 데이터 흐름 및 CFG 추출 모듈, 정적 분석 모듈을 각각 독립적인 컴포넌트로 설계하고, 전체 파이프라인을 Datalog 엔진에 연결한다. 파서는 다양한 방화벽 정책 파일을 IRL로 변환하고, CFG 추출 모듈은 라벨 기반 그래프를 생성한다. 정적 분석 모듈은 Datalog 프로그램을 실행해 MCSI 기반 구간 연산, 도달 불가 라벨 탐지, 살아있는 변수 분석 결과를 도출한다. 실험에서는 다섯 개의 실제 정책 예시를 대상으로 이상 탐지 정확도와 실행 시간을 평가했으며, 복잡한 서브루틴 호출 구조에서도 높은 탐지율을 보였다.
이 논문의 핵심 인사이트는 방화벽 정책을 프로그램처럼 취급함으로써 정적 코드 분석의 강력한 이론적 도구(데이터 흐름 분석, 제어 흐름 그래프, 고정점 연산)를 직접 적용할 수 있다는 점이다. 특히 IRL이라는 중간 언어가 다양한 방화벽 플랫폼을 통합적으로 모델링하도록 설계된 점은 향후 정책 자동 검증, 최적화, 형식 검증 도구 개발에 중요한 기반이 될 수 있다. 또한 Datalog 기반 구현은 선언적 쿼리와 효율적인 고정점 연산을 제공해 대규모 정책 집합에도 확장 가능함을 보여준다.
댓글 및 학술 토론
Loading comments...
의견 남기기