Skip to main content
QUICK REVIEW

[논문 리뷰] ADsafety: Type-Based Verification of JavaScript Sandboxing

Joe Gibbs Politz, Spiridon Eliopoulos|arXiv (Cornell University)|2015. 06. 25.
Web Application Security Vulnerabilities참고 문헌 33인용 수 74
한 줄 요약

이 논문은 ADsafe라는 언어 기반 웹 샌드박스에서 JavaScript 샌드박싱 성질을 검증하기 위한 유형 체계인 ADsafety를 제안한다. 저자들은 경량적이고 타당한 유형 체계에 직접적으로 보안 성질을 코딩하여 ADsafe의 안전 보장을 형식적으로 검증하고, 이전에 발견되지 않은 버그와 취약점을 밝혀냈다.

ABSTRACT

Web sites routinely incorporate JavaScript programs from several sources into a single page. These sources must be protected from one another, which requires robust sandboxing. The many entry-points of sandboxes and the subtleties of JavaScript demand robust verification of the actual sandbox source. We use a novel type system for JavaScript to encode and verify sandboxing properties. The resulting verifier is lightweight and efficient, and operates on actual source. We demonstrate the effectiveness of our technique by applying it to ADsafe, which revealed several bugs and other weaknesses.

연구 동기 및 목표

  • 마이크스업 웹 애플리케이션을 보호하는 데 필수적인 JavaScript 샌드박싱 메커니즘의 형식적 검증에 대한 임상적 필요성을 해결하기 위해.
  • 형식적 코드 리뷰에 의존하지 않고 실제 JavaScript 소스 코드에서 보안 성질을 검증할 수 있는 경량적이고 확장 가능한 유형 체계를 개발하기 위해.
  • 런타임 체크와 능력 감소를 포괄하는 유형 체계를 사용하여 ADsafe의 안전 보장을 형식적으로 정의하고 검증하기 위해.
  • 체계적인 유형 기반 검증을 통해 ADsafe 프레임워크의 이전에 발견되지 않은 버그와 설계적 약점을 식별하고 수정하기 위해.

제안 방법

  • 샌드박싱 라이브러리에서 흔히 사용되는 패턴, 예를 들어 동적 체크와 객체 래핑을 지원하는 일반 JavaScript를 위한 새로운 타당한 유형 체계를 설계하기 위해.
  • ADsafe의 보안 성질—예를 들어 능력 감소와 직접적인 DOM 접근 방지—를 유형 체계 내에서 형식적으로 명세하기 위해.
  • 소스 코드에 직접 작용하는 정적 검증기와 통합된 유형 체계를 통해 경량적이지만 정밀한 검증을 가능하게 하기 위해.
  • ADsafe의 런타임 라이브러리의 결함, 예를 들어 잘못된 DOM 참조 래핑과 안전하지 않은 콜백 처리 방식을 유형 체계를 통해 탐지하기 위해.
  • ML-ART 및 이전의 JavaScript 유형 체계에서 유도된 흐름 유형과 객체 모델링 기법을 활용하여 JavaScript의 동적 기능, 예를 들어 프로토타입과 함수 객체를 처리하기 위해.
  • 모든 가능한 실행에서 타당한 타당성 보장을 확보하기 위해 전체 JavaScript 언어에 대해 유형 체계의 타당성을 증명하기 위해.

실험 결과

연구 질문

  • RQ1실제 웹 샌드박싱 프레임워크인 ADsafe의 보안 성질을 형식적으로 검증할 수 있는 유형 체계를 설계할 수 있는가?
  • RQ2확장성이나 표현력을 희생시키지 않고도 JavaScript에서 능력 감소와 런타임 체크를 효과적으로 코딩하고 강제할 수 있는 유형 체계는 어떻게 설계할 수 있는가?
  • RQ3형식적 유형 기반 검증을 통해 ADsafe의 구현에서 어떤 특정 보안 취약점이 드러날 수 있는가?
  • RQ4복잡한 샌드박싱 라이브러리 보안을 확보하기 위해 유형 기반 검증이 수동 코드 리뷰를 얼마나 대체할 수 있는가?

주요 결과

  • ADsafety 유형 체계는 ADsafe의 의도된 모든 보안 성질을 성공적으로 검증했으며, 이는 DOM 참조의 적절한 래핑과 직접적인 능력 접근 방지 포함된다.
  • 검증 과정에서 ADsafe의 런타임 라이브러리에서 이전에 발견되지 않은 여러 버그와 설계 결함, 예를 들어 이벤트 콜백 처리 오류와 부적절한 객체 래핑이 드러났다.
  • 유형 체계는 ADsafe가 바람직한 정보 흐름 성질을 강제하지 못함을 탐지했으며, 이는 데이터 泄露 가능성에 대한 잠재적 보안 격차를 시사한다.
  • 검증 과정에서 ADsafe의 정적 체크기(JSLint)만으로는 부족함을 드러냈으며, 이는 일부 동적 안전 위반 사항을 포착하지 못함을 의미한다.
  • 유형 체계는 전체 JavaScript 언어에 대해 타당함을 증명하여, 타입 체킹을 통과한 모든 프로그램이 정의된 안전 모델 하에 안전함을 형식적으로 보장한다.
  • 이 접근법은 실세계 샌드박싱 코드에 대해 실용적이고 효과적이며, 수동 리뷰에 대한 확장 가능한 대안을 제공함을 입증했다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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