オペレーティングシステムのソフトウェアバグからアプリケーションの実行を保護する手法に関する研究

 
髙山 献
セコム(株)IS研究所 研究職
 
キーワード
オペレーティングシステム(OS) ソフトウェアバグ 信頼性

[背景]OSクラッシュでアプリケーションが停止し実行状態を失う

[問題]クラッシュ後のOS・アプリケーションの実行状態は信用できない
[貢献]OSの機能に依存しないアプリケーション実行状態の取得と保護


 プログラムに不具合はつきもので.それはコンピュータの根幹を管理しているオペレーティングシステム(OS)も同じである.たとえばオープンソースOSのLinuxでは,プログラムの修正を行うパッチというものが1時間に数個という速さで生成されている.パッチの適用をせず放置すると,バグを含んだコードを実行してOSがクラッシュしたり,脆弱性をついた攻撃を受けてコンピュータが乗っ取られたりといったことが起こり,コンピュータを安心して使うことができなくなる.パッチを適用することでOSの中で発見されたバグを修正することができるが,OSにアップデートを適用するためにはコンピュータ全体を再起動することが一般的で,再起動中は稼働させていたアプリケーション(App)が停止してしまうというジレンマがある.この2つの問題を同時に解決するために,本研究では3つの手法を提案する.

 1つ目の手法で,OSがAppの実行状態を破壊してしまうこと,失ってしまうことを防ぐ.OSよりも高いハードウェアの特権を持ち,ソースコードも短くOSよりも信頼しやすい仮想マシンモニタ(VMM)を導入し,Appの実行状態をVMMから保護する.本来OSはAppのメモリにも直接アクセスすることができるため,不具合によってプログラマが意図しない挙動をしてしまったOSがAppのメモリ内容を破壊してしまうということが起こり得る.そこでメモリはOSが使用しているものとAppが使用しているものとに分けることができるということを利用し,Appが使用しているメモリはOSからアクセスできないようVMMがハードウェアの設定を行う.これにより,たとえバグを含んだOSであってもAppのメモリ内容を破壊することができなくなる.

 2つ目の手法で,OS内に存在するAppの実行状態を再起動後に復元可能にする.Appは動作中にOSに対してさまざまな要求を出しており,その要求の結果はOSの内部にも保存される.Appがどのような要求を出したのか,その結果OSがどのような挙動をしたのかということを記録しておくことで,OS内にあるAppの実行状態をOS外から推測することができる.OSの再起動を行った後,これらの情報からOS内のデータオブジェクトを再構築することで,1つ目の手法で保存しておいたAppのメモリ内容と整合性を取りつつOS内のデータを復元することができる.

 3つ目の手法で,OSが発行したI/Oを記録しAppの挙動と付き合わせることで,再起動後に発行するべきI/O命令を決定することができる.Appはディスク装置への書き込みやネットワーク通信をOSに要求するが,実際のハードウェア操作は非同期で行われる場合が多い.そのためOSがハードウェアを操作する前にクラッシュしてしまうと,Appからの要求は完了しているにもかかわらずハードウェアは操作されないということが起こり得る.Appが要求を出したにもかかわらず完了していないI/Oを記録しておくことで,クラッシュ後に再発行してAppの実行状態とハードウェアの状態の整合性を取る.

 論文で提案する手法はLinuxやXenといった実際に使われているソフトウェアに実装を行った.実際にメモリ破壊を伴うOSカーネルクラッシュから,memcachedなど実用されているプログラムを保護することができた.


 

(2019年6月12日受付)
 
取得年月日:2019年3月
学位種別:博士(工学)
大学:東京農工大学



推薦文
:(システムソフトウェアとオペレーティング・システム研究会)


プログラムに不具合(バグ)はつきものです.それはOSも同じで,バグの影響でOSがダウンしてしまうと,可動している全アプリが停止してしまいます.この論文では,OSが再起動したとしても,アプリを継続稼働する技術を提案しています.この技術は,OSがダウンしてもゲームなどを引き続き楽しめる基礎技術です.


研究生活


「誰もが安心してコンピュータを使えるようになる」そういう願いでコンピュータの研究を始め,行き着いた先が「安定して稼働するコンピュータ」でした.使いたいときに使える,既知のバグを解消している,異常終了しても直前の状態から復旧できる,そういったプログラムを作ることはできないかと考え,OSを対象に選びました.大学4年間や修士課程での学びよりもっと知識量も増えて,問題の解決案をいくつも考えられるようになり,その中から実現できるもの,効率が良いものを選んでいくことができるようにもなります.ぜひ学びを進め,誰かの役に立ちたい,まだ誰もできていないことをやりたい,そういう思いを実現できる人になってください.博士課程での学びや出会いは,その大きな助けとなります.