@article{oai:ipsj.ixsq.nii.ac.jp:00198205, author = {石山, 泰地 and 荒堀, 喜貴 and 権藤, 克彦 and Taichi, Ishiyama and Yoshitaka, Arahori and Katsuhiko, Gondow}, issue = {3}, journal = {情報処理学会論文誌プログラミング(PRO)}, month = {Jul}, note = {近年,Use-After-Free(UAF)脆弱性を悪用した攻撃が数多く存在している.UAF脆弱性は解放済みのメモリ領域を参照しているダングリングポインタを使用することで発生し,これを悪用することで任意コードの実行や情報漏洩などが引き起こされる可能性がある.これまでCソースコードに対して高精度かつ低オーバヘッドでUAF脆弱性の悪用を防ぐ手法が多く提案されてきた.一方で,バイナリレベルでのUAF検出はオーバヘッドが大きく,リアルタイムでの保護に向かないものが多い.また,バイナリレベルではスタックフレームの解放に起因するUAFの検出も難しい.本発表ではバイナリコードを対象とした高速かつ正確なUAF検出手法を提案する.本手法はFreeSentryをバイナリコードを対象に再実装した上で,計装ツールへの最適化と,ポインタ追跡に使う命令とレジスタを限定することで高速化を達成した.また,call命令やret命令などを監視することでスタックに起因するUAFの検出も可能にした.検出精度について,自作の11のテストケースとNIST SAMATE benchmark suiteの38のテストケースで誤検出や検出漏れは発生しなかった.また,LAVAをUAF用に改造したものを使用して精度を確認した.オーバヘッドについて,gzipに本手法を適用すると実行時間は7倍程度になった., Use-After-Free (UAF) is a memory bug in which a (dangling) pointer to a freed memory objects is dereferenced. UAFs are a notorious source of many security vulnerabilities such as arbitrary code execution and information leakage. There have been proposed a number of efficient and precise detection techniques for UAFs. However, most of them are implemented via source-code instrumentation, limiting the range of code checked. Binary instrumentation-based UAF detectors are, on the other hand, neither efficient nor precise. Especially, they are too inefficient to be used as an online UAF detector, and not able to detect UAFs over stack frames. In this work, we propose an efficient and precise dynamic UAF detector based on binary instrumentation. We extend FreeSentry, a source-level UAF detector, to precisely check binary execution via monitoring stack frames, while taming runtime overheads by optimizing binary instrumentation and limiting registers over which to perform pointer-tracking. Our experiments with 18 small benchmarks and 38 NIST SAMATE benchmarks show that our approach incurs neither false positives nor false negatives. In addition, the runtime overhead imposed by our approach was about 7x for gzip.}, pages = {14--14}, title = {バイナリコードを対象とした高速かつ正確な動的Use-After-Free検出}, volume = {12}, year = {2019} }