macOS 앱 샌드박스가 사용자를 보호하는 방법

2007년에 도입되어 2012년부터 의무화된 샌드박스는 macOS가 탈취된 앱이 초래할 수 있는 피해를 제한하기 위해 사용하는 도구입니다. Apple은 “앱 샌드박스가 귀하의 앱에 대한 공격을 방지하지는 않지만, 성공적인 공격이 초래할 수 있는 피해를 최소화합니다.”라고 말합니다. macOS 앱 샌드박스는 애플리케이션이 초래할 수 있는 문제를 제한함으로써 사용자를 보호합니다.

또한 읽어보세요: Windows에서 안전하게 지켜줄 최고의 샌드박스 애플리케이션 4가지

macOS 앱 샌드박스란?

각 앱은 자신만의 공간인 “샌드박스”를 갖습니다. 애플리케이션이 자신의 샌드박스를 넘어가고 싶다면 운영 체제에 허가를 요청해야 합니다. 샌드박스 설정에 따라 운영 체제는 애플리케이션의 요청을 거부하거나 승인하며, 요청을 완료하기 위해 가능한 한 구체적이지 않은 정보를 제공합니다.

about-sandboxing

자동차를 생각해 보세요. 운전자는 잠금 방지 브레이크, 에어백, 충격 흡수 구역 등 여러 보안 기능에 의해 보호받습니다. 2007년 앱 샌드박스가 도입되었을 때, 유사한 컴퓨터 시스템은 존재하지 않았습니다. 도입 발표에서 질문했듯이, 컴퓨터의 안전벨트는 어디에 있었나요? 샌드박스는 자동차가 운전자를 보호하는 것처럼 사용자를 보호합니다: 실패를 손상 감소 시스템으로 대응합니다. 악의적인 활동이나 코딩 오류로 인해 발생하든, 피해는 줄어듭니다.

샌드박스가 앱의 행동을 제한하기 때문에 개발자의 자유를 제한할 수 있습니다. 샌드박스 앱은 더 느리게 실행되고 개발하는 데 더 오랜 시간이 걸립니다. Mac의 막대한 능력 덕분에 샌드박스 제한은 다양한 앱의 호환성에 큰 영향을 미칠 수 있습니다. 그 결과, 파워 유저들은 성능이나 기능 문제로 인해 종종 샌드박스를 벗어난 앱을 선택하게 됩니다.

앱 샌드박스는 어떻게 작동하나요?

샌드박스는 최소 권한 원칙에 기반합니다. 간단히 말해, 시스템은 필요한 작업만 수행할 수 있습니다. 시스템의 각 부분이 선언된 목표만 완료하도록 제한함으로써 앱이 탈취될 가능성을 줄입니다. 예를 들어, 손전등 앱이 연락처 목록에 접근할 필요는 없습니다.

앱은 운영 체제의 허가가 있어야만 샌드박스를 넘어갈 수 있습니다. macOS의 “저장 및 열기” 대화 상자를 생각해 보세요. 앱은 샌드박스 내에서 하드 드라이브의 파일 시스템 리소스에 직접 접근할 수 없습니다. 예를 들어, “~/Documents”에서 열린 패널을 그릴 수 없습니다. 대신, 앱은 NSOpenPanelNSSavePanel 클래스를 사용하여 Powerbox API에 접근해야 합니다.

macos-app-sandboxing-powerbox-design

애플리케이션은 Powerbox 내부에서 무슨 일이 일어나고 있는지 직접 볼 수 없습니다. 오직 열리거나 저장된 파일만 앱에서 접근할 수 있습니다. 이렇게 하면 앱이 불필요한 위험 없이 중요한 기능을 수행할 수 있습니다.

이 기능은 권한(com.apple.security.files.user-selected.read-write)에 의해 활성화됩니다. 앱 개발자는 앱이 수행하는 작업을 선언하는 권한을 설정합니다. 선언된 권한에 따라 운영 체제는 애플리케이션에 적절하게 제한된 기능 수준을 허용합니다.

이 사고 과정은 앱 샌드박스 모델과 메커니즘의 전체를 뒷받침합니다: 앱은 의도를 선언하고 위험한 작업을 수행하기 위해 운영 체제 수준의 상사에게 허가를 요청해야 합니다.

샌드박스 앱과 비샌드박스 앱

2012년 6월 1일부터 Mac App Store를 통해 배포되는 모든 서드파티 애플리케이션은 샌드박스화되어야 합니다. 샌드박스는 광범위한 앱 기능을 허용하지만, Mac App Store 앱은 종종 비샌드박스 구성 요소보다 더 제한적입니다. 일부 개발자는 직접 다운로드를 위한 완전한 기능의 앱과 Mac App Store를 위한 제한된 버전의 두 가지 버전을 유지하기도 합니다. 샌드박스 개발의 복잡성 덕분에 애플리케이션에 새로운 기능을 추가하는 것은 더 어렵습니다 – 그 기능이 운영 체제에 의해 허용되는 경우라면 말입니다.

샌드박스 앱은 Mac App Store 배포의 이점을 얻을 수 있지만, 우리가 그것을 얼마나 가치 있게 생각하는지 짐작할 수 있습니다. 샌드박스는 보안 권한으로 확장될 수도 있습니다. 앱이 스스로 접근성 권한을 활성화할 수는 없지만, 사용자에게 그렇게 요청할 수 있습니다.

macos-security-privacy-permissions-hero

어떤 앱이 샌드박스화되어 있는지 보려면 활동 모니터를 열고 열 제목을 마우스 오른쪽 버튼으로 클릭하여 “샌드박스”를 창에 추가하세요.

macos-app-sandboxing-activity-monitor-view

샌드박스에서 결코 존재할 수 없는 앱도 있습니다. 사실, 샌드박스는 다양한 가치 있는 사용 사례를 방지합니다. 샌드박스는 애플리케이션 간의 통신, 관찰 또는 수정 등을 방지하여 애플리케이션 간의 상호 작용을 크게 제한합니다. TextExpander와 같은 시스템 전체 단축키는 완전히 금지되며, 그 수준의 기능은 샌드박스에서 허용될 수 없습니다.

결론

유망하긴 하지만, macOS 앱 샌드박스는 잘 실행되지 않았습니다. 이는 속도와 향상된 기능과 같은 Mac 앱의 고유한 판매 포인트를 제한했습니다. 샌드박스를 벗어난 앱은 거의 항상 더 능력 있고 빠릅니다. 이 파워 유저의 관점에서, 내가 가장 많이 사용하는 앱은 비샌드박스 앱입니다. TextExpander, SnagIt, TotalFinder와 같은 앱은 모두 내 일상 업무에 필수적입니다. 유사한 광범위한 회피를 피하기 위해, 미래의 보안 시스템은 투명성과 균형을 이루는 유연성과 힘이 필요합니다.

이미지 출처: Apple