Skip to main content
QUICK REVIEW

[논문 리뷰] SafeJS: Hermetic Sandboxing for JavaScript

Damien Cassou, Sté́phane Ducasse|arXiv (Cornell University)|2013. 09. 16.
Security and Verification in Computing참고 문헌 5인용 수 3
한 줄 요약

SafeJS는 가상 DOM(VDOM)을 사용하여 웹 워커 내에서 신뢰할 수 없는 스크립트를 격리함으로써 자바스크립트에 대한 보안적인 샌드박싱 솔루션을 제공한다. 이는 실제 DOM에 직접 접근할 수 없도록 하며, 문자 기반의 메시지 전달과 구성 가능한 정책을 통해 보안을 강화한다. 이는 산업 현장에서 외부 스크립트의 안전한 실행을 성공적으로 가능하게 한다.

ABSTRACT

Isolating programs is an important mechanism to support more secure applications. Isolating program in dynamic languages such as JavaScript is even more challenging since reflective operations can circumvent simple mechanisms that could protect program parts. In this article we present SafeJS, an approach and implementation that offers isolation based on separate sandboxes and control of information exchanged between them. In SafeJS, sandboxes based on web workers do not share any data. Data exchanged between sandboxes is solely based on strings. Using different policies, this infrastructure supports the isolation of the different scripts that usually populate web pages. A foreign component cannot modify the main DOM tree in unexpected manner. Our SafeJS implementation is currently being used in an industrial setting in the context of the Resilience FUI 12 project.

연구 동기 및 목표

  • 외부 스크립트가 예상치 않게 메인 DOM에 접근하거나 수정할 수 있는 위험을 해결하기 위해, 웹 메이스업에서 신뢰할 수 없는 자바스크립트를 실행할 때 발생하는 보안 위험을 해결한다.
  • 기존 솔루션들이 코드 재작성이나 제한된 자바스크립트 서브셋에 의존함으로써 호환성에 악영향을 미치는 점을 극복한다.
  • 완전한 스크립트 호환성을 유지하면서도 강력한 격리 보장을 제공하는, 안전하고 프로덕션 환경에서 사용 가능한 샌드박싱 메커니즘을 제공한다.
  • 메인 문서나 사용자 데이터의 무결성을 훼손하지 않으면서도 제3자 스크립트를 웹 애플리케이션에 안전하게 통합할 수 있도록 한다.

제안 방법

  • 신뢰할 수 없는 자바스크립트 코드를 전용 웹 워커 내에서 실행시켜, 메인 스레드 및 DOM으로부터 본질적으로 격리된 상태로 운영한다.
  • 사용자 정의 정책에 따라 허용된 작업만 허용하는, 표준 DOM을 모방한 SafeJS 가상 DOM(VDOM)을 구현한다.
  • 워커와 메인 스레드 간의 문자 기반 메시지 전달을 통해 DOM 업데이트를 전달하여, 직접적인 객체 참조나 공유 상태를 방지한다.
  • 실제 DOM에 적용하기 전에 모든 제안된 DOM 업데이트를 보안 정책에 따라 검증하며, 악성 스크립트는 무시하거나 워커 종료를 통해 차단할 수 있다.
  • 파일 시스템 접근 및 C++ 종속성을 피하기 위해, jsdom을 수정하여 브라우저 호환성과 비차단성을 확보한 VDOM의 비서버 기반 구현체를 구축한다.
  • 클라이언트 사이드 실행 환경과의 호환성을 보장하기 위해, 비동기 모듈 로딩을 위해 RequireJS를 활용한다.

실험 결과

연구 질문

  • RQ1스크립트 자체를 수정하지 않고도 웹 브라우저에서 신뢰할 수 없는 자바스크립트 스크립트를 안전하게 격리할 수 있는 방법은 무엇인가?
  • RQ2반사적 언어인 자바스크립트와 같은 동적 언어에서 강력한 격리 보장을 달성할 수 있는 아키텍처 패턴은 무엇인가? 특히 반사 기능이 간단한 접근 제어를 우회할 수 있는 상황에서 말이다.
  • RQ3서버 사이드 종속성이 없는 클라이언트 사이드 환경에서 표준 준수와 보안을 동시에 확보할 수 있는 가상 DOM의 구현은 가능한가?
  • RQ4격리된 스크립트와 메인 페이지 간의 통신을 어떻게 제어하여 데이터 유출이나 부적절한 DOM 조작을 방지할 수 있는가?
  • RQ5성능과 기존 웹 애플리케이션과의 호환성을 확보하면서도, 프로덕션 수준의 완전한 샌드박싱 시스템을 구축하는 것은 가능한가?

주요 결과

  • SafeJS는 웹 워커와 가상 DOM을 활용하여 신뢰할 수 없는 자바스크립트 스크립트를 성공적으로 격리함으로써, 실제 DOM에 직접 접근하는 것을 방지하고 데이터 泄露 위험을 제거한다.
  • SafeJS VDOM은 수정된 비차단 버전의 jsdom을 기반으로 하며, DOM Level 3을 완전히 구현한 브라우저 호환성 있는 구현체이다.
  • 사용자 정의 정책(예: 읽기 전용, 읽기/쓰기 가능)을 통해 외부 스크립트가 대상 DOM 요소에서 수행할 수 있는 작업을 제어할 수 있다.
  • 위험한 업데이트는 감지되어 구성에 따라 차단되거나 워커 종료로 이어지며, 이는 강력한 보안 보장을 보장한다.
  • 이 구현체는 Resilience FUI 12 프로젝트 내에서 산업 현장에 도입되어 실제 적용 가능성과 프로덕션 준비 상태를 입증했다.
  • 이 접근 방식은 기존 자바스크립트 코드와 완전한 호환성을 유지하며, 샌드박싱을 위해 신뢰할 수 없는 스크립트를 수정할 필요가 없다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.