@article{oai:ipsj.ixsq.nii.ac.jp:00081298, author = {荒堀, 喜貴 and 権藤, 克彦 and 前島, 英雄 and Yoshitaka, Arahori and Katsuhiko, Gondow and Hideo, Maejima}, issue = {3}, journal = {情報処理学会論文誌}, month = {Mar}, note = {ネットワークプログラムなどの重要なシステムにおいて,境界違反は深刻な脆弱性となりうるため,(C言語の)境界検査手法は現在まで継続的に提案されている.それらのうち,実用コードとの互換性が高くかつ誤検出率の低い手法は,実行時に全有効オブジェクトの境界をheap領域上の表を用いて管理する手法である.しかし,この手法は現状,シグナル処理中に深刻な互換性の損失または検査精度の低下を引き起こしてしまう.これらの問題を回避するために,我々は(1)間接シグナル処理,(2)検査バッファリングと呼ぶ2つの技術からなる検査制御方式を提案する.間接シグナル処理は検査対象プログラムの実行コンテキストを追跡管理し,検査バッファリングはシグナルハンドラ内の検査コードの実行をハンドラの終了まで保留する.我々は提案方式の実装と評価実験を行った.実験の範囲内で,ApacheやSendmailなどのシグナル処理を含む実用Cプログラムに対し,提案方式は互換性を維持したまま高精度な境界検査を実現できた., For important systems such as network programs, boundary errors can be the source of severe vulnerabilities so that bounds checking techniques (for C) have been continuously proposed. Among them, the only approach to maintain high backwards compatibility and low false-positive rate is the one which uses heap-allocated tables to dynamically track the bounds of every valid object. However, this approach seriously loses compatibility or decreases accuracy during the handling of signals. To avoid these problems, we propose a scheme for controlling checks that consists of two techniques: (1) indirect signal handling, which keeps track of the execution context of the checked program, and (2) check buffering, which suspends the execution of check code within a signal handler until the handler finishes. We have implemented our scheme and conducted experimental evaluation. Our experimental results show that, without losing compatibility, our scheme was able to perform bounds checks precisely on real C programs including Apache and Sendmail which employed signal handlers.}, pages = {1150--1165}, title = {競合回避機構を備えた高互換かつ高精度な境界検査手法}, volume = {53}, year = {2012} }