@article{oai:ipsj.ixsq.nii.ac.jp:00239375, author = {大森, 卓 and 佐藤, 将也 and 山内, 利宏 and 谷口, 秀夫 and Taku, Omori and Masaya, Sato and Toshihiro, Yamauchi and Hideo, Taniguchi}, issue = {9}, journal = {情報処理学会論文誌}, month = {Sep}, note = {仮想計算機モニタによるシステムコールの検知において検知箇所のアドレスは,OSバージョンの更新により再計算が必要となる.また,アドレス空間のランダム化によりカーネル起動処理前に計算できない.我々はこれまでに,x86-64のCPUで動作するLinuxを対象に,カーネル起動処理前の計算によらず,ゲストOSのメモリ解析により検知箇所を推定する手法を提案した.本稿では,複数OSに対応した推定手法の実現を目的とし,FreeBSD,NetBSD,およびOpenBSDにおいても検知箇所を推定する手法について述べる.複数OSへの対応における3つの課題を示し,これらに対処する.1つ目の課題は,ページテーブルの切替えであり,SWAPGS命令とCR3切替え命令を探索対象に加えることにより,セグメント切替えとページテーブル切替えを考慮し探索する.2つ目の課題は,検知箇所として用いる命令の決定であり,探索対象の命令の種類を拡大し,かつ,オペランドを含めた探索を行うことにより,誤推定を抑制する.3つ目の課題は,エントリポイントから連続する処理の外におけるスタック切替えであり,エントリポイントから連続するメモリ領域の外でスタック切替えが実行されることを考慮して,探索対象の命令の順序を決定し,検知箇所を推定する.また,評価により,提案手法の有効性を示す., For monitoring system calls by a virtual machine monitor, the monitoring program needs to recalculate the hook point address due to changes of system call processing or address space layout randomization. For example, OS updates may change the processing of system calls and the address space layout randomization changes the starting address in each boot. We previously proposed a method to estimate a hook point in Linux by memory analysis on x86-64 CPUs rather than pre-calculation. In this paper, we extend our previous method to FreeBSD, NetBSD, and OpenBSD. The first challenge is page table switching. We search instructions considering segment switching and page table switching. The second challenge is determination of the instruction to be used as the hook point. We suppress misestimation by expanding the types of instructions to be searched for and including operands. The third challenge is stack switching outside of consecutive processes from the entry point. We determine the order of instructions to be searched, considering that the stack switching is executed outside contiguous memory from the entry point. The verification results show that the proposed method estimates hook points on various OSes with small overhead and no misestimation.}, pages = {1374--1385}, title = {仮想計算機モニタによる複数OSに対応したシステムコール検知箇所推定手法}, volume = {65}, year = {2024} }