샌드박스(컴퓨터 보안)

Sandbox (computer security)

컴퓨터 보안에서 샌드박스는 실행 중인 프로그램을 분리하는 보안 메커니즘으로, 일반적으로 시스템 장애 및/또는 소프트웨어 취약성이 확산되지 않도록 하기 위한 것입니다.호스트 머신이나 operating [1]system에 해를 끼치지 않고 검증되지 않았거나 신뢰할 수 없는 서드파티, 공급업체, 사용자 또는 웹사이트에서 테스트되지 않았거나 신뢰할 수 없는 프로그램 또는 코드를 실행하기 위해 자주 사용됩니다.일반적으로 샌드박스는 스토리지 및 메모리 스크래치 공간과 같이 게스트 프로그램을 실행할 수 있도록 엄격하게 제어된 리소스 세트를 제공합니다.네트워크 액세스, 호스트 시스템을 검사하는 기능 또는 입력 디바이스로부터의 읽기는 일반적으로 허용되지 않거나 엄격하게 제한됩니다.

고도로 제어된 환경을 제공한다는 의미에서 샌드박스는 가상화의 구체적인 예로 간주될 수 있습니다.Sandboxing은 소프트웨어에서 [2]호스트 디바이스를 손상시키지 않고 바이러스 또는 기타 악성 코드를 포함할 수 있는 검증되지 않은 프로그램을 테스트하기 위해 자주 사용됩니다.

실장

샌드박스는 제한된 운영체제 환경에서 소프트웨어를 실행하여 프로세스가 사용할 수 있는 [3]자원(를 들어 파일 기술자, 메모리, 파일 시스템 공간 등)을 제어함으로써 구현된다.

샌드박스 구현의 예는 다음과 같습니다.

  • Seccomp, cgroupsLinux 네임스페이스를 기반으로 구축된 Linux 애플리케이션 샌드박스.특히 Systemd, Google Chrome, Firefox, Firejail에서 사용됩니다.
  • Android는 각 애플리케이션에 고유한 Linux 사용자 [4]ID를 할당하여 완전한 애플리케이션 샌드박스를 구현한 최초의 주류 운영 체제였습니다.
  • Apple App Sandbox는 Apple의 Mac App Store 및 iOS/iPadOS App Store를 통해 배포되는 앱에 필요하며, 서명된 다른 [5][6]앱에 권장됩니다.
  • Windows Vista 이후 버전에는 UAC(사용자 계정 제어)로 알려진 로우 모드 프로세스가 실행되어 있어 특정 디렉토리 및 레지스트리 키에만 쓸 수 있습니다.버전 1903에서 Windows 10 Pro는 Windows [7]Sandbox라고 하는 기능을 제공합니다.
  • Google Sandboxed API.[8]
  • 가상 시스템은 전체 호스트 컴퓨터를 에뮬레이트합니다.이 경우 기존 운영 체제는 실제 하드웨어에서처럼 부팅 및 실행될 수 있습니다.게스트 운영 체제는 호스트에서 기본적으로 작동하지 않으며 에뮬레이터를 통해서만 호스트 리소스에 액세스할 수 있다는 의미에서 샌드박스를 실행합니다.
  • 감옥: 네트워크 액세스 제한 및 제한된 파일 시스템 네임스페이스.감옥은 가상 [9]호스팅에서 가장 일반적으로 사용됩니다.
  • 규칙 기반 실행은 시스템이 정해진 [10]규칙에 따라 사용자 또는 프로그램에 대한 액세스 수준을 할당함으로써 사용자에게 시작되거나 (다른 응용 프로그램에 의해) 생성되거나 코드를 다른 응용 프로그램에 주입하고 네트워크에 액세스할 수 있는 프로세스를 완전히 제어할 수 있도록 합니다.파일/레지스트리 보안(파일 시스템/레지스트리 읽기 및 쓰기 가능한 프로그램)도 제어할 수 있습니다.이러한 환경에서는 바이러스와 트로이 목마가 컴퓨터를 감염시킬 가능성이 낮아집니다.SELinuxApparmor 보안 프레임워크는 Linux를 위한 두 가지 구현입니다.
  • 보안 연구자들은 말웨어 동작을 분석하기 위해 샌드박스 기술에 크게 의존하고 있습니다.연구자는 타깃 데스크톱을 모방하거나 복제하는 환경을 구축함으로써 멀웨어가 타깃 호스트를 어떻게 감염시키고 손상시키는지 평가할 수 있습니다.샌드박스 기술을 기반으로 [11]한 수많은 멀웨어 분석 서비스가 있습니다.
  • Google Native Client는 사용자의 운영 [12]체제에 관계없이 브라우저에서 컴파일된 C 및 C++ 코드를 효율적이고 안전하게 실행하기 위한 샌드박스입니다.
  • 기능 시스템은 프로그램 생성 시 불투명한 토큰이 부여되고 보유하고 있는 토큰에 따라 특정 작업을 수행할 수 있는 세분화된 샌드박스 메커니즘으로 간주할 수 있습니다.기능 베이스의 실장은, 커널로부터 유저 스페이스에 이르기까지, 다양한 레벨로 동작할 수 있습니다.기능 기반 사용자 수준 샌드박스의 예로는 웹 브라우저에서 HTML 렌더링을 들 수 있습니다.
  • 시큐어 컴퓨팅 모드(secomp)는 Linux 커널에 내장된 샌드박스입니다.strict 모드로 활성화 되어 있는 경우 seccomp에서는write(),read(),exit(),그리고.sigreturn()시스템 콜
  • HTML5에는 iframe[13]함께 사용하기 위한 "샌드박스" 속성이 있습니다.
  • Java 가상 시스템에는 Java 애플릿과 같은 신뢰할 수 없는 코드의 작업을 제한하는 샌드박스가 포함되어 있습니다.
  • .NET 공용 언어 런타임은 신뢰할 수 없는 코드에 대한 제한을 적용하는 코드 액세스 보안을 제공합니다.
  • 소프트웨어 장애 분리(SFI)[14]를 사용하면 모든 저장, 읽기 및 점프 어셈블리 명령을 격리된 메모리 세그먼트에 샌드박스하여 신뢰할 수 없는 네이티브 코드를 실행할 수 있습니다.

샌드박스의 사용 사례에는 다음과 같은 것이 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Goldberg, Ian; Wagner, David; Thomas, Randi & Brewer, Eric (1996). "A Secure Environment for Untrusted Helper Applications (Confining the Wily Hacker)" (PDF). Proceedings of the Sixth USENIX UNIX Security Symposium. Retrieved 25 October 2011.
  2. ^ Geier, Eric (2012-01-16). "How to Keep Your PC Safe With Sandboxing". TechHive. Retrieved 2014-07-03.
  3. ^ "Sandboxing Applications" (PDF). 2001. Retrieved 7 May 2013.
  4. ^ "Application Sandbox - Android Open Source Project". Retrieved 2021-04-02.
  5. ^ "About App Sandbox". developer.apple.com. Retrieved 2020-12-09.
  6. ^ "Security of runtime process in iOS and iPadOS". Apple Support. Retrieved 2021-04-04.
  7. ^ "Windows Sandbox". 2018-12-18. Retrieved 2010-01-07.
  8. ^ google/sandboxed-api, Google, 2020-12-08, retrieved 2020-12-09
  9. ^ "Auto-Sandboxing secure system". Retrieved 2015-01-30.
  10. ^ "Computer System Security and Access Controls". 1991. Archived from the original on 28 May 2013. Retrieved 17 May 2013.
  11. ^ "Native Client Sandbox – Untrusted x86 Native Code" (PDF). Retrieved 2015-01-03.
  12. ^ 네이티브 클라이언트 시작
  13. ^ Internet Explorer Team Blog. "Defense in Depth: Locking Down Mash-Ups with HTML5 Sandbox". IEBlog.
  14. ^ Wahbe, Robert (1993). "Efficient Software-Based Fault Isolation" (PDF).

외부 링크