정보 보안 분야에서 미지의 공격(Unknown Attack)은 분류기(classifier)가 학습 단계에서 한 번도 접해본 적 없는, 완전히 새로운 유형의 공격을 의미합니다. 예를 들어, 침입 탐지 시스템이 DoS(서비스 거부) 공격에 대해 학습된 적이 없다면, 테스트 과정에서 DoS 공격이 나타났을 때 이를 '미지의 공격' 범주로 분류하게 됩니다.
이러한 미지의 공격으로부터 필수적인 수준의 보호를 제공하는 대표적인 기술로는 소프트웨어 결함 격리(Software Fault Isolation)와 프로그램 분석을 통한 침입 탐지(Intrusion Detection through Program Analysis)가 있습니다.
흥미로운 점은 이 두 기술 모두 프로그램의 정상적인 동작 자체에는 의존하지 않는다는 것입니다. 즉, 프로그램이 이미 침해당하고 변조되었더라도 이를 막아주는 2차 방어선(second layer of protection) 역할을 수행합니다. 물론 이러한 보안 시스템 자체에도 결함이 존재할 수 있습니다. 하지만 공격이 성공하려면 애플리케이션과 2차 보호 장치가 동시에 뚫려야만 합니다. 소프트웨어 버그는 지속적으로 패치되기 때문에, 단일 버그가 발견되는 경우보다 서로 다른 두 곳의 버그가 동시에 발견되고 악용될 가능성은 훨씬 낮습니다.
1. 소프트웨어 결함 격리(Software Fault Isolation, SFI)
SFI는 Wahbe 등이 처음 제안한 기술로, 동적으로 적재되는 임의의 프로그램 코드를 언어 중립적(language-neutral) 방식으로 자바(Java)와 유사한 샌드박스(sandbox) 안에 가두는 접근법입니다. JVM 기반 시스템과 달리, 소스 언어나 컴파일러의 종류에 구애받지 않고 적용할 수 있다는 것이 큰 장점입니다. 유일한 의미론적 제약 조건은 결함 격리 모듈 내부에서 동적 코드 생성(dynamic code generation)이 허용되지 않는다는 점입니다.
이 시스템은 각 모듈에게 더 큰 프로그램 안에서 독립적으로 격리된 자체 은닉 메모리 영역을 할당합니다. 그리고 정적 검사(static checks)를 통해 정적으로 판별 가능한 모든 점프(jump)가 해당 모듈 내부 또는 허용된 외부 함수로만 이루어지도록 보장합니다. 이것이 바로 샌드박스의 핵심 동작 원리입니다.
2. 프로그램 분석 기반 침입 탐지(Intrusion Detection by Program Analysis)
두 번째 기술인 호스트 기반 침입 탐지는 Wagner와 Dean이 처음 제안하고 실험했습니다. 이 IDS(침입 탐지 시스템)는 프로그램에 대한 정적 분석을 수행하여 함수 호출과 시스템 콜(system call)에 대한 추상적인 비결정론적 오토마타(automata) 모델을 생성합니다.
프로그램이 실행되는 동안 실제 시스템 콜 패턴을 오토마타 모델과 지속적으로 비교하고, 만약 프로그램이 모델에 위배되는 시스템 콜을 시도한다면 시스템은 침입자가 프로그램을 오염시켰다고 판단합니다.
샘플 입력이나 규칙 집합(rule set)에 기반하는 다른 침입 탐지 기법들과 달리, 이 방식은 거짓 양성(false positive) 비율이 0%임을 입증할 수 있다는 점이 특별합니다. 불필요한 경보를 원천적으로 차단할 수 있다는 의미이며, 나아가 침입 탐지 시스템이 시스템 콜 차단, 오염된 프로그램 종료, 관리자 경고 알림과 같은 자동 대응까지 수행할 수 있게 해줍니다.
거짓 양성이 없는 이유는 IDS의 프로그래밍적 특성에 있습니다. 이 시스템은 프로그램 내의 모든 합법적인 실행 경로를 보여주는 모델을 내장하고 있어, 탐지된 이상 징후가 프로그램의 원래 코드에서 비롯된 것이 아니라 바이러스나 공격자가 삽입한 코드에서 비롯되었음을 확실하게 보장할 수 있습니다.
마무리
미지의 공격은 사전에 학습되거나 알려진 패턴이 없기 때문에 기존의 시그니처 기반 방어만으로는 대응하기 어렵습니다. 소프트웨어 결함 격리와 프로그램 분석 기반 침입 탐지처럼 프로그램의 정상 동작 여부와 무관하게 작동하는 2차 방어 기술을 함께 활용하는 것이 효과적인 대응 전략입니다.