ミシガン大学とテキサス大学オースティン校の研究チームはOSや他のプログラムを危険にさらすことのないように、アプリケーションのポリシーを自動的に作成するツール「Abhaya」を開発した。脆弱性を突いたサイバー攻撃に対応できる。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
ミシガン大学は2020年11月17日(米国時間)、同大学のXinyu Wang教授がテキサス大学オースティン校との合同の研究チームにおいて、アプリケーションに向けたシステムコール(syscall)ポリシーの自動作成ツールを開発したと発表した。成果とまとめた論文は「2020 Object-Oriented Programming Systems, Languages and Applications Conference」(OOPSLA 2020)で優秀論文賞を受賞した。
サンドボックス化はアプリケーションを重要なシステムリソースや他のプログラムから隔離するソフトウェア管理方法だ。サンドボックス化によって追加されたセキュリティレイヤーは、マルウェアや有害なアプリケーションがシステムに悪影響を与えるのを防ぎ、あるコンポーネントの脆弱(ぜいじゃく)性が別のコンポーネントを侵害するために悪用されないように働く。
一般的なサンドボックスアプローチは、さまざまなアプリケーションが発行できるシステムコールの種類を制限することだ。サイバー攻撃では一般的に、システムを侵害している間に特殊なシステムコールを発行するからだ。システムコールポリシーを定義し、どのアクセスパターンが可能なのかを指定できる(SELinuxのような)フレームワークを備えるOSは少なくない。このルールを破ったアプリケーションは、速やかに停止される。
これらのフレームワークはシステムの攻撃対象領域を大幅に縮小する。だが、フレームワークのポリシーを手動で作成するのは時間がかかり、ミスが起こりやすい。その結果、多くのアプリケーションが、システムコールサンドボックスを使用していない。信頼できないユーザー入力も受け入れる一部のアプリケーションもその一例だ。
論文ではシステムコールサンドボックスがほとんど使われていない理由を3つ挙げている。
第1に、有用なポリシーを書くために開発者はサードパーティーによるライブラリ内のコードを含め、プログラムによって呼び出される可能性のある全てのシステムコール(と引数値)を特定する必要がある。
第2にアプリケーションが変更されるごとにポリシーを更新すべきかどうか判断しなければならず、継続的な努力が必要になるからだ。
第3にOSが異なるとポリシー設定用言語の構文とセマンティクスが大きく異なるため、クロスプラットフォームで動作するアプリケーションに向けてサンドボックスを構築し、維持することは難しいからだ。
研究チームは、こうしたシステムコールサンドボックスを使いやすくするため、アプリケーションのシステムコールポリシーを自動的に作成する技術を開発し、「Abhaya」と呼ぶツールにまとめ上げた。CやC++で記述されたプログラムのためのポリシーを生成できる。
具体的には静的コード分析とプログラム合成を利用してポリシーを作成し、システムコールへのアクセスをできるだけ制限しつつ、アプリケーションを誤って停止させないようにしている。
プログラムとプログラムが実行中に発行する必要があるシステムコールの分析に基づいて近似抽象化ポリシーを作り上げ、その後、OSのサンドボックス化ツールと互換性のあるポリシーに変換する。
AbhayaはLinuxとOpenBSDアプリケーションのポリシーを674種類作成できた。Abhayaが自動的に作成したポリシーは、この5年間に見つかったLinuxカーネルの権限昇格の脆弱性を突いた攻撃を、ほぼ全てブロックできた。開発者が作成したポリシーに対して競争力を発揮した他、手動で作成されたポリシーに含まれる、開発者も認めたバグを特定したケースもあった。
Copyright © ITmedia, Inc. All Rights Reserved.