샌드박스
IT 위키
더 많은 작업
- Sandbox
- 보호된 영역 내에서 프로그램을 동작시키는 것으로, 외부 요인에 의해 악영향이 미치는 것을 방지하는 보안 모델
- 아이를 놀리는 모래밭(샌드 박스)에서 유래된 말이다.
- 외부로부터 받은 프로그램을 보호된 영역, 안에 가두고 나서 동작시킨다.
- 보호된 영역은 다른 파일이나 프로세스로부터는 격리되어 내부에서 외부를 조작하는 것은 금지된다.
NIST 용어집은 샌드박스를 잠재적으로 악성인 소프트웨어가 허가된 자원 외에는 시스템 자원에 접근하지 못하도록 막는, 제한되고 통제된 실행 환경으로 정의한다(CNSSI 4009 인용). 또 다른 정의는 신뢰할 수 없는 애플리케이션의 권한을 꼭 필요한 최소한으로 제한해 실행하며, 특히 파일 시스템과 네트워크 접근을 막는 시스템이라고 설명하고, 오래된 대표 예로 자바 애플릿을 든다.
정리하면 샌드박스는 두 가지 목적으로 쓰인다.
- 예방(격리): 신뢰할 수 없는 코드나 공격받기 쉬운 프로그램(브라우저, 문서 뷰어)을 가두어, 그 안에서 공격이 성공해도 시스템 전체로 번지지 않게 한다.
- 탐지(분석): 의심 파일을 격리된 환경에서 실제로 실행해 보고 그 행위를 관찰해 악성 여부를 판정한다.
| 유형 | 설명 | 예 |
|---|---|---|
| 브라우저 샌드박스 | 웹 페이지를 그리고 스크립트를 실행하는 렌더러 프로세스를 낮은 권한으로 가둔다. 렌더러가 공격당해도 파일 시스템이나 다른 프로세스에 직접 접근하지 못하고, 권한 있는 브로커 프로세스에 요청해야 한다. | 크롬 등 크로미움 기반 브라우저의 브로커·타깃 프로세스 구조, 사이트 격리 |
| 운영체제 샌드박스 | 운영체제가 프로세스 단위로 접근 가능한 자원을 제한하거나, 일회용 가상 환경을 제공한다. | Windows Sandbox(하이퍼바이저 기반의 일회용 경량 가상 머신, 닫으면 모든 내용이 삭제됨), 리눅스 seccomp·네임스페이스 |
| 애플리케이션(앱) 샌드박스 | 앱마다 격리된 저장 공간과 권한 집합을 주고, 다른 앱의 데이터나 시스템 기능은 사용자가 허락한 권한으로만 쓰게 한다. | 모바일 운영체제의 앱 격리, 데스크톱 앱 스토어 앱의 컨테이너 |
| 악성코드 분석 샌드박스 | 의심 파일을 가상 머신이나 에뮬레이터에서 실행하고 파일·레지스트리 변경, 프로세스 생성, 네트워크 통신을 기록해 악성 여부를 판정한다. | 이메일·웹 게이트웨이의 동적 분석 장비, 분석가용 격리 분석 환경 |
| 언어 런타임 샌드박스 | 언어 실행 환경이 코드가 쓸 수 있는 기능을 제한한다. | 자바 애플릿의 과거 보안 모델, 브라우저의 WebAssembly 실행 환경 |
| 원리 | 내용 |
|---|---|
| 격리 (isolation) | 프로세스, 메모리, 파일 시스템, 네트워크를 호스트와 분리한다. 샌드박스 안에서 바뀐 내용은 밖에 반영되지 않거나 끝나면 버려진다. |
| 제한 권한 (least privilege) | 샌드박스 안의 코드에는 필요한 최소 권한만 준다. 브라우저 샌드박스는 낮은 권한의 토큰, 낮은 무결성 수준, 작업 개체(job object) 제한 등을 겹쳐 쓴다. |
| 중개 (brokering) | 샌드박스 안에서 꼭 필요한 자원 접근은 권한 있는 브로커 프로세스가 정책을 확인한 뒤 대신 수행한다. |
| 가상화 (virtualization) | 하이퍼바이저나 에뮬레이터로 별도의 운영체제를 띄워 더 강한 경계를 만든다. 악성코드 분석 샌드박스와 Windows Sandbox가 이 방식이다. 가상화·하이퍼바이저 참고. |
| 행위 기록 | 분석 샌드박스는 실행 중의 시스템 호출, 파일·레지스트리 변경, 네트워크 연결을 모두 기록해 판정 근거로 쓴다. |
분석 샌드박스가 널리 쓰이자 악성코드도 샌드박스를 알아채고 숨는 기능을 갖추게 되었다. MITRE ATT&CK은 이를 가상화·샌드박스 회피(T1497, Virtualization/Sandbox Evasion)로 분류한다.
| 기법 | 설명 | 대응 |
|---|---|---|
| 환경 탐지 | 가상 머신 드라이버·프로세스·레지스트리 흔적, 분석 도구 존재, 적은 CPU 수나 메모리, 디스크 크기 같은 특징을 확인하고, 분석 환경이면 악성 행위를 하지 않는다. | 분석 환경을 실제 업무 PC처럼 꾸미고, 가상화 흔적을 줄인다. |
| 사용자 활동 확인 | 마우스 움직임, 클릭, 최근 문서, 브라우저 기록이 없으면 사람이 없는 분석 환경으로 판단한다. | 사용자 행동을 흉내 내는 자동화 기능을 쓴다. |
| 지연 실행 (시간 기반 회피) | 긴 대기 후에 실행하거나, 실행 전후의 시간을 재서 샌드박스가 시간을 빨리 감는지 확인한다. 분석 시간이 끝난 뒤에 악성 행위를 시작한다. | 분석 시간 연장, 대기 함수 처리 개선, 메모리·정적 분석 병행 |
| 조건부 실행 | 특정 국가 언어 설정, 특정 도메인 가입 여부, 특정 날짜 같은 조건을 만족할 때만 동작한다. | 대상 조직 환경과 비슷한 이미지로 분석 |
| 샌드박스 탈출 | 샌드박스 자체나 하이퍼바이저의 취약점을 이용해 밖으로 나온다. 브라우저 공격에서는 렌더러 취약점과 샌드박스 탈출 취약점을 연결하는 경우가 많다. | 신속한 패치, 다층 격리 |
- 샌드박스에서 "깨끗함" 판정을 받았다고 안전이 보장되지 않는다. EDR 같은 엔드포인트 탐지와 함께 써야 한다.
- 이메일 첨부 동적 분석: 메일 게이트웨이가 첨부 파일과 링크를 샌드박스에서 열어 보고, 악성 행위가 있으면 메일을 격리한다. 시그니처가 없는 신종·변종 악성코드와 제로데이 공격에 대응하는 대표적인 수단이다. 분석에 시간이 걸리므로 첨부를 지연 전달하거나 무해화(CDR)와 함께 쓴다.
- 웹 다운로드 검사: 웹 프록시가 내려받는 실행 파일을 샌드박스에 보낸다.
- 침해사고 대응·위협 분석: 분석가가 수집한 샘플을 격리된 환경에서 실행해 C2 주소, 생성 파일 같은 침해 지표(IoC)를 뽑아 위협 인텔리전스와 차단 정책에 반영한다.
- 위험한 작업 격리: 출처를 알 수 없는 파일을 열거나 테스트할 때 일회용 가상 환경에서 수행한다.
- CISSP 7.7은 샌드박스를 방화벽, IDS·IPS, 허용 목록, 허니팟, 악성코드 방지와 함께 탐지·예방 수단의 하나로 든다. 허니팟은 공격자를 끌어들여 관찰하는 미끼이고, 샌드박스는 의심 코드를 가두어 실행하는 환경이라는 점이 다르다.
- 샌드박스는 신뢰할 수 없는 코드를 격리된 제한 환경에서 실행한다. 목적은 피해 확산 방지(예방)와 행위 관찰(탐지) 두 가지이다.
- 시그니처 기반 백신이 못 잡는 신종 악성코드에는 샌드박스 기반 동적 분석이 알맞다.
- 악성코드는 가상 환경 탐지, 사용자 활동 확인, 지연 실행으로 샌드박스를 회피한다. 샌드박스 단독 의존은 오답이 되기 쉽다.
- 허니팟(공격자 유인·관찰)과 샌드박스(의심 코드 격리 실행)를 구분한다.
- 브라우저 샌드박스는 최소 권한과 격리를 프로세스 단위로 적용한 예이다.
- NIST CSRC Glossary: sandbox – NIST
- Virtualization/Sandbox Evasion (T1497) – MITRE ATT&CK
- Windows Sandbox – Microsoft Learn
- Chromium Sandbox design document – The Chromium Projects