비밀 채널 (Covert Channel)을 방지하지 않는다는 것은 특정 보안 모델이나 시스템이 정보 흐름을 통제하는 데 있어서 의도되지 않은(Unintended) 통신 경로를 통한 정보 유출을 막을 수 없다는 것을 의미합니다.
이는 정보보안 모델의 기밀성 (Confidentiality) 목표를 달성하는 데 있어 치명적인 약점입니다.
🔍 비밀 채널의 개념 및 발생 원리
1. 비밀 채널 (Covert Channel)이란?
비밀 채널은 보안 정책에 의해 통제되거나 감시되도록 설계되지 않은 경로를 통해 정보를 전송하는 통신 수단입니다.
- 통상적인 채널 (Overt Channel): 이메일, HTTP 통신처럼 시스템이 명시적으로 인지하고 통제하는 정보 통신 경로입니다.
- 비밀 채널 (Covert Channel): 시스템의 자원(Resource) 상태 변화나 시간(Timing)을 이용하여 정보를 암호화하고 전송합니다. 이는 시스템이 통제하는 접근 통제 메커니즘의 사이드 이펙트를 악용합니다.
2. 비밀 채널을 방지하지 못하는 이유
가장 유명한 기밀성 중심 모델인 Bell-LaPadula Model (BLP)의 한계를 설명할 때 이 문제가 자주 언급됩니다.
BLP 모델은 명시적인 읽기/쓰기 접근(Read/Write Access)에 대한 규칙(공리, Axiom)을 정의하여 기밀성을 보호합니다.
- BLP의 한계: BLP는 정보의 양이나 정보가 흐르는 방식 자체에 대해서는 통제하지 못합니다. 예를 들어, BLP가 정의한 규칙을 위반하지 않으면서도, 시스템 자원의 가용성이나 프로세스의 실행 시간 같은 부수적인 요소를 이용하여 정보를 전달하는 것을 막지 못합니다.
📂 비밀 채널의 두 가지 유형
비밀 채널은 정보를 전달하는 매커니즘에 따라 크게 두 가지로 분류됩니다.
1. 저장 채널 (Covert Storage Channel)
공유되는 시스템 자원의 상태 변화를 이용하여 정보를 전달합니다.
- 원리: 높은 보안 등급의 프로세스(송신자)가 공유 자원의 상태를 변경하고, 낮은 보안 등급의 프로세스(수신자)가 그 상태 변화를 읽어 정보를 해독합니다.
- 예시: 파일 잠금(File Lock) 상태 이용.
- 송신자 (High):
0을 보내고 싶으면 파일 A를 잠그고, 1을 보내고 싶으면 잠금을 해제합니다.
- 수신자 (Low): 파일 A에 접근을 시도하여, 접근이 거부되면 (Locked)
0으로 해석하고, 성공하면 (Unlocked) 1로 해석합니다.
2. 시간 채널 (Covert Timing Channel)
시스템 자원의 사용 속도(타이밍)를 이용하여 정보를 전달합니다.
- 원리: 높은 보안 등급의 프로세스가 CPU 사용량, 디스크 접근 속도 등을 의도적으로 변화시키고, 낮은 보안 등급의 프로세스가 이 속도 변화를 감지하여 정보를 해독합니다.
- 예시: CPU 부하 이용.
- 송신자 (High):
0을 보내려면 CPU를 일정 시간 과부하시키고, 1을 보내려면 CPU를 쉬게 합니다.
- 수신자 (Low): 자신의 프로세스 실행 속도(지연 시간)가 느려지면
0으로, 정상적이면 1로 해석합니다.
🔒 방지하지 못한다는 것의 시사점
비밀 채널을 방지하지 못하는 모델은 형식적으로는 안전하다고 증명될 수 있지만, 실제 시스템 구현에서는 BLP가 의도하지 않은 방식으로 기밀 정보가 낮은 등급의 사용자에게 유출될 수 있다는 것을 의미합니다.
따라서 높은 보안 등급 시스템은 BLP와 같은 모델 외에도, Non-Interference Model처럼 간섭 자체를 방지하는 모델을 적용하거나, TCB를 작게 설계하여 시스템 자원의 모든 접근을 감시하는 메커니즘을 추가해야 합니다.
OSCP를 준비하시는 관점에서, 이러한 비밀 채널은 펜테스트 시 데이터 추출(Exfiltration)을 위한 중요한 공격 경로가 될 수 있습니다.