Java向けヒープに対する不正参照のページ保護による検出
スポンサーリンク
概要
- 論文の詳細を見る
Java仮想機械にまつわる障害の原因の1つに,Java仮想機械が管理するヒープに対する不正な書き換えがある.不正な書き換えの原因は大きく分けて2つある.1つはJava仮想機械の実現が含むバグであり,もう1つはJavaで記述したプログラムから呼び出す,C言語で記述したネイティブライブラリが含むバグである.Java仮想機械を対象とした障害解析では,障害の原因が不正な書き換えである場合,まず最初に,書き換えの原因がJava仮想機械の実現にあるのか,あるいはネイティブライブラリにあるのか判断し,バグを含むと推定したプログラムの開発部署に障害解析を依頼する必要がある.この判断は必ずしも容易なものではないが,判断を誤ると,障害解析の長期化といった問題が生じてしまう.そこで我々は,この問題の解決を目的として,ページ保護を活用して,スレッドがネイティブライブラリを実行している際には,Java仮想機械が管理するヒープを参照不能にする機能を実装した.実装にあたっては,個々のスレッドごとに参照可能なメモリを設定するために,Java仮想機械だけでなく,オペレーティングシステム(具体的にはLinux)も改変した.実装した機能によれば,バグがネイティブライブラリ中にあるのか否か容易に推定可能になる.なぜなら,実装した機能を使ってJava仮想機械が管理するヒープを保護すれば,ネイティブライブラリ中にあるバグからの不正参照に際して,即座にページトラップが発生し,バグの所在が明かになるからである.実装した機能の実用性を検討するために,機能の利用にともなって生じるオーバヘッドの大きさを,実用的なアプリケーションを模したベンチマークであるSPECjvm98やSPECjbb2000を使って評価した結果,相乗平均で3.8%になることが分かった.
- 一般社団法人情報処理学会の論文
- 2006-10-15
著者
関連論文
- Javaにおけるコンテナ向けキャストの除去
- Java向け動的コンパイラによる冗長なインスタンス変数参照の削除
- Java向け動的コンパイラによる冗長なBox化の削除
- Java向けヒープに対する不正参照のページ保護による検出
- 脆弱性を考慮したJava向け動的コンパイラの可搬な設計(セキュリティ基盤技術)
- 脆弱性の動的検知機能との連携を考慮した構造化例外処理の設計
- スレッド別ごみ集めにおけるライトバリアの高速化
- Java2Cトランスレータにおける可搬性のオーバヘッド
- 組込み機器向けJava2Cトランスレータにおける2返戻値法を使った例外処理の実現
- Java2Cトランスレータにおける例外処理の実現
- Java向け静的コンパイラによる仮想メソッド呼び出しの高速化
- Javaにおける静的コンパイル済みコードのリンク方法
- Java向け静的コンパイラによるクラス間最適化
- Java向けごみ集めの基本処理の高速化