Skip to main content
QUICK REVIEW

[論文レビュー] ADsafety: Type-Based Verification of JavaScript Sandboxing

Joe Gibbs Politz, Spiridon Eliopoulos|arXiv (Cornell University)|Jun 25, 2015
Web Application Security Vulnerabilities参考文献 33被引用数 74
ひとこと要約

本論文では、言語ベースのWebサンドボックスである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.

研究の動機と目的

  • マッシュアップWebアプリケーションのセキュリティに不可欠なJavaScriptサンドボックスメカニズムの形式的検証の重要性に対処すること。
  • 形式的コードレビューに依存せず、実際のJavaScriptソースコードにおけるセキュリティ特性を検証できる、軽量でスケーラブルな型システムの開発。
  • ランタイムチェックと能力の弱体化を捉える型システムを用いて、ADsafeの安全性特性を形式的に定義・検証すること。
  • 体系的な型ベース検証を用いて、ADsafeフレームワークにおける以前に発見されていなかったバグや設計上の欠陥を特定・是正すること。

提案手法

  • サンドボックスライブラリで一般的なパターン(動的チェックやオブジェクトラッピングなど)をサポートする、一般向けJavaScriptを対象とした新規で整合性のある型システムの設計。
  • ADsafeのセキュリティ特性(能力の弱体化や直接的なDOMアクセスの防止など)を型システム内で形式的に規定。
  • ソースコード上で直接動作する静的検証器と型システムを統合し、軽量でありながら正確な検証を可能にした。
  • 型システムを用いて、ADsafeのランタイムライブラリにおける欠陥(例:DOM参照の誤ったラッピング、危険なコールバック処理)を検出。
  • ML-ARTおよび先行するJavaScript型システムから取り入れたフローチャーミングとオブジェクトモデリング技術を活用し、プロトタイプや関数オブジェクトといったJavaScriptの動的特徴を扱った。
  • 型システムの整合性を、JavaScript言語全体に対して証明し、すべての実行経路において型チェックの保証が成り立つことを保証した。

実験結果

リサーチクエスチョン

  • RQ1実世界のJavaScriptサンドボックスフレームワーク(ADsafeなど)のセキュリティ特性を形式的に検証できる型システムを設計することは可能か?
  • RQ2スケーラビリティや表現力の犠牲を伴わずに、JavaScriptにおいて能力の弱体化とランタイムチェックを効果的に符号化・強制できる型システムはどのように構築できるか?
  • RQ3形式的型ベース検証を通じて、ADsafeの実装における具体的なセキュリティ上の弱みは何か?
  • RQ4型ベース検証は、複雑なサンドボックスライブラリのセキュリティを確保するための手動コードレビューをどの程度代替できるか?

主な発見

  • ADsafety型システムは、ADsafeの意図されたすべてのセキュリティ特性(DOM参照の適切なラッピング、直接的な能力アクセスの防止など)を正常に検証した。
  • 検証プロセス中に、ADsafeのランタイムライブラリに以前に発見されていなかった複数のバグや設計上の欠陥(例:イベントコールバックの誤った処理、不適切なオブジェクトラッピング)が特定された。
  • 型システムは、ADsafeが望ましい情報フロー特性を正しく強制していないことを検出しており、データ漏洩の可能性を示すセキュリティ上のギャップを示唆した。
  • 検証プロセスにより、ADsafeの静的チェックツール(JSLint)だけでは不十分であることが判明した。これは、特定の動的セキュリティ違反を検出できないためである。
  • 型システムはJavaScript言語全体に対して整合的であることが証明され、型チェックに合格したすべてのプログラムが定義された安全モデル下で安全であるという形式的保証を得た。
  • このアプローチは、型ベース検証が実世界のサンドボックスコードにおいて実用的かつ効果的であることを示しており、手動レビューの代替としてスケーラブルな選択肢を提供した。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。