몇 달전에 데몬팀 지원으로 제로콘 2018 에 다녀왔었습니다.

제로콘 2018 에서는 주로 제로데이, 원데이 취약점들에 대한 발표를 주로 봤었습니다.
(아직은 모두 이해하기에는 부족한 실력을 가지고)

Sandbox?

발표 중에 자주 나온 용어가 바로 Sandbox 인데, 어디서 들어봤던 용어같으면서도 확실히는 모르겠어서 찾아보게 되었습니다.

먼저 Sandbox 라는 용어 자체는 아이들을 모래밭(Sandbox) 안에서만 놀도록 하는 것이 유래가 되었다고 합니다.

이 유래 그대로 컴퓨터 보안에 적용하여, 악성 프로그램으로 의심되는 프로그램을 따로 격리된 영역 안에서 구동되도록 하는 것입니다.

이렇게 하면 만약 이 프로그램이 악성코드라면, 이 격리된 영역 만 복구하는 등의 좀 더 손쉬운 처리가 가능하게 됩니다.

Sandboxie

그 구현체의 예로 Sandboxie 라는 것이 있는데, 공식 사이트에 다음과 같은 그림으로 설명하고 있습니다.

Sandboxie

Java 의 샌드박스

Java 는 샌드박스를 초창기인 JDK 1.0 에서부터 지원하고 있었습니다. 외부에서 받은 프로그램을 자바 가상머신(JVM; Java Virtual Machine) 위에서 동작시켜 프로그램의 폭주나 악성 바이러스의 침투를 막습니다.

자바의 샌드박스는 온라인 애플릿은 허용된 프로그램만 시스템 리소스에 접근을 가능하도록 하여 자원을 보호합니다.

그러나 해커들은..

그러나 이를 가만히 보고만 있을 해커들이 아닙니다. 해커들은 이 샌드박스를 막거나 뚫기 위하여 특정 Sandbox 코드를 탐지하여 일정 시간동안 또는 아예 프로그램을 실행하지 않는 방법을 사용하는 악성코드를 만들었습니다.
(일부 시스템에서는 일정시간동안 악성 동작을 하지 않으면 샌드박스에서 본 시스템으로 이동하는 방법을 사용하였기 때문입니다.)

References

Wikipedia, IT World Blog, Sandboxie