Skip to main content
QUICK REVIEW

[論文レビュー] Finding Tizen security bugs through whole-system static analysis

Daniel Song, Jisheng Zhao|arXiv (Cornell University)|Apr 22, 2015
Advanced Malware Detection Techniques参考文献 39被引用数 6
ひとこと要約

この論文では、Tizen(消費者デバイス向けLinuxベースのオープンソースプラットフォーム)におけるセキュリティ脆弱性を検出するため、LLVM上で構築された包括的システム静的解析フレームワークを提示する。LLVMに精密な情報フロー解析および制御フロー解析を拡張することで、システムライブラリにおけるセキュリティチェックの欠落やアプリケーション内の危険なデータフローを特定し、未発見の脆弱性を同定した。これらの脆弱性は、パッチが適用されていなければエクスプロイトの原因となる可能性がある。

ABSTRACT

Tizen is a new Linux-based open source platform for consumer devices including smartphones, televisions, vehicles, and wearables. While Tizen provides kernel-level mandatory policy enforcement, it has a large collection of libraries, implemented in a mix of C and C++, which make their own security checks. In this research, we describe the design and engineering of a static analysis engine which drives a full information flow analysis for apps and a control flow analysis for the full library stack. We implemented these static analyses as extensions to LLVM, requiring us to improve LLVM's native analysis features to get greater precision and scalability, including knotty issues like the coexistence of C++ inheritance with C function pointer use. With our tools, we found several unexpected behaviors in the Tizen system, including paths through the system libraries that did not have inline security checks. We show how our tools can help the Tizen app store to verify important app properties as well as helping the Tizen development process avoid the accidental introduction of subtle vulnerabilities.

研究の動機と目的

  • Tizenの大きなC/C++コードベース、特にセキュリティチェックが欠落している可能性のあるシステムライブラリにおいて、微細なセキュリティ脆弱性を検出する課題に対処すること。
  • アプリの情報フロー解析とシステムライブラリの制御フロー解析を両方サポートする、スケーラブルで高精度な静的解析パイプラインの開発。
  • Tizenアプリストアのパイプラインに静的解析を統合し、権限ベースのチェックに依存せず、誤検出を低減したアプリのセキュリティ特性の自動検証を可能にすること。
  • 重要なセキュリティチェックを回避するパスを特定することで、システムレベルのセキュリティ強化を支援すること。
  • LLVMのフロントエンドを介して他の言語へも拡張可能な、汎用的かつ再利用可能な解析インfraストラクチャの構築。

提案手法

  • Tizenのネイティブコードベース全体をカバーする包括的システム解析を実現するため、LLVMインfraストラクチャ上にカスタム静的解析エンジンを構築した。
  • 継承や関数ポインタの使用といった複雑なC++の特徴を高精度に処理できるように、LLVMの解析機能を拡張した。
  • ユーザーの連絡先などのソースからネットワーク呼び出しなどのシンクへと至る、敏感なデータの漏洩を検出するため、全プログラム情報フロー解析を実装した。
  • セキュリティチェックを回避する実行パスを特定する目的で、システムライブラリに対する制御フロー解析を実施した。
  • 誤検出を低減するために、信頼できるコードアノテーションを限定的に使用し、開発者による実用的導入を促進した。
  • オブジェクト固有のデータフローをモデル化するために、ヒープSSA形式を活用し、従来のタンタッキングトラッキングよりも精度を向上させた。

実験結果

リサーチクエスチョン

  • RQ1包括的システム静的解析アプローチは、セキュリティチェックを回避するTizenシステムライブラリにおける未発見の脆弱性を検出できるか?
  • RQ2LLVMベースの情報フロー解析は、誤検出を最小限に抑えつつ、Tizenアプリケーションにおける危険なデータフローをどの程度効果的に特定できるか?
  • RQ3静的解析は、関数ポインタの上書きやバッファオーバーランといった、危険なC/C++のイディオムに起因する脆弱性をどの程度検出できるか?
  • RQ4Tizenアプリストアのパイプラインに静的解析を統合することで、権限ベースのチェックに依存せず、セキュリティ検証を改善できるか?
  • RQ5Tizenのネイティブコードベースのような大規模で複雑なシステムを解析するにあたり、静的解析をどの程度スケーラブルかつ高精度に実現できるか?

主な発見

  • 解析により、セキュリティチェックが欠落しているTizenシステムライブラリ内の複数のパスが同定され、攻撃可能な脆弱性の可能性が示された。
  • その後の手動解析で、上位レベルのソフトウェアレイヤーがしばしばこれらの欠落したチェックを補填しており、実際にはエクスプロイトが不可能であることが確認された。
  • 情報フロー解析により、ユーザーの連絡先などの機微なソースから、ネットワークなどの信頼できない出力先へ至る非自明なデータフローが成功裏に特定され、プライバシーリスクを引き起こす可能性があることが判明した。
  • 拡張されたLLVMインfraストラクチャは、継承や関数ポインタといったC++の特徴を高精度に処理でき、正確な静的解析を可能にした。
  • ツールチェインは強力なスケーラビリティを示し、Tizenコードベースの大幅な部分を完全に解析可能であった。
  • 著者らは、解析の高精度さが、将来的に動的ディスpatchを静的呼び出しに置き換える最適化を可能にする可能性があると予想している。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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