ベイジアンフィルタによる脆弱性情報の選別に基づく
ネットワーク不正侵入警報用フィルタの処理精度向上
加藤 高男1, 塙 雅典2,杉山 仁3, 中村
一彦2
1山梨大学 大学院
医学工学総合教育部 工学領域 修士課程 電気電子システム工学専攻
2山梨大学 大学院 医学工学総合研究部 工学学域 情報システム工学系
3 山梨大学 総合情報処理センタ
1. はじめに
今日インターネットが組織や経済を支える社会基盤として認知されている. 一方で, ネットワーク経由でコンピュータへ不正にアクセスし, 秘匿情報の獲得やコンピュータの不正使用などを行う行為(以下「不正侵入」, なお不正侵入を単に攻撃と記す場合がある)が非常に重大な問題となっている.
不正侵入の多くは, オペレーティングシステム(以下「OS」)やアプリケーションの脆弱な部分(以下「セキュリティホール」, 又は単に脆弱性と表す)を探り当て, 攻撃プログラムを実行することで侵入を果たすようだ. セキュリティホールには, 各ベンダが用意する修正プログラムをインストールすることで対策が取られる. しかしセキュリティ企業のSecuniaの統計結果[1]によると, ソフトウェアの脆弱性を修正しないまま使用しているユーザが95%強にまで及ぶ調査結果もあり, 脆弱性に対する認知度が非常に低いのが現状である. また独立行政法人情報処理推進機構の情報セキュリティ事象被害状況調査報告書[2]によると, 企業における情報セキュリティ対策管理の社内体制は, ネットワークの管理者がセキュリティ管理を兼任で任されている割合が非常に高く, 高い頻度で報告されるセキュリティ情報を追いかけ, その都度対策を施していくことは決して容易な事ではない.
こうした情勢の中で, 昨今組織のセキュリティは企業統治に着目し, 組織内で使用しているソフトウェア全てに必要となるセキュリティパッチがインストールされているかなど, ソフトウェアの資産管理によって管理されるケースもある. その一方で, 不正侵入が行われた事実を知ることを目的とした, ネットワーク侵入検知システムが広く利用されるようになってきた.
そこで昨年の総合情報処理センタ研究報告において, ネットワーク侵入検知システムであるSnort[3]が発するアラートから, 重要性が高い「真に危険なアラート情報」のみを通知するRealAlertシステムについて報告した. 前報告では, RealAlertシステムの試験運用結果として, 修正プログラム情報の収集法の改善に MBSA(Microsoft
Baseline Security Analyzer)[4]の脆弱性検査リストを導入したことと, 疑似攻撃による実際に有効な攻撃に対するRealAlertシステムの危険性判別結果について報告した. しかし, MBSAに基づく検査では, MBSAがサポート対象外とする脆弱性が多数確認され, これら全ての脆弱性は未検査であった. そこで本報告では, 未検査の脆弱性にも対応できるように, 新たにマイクロソフト社のWebページ情報の収集と, 脆弱性の検査プログラムの改善を行い, 再度評価した結果について述べる.
2. RealAlertシステムの概要[5][6]
RealAlertシステムは, 監視クライアントのセキュリティ対策状況からネットワーク侵入検知システムが発するアラートをフィルタリングするシステムである. RealAlertシステムの特徴は, ネットワーク侵入検知システムにオープンソースとして広く利用されているSnortを利用すること, また監視対象をクライアントOSとして一般的に用いられているWindows系OSに絞り調整を行っていること, 必要な情報をインターネットから収集することなどが挙げられる. 図1にRealAlertシステムの概略図を, 図2にその全体像を示す.
図1: RealAlertシステムの概略図
図2: RealAlertシステムの全体像
RealAlertシステムは, サーバ部とクライアント部に分けることができ, それぞれの機能ごとに3つのサブシステムに分けて実装を行っている. サーバ部において情報の収集と, クライアントとの情報交換を行う役割を担うのがManagerである. 同じくサーバ部において, Snortのアラートから脆弱性の有るコンピュータへの攻撃情報のみを抽出する部分をFilterと呼ぶ. 一方, クライアント部で脆弱性の検査を行う部分がWatcherとなる. (詳細は既報[5][6]を参照).
3.
ベイジアンフィルタの導入
脆弱性の検査は, MBSAの検査リストに基づき各脆弱性を修正するセキュリティパッチの実態となる, ファイルの存在とそのバージョンの比較によって判定を行っていた. しかしMBSAが脆弱性検査の対象としているOS及びサービスパックはWindows 2000 SP4以降のOSとコンポーネントであり, それ以前の脆弱性に関しては脆弱性有無の検証の対象外となっている. 図3にSnortが検知できるWindowsの脆弱性全202件(MS07までを対象)に対しMBSAの検査リストを基に, 検査できる脆弱性数を示す. MBSAでは半数以上が非検査対象となっており, これらの脆弱性に関しては, 実際に脆弱なのかも分からないため全て判別不可となってしまっていた.
図3: Snortアラートに対しMBSAが検査可能な脆弱性数
そこでMBSAの検査リスト情報と共にマイクロソフト社のWebページから更なる情報収集を行った. マイクロソフト社では, マイクロソフト社製品の脆弱性につけられる識別IDのBulletinIDごとに, その脆弱性の影響を受けるOS, アプリケーションとセキュリティパッチ導入時に登録されるレジストリキーをWebページで公開している. しかしレジストリキーを取得するにあたり, Webページによって記述構造が異なり, 構造解析では非常に困難であることを確認している. そこでベイジアンフィルタによる自然言語解析から, 各OSごとに脆弱であるBulletinIDに対するWebページの選別を行った.
図4: Webページの選別例
ベイジアンフィルタ導入の狙いは, BulletinIDとその脆弱性を持つOSとの対応付けを行うことを目的としている. 図4に示すように, マイクロソフト社のWebページでは各BulletinIDに対し, その脆弱性を持つOSごとに情報が記載されている. BulletinIDと脆弱なOSの対応はWebページを視認することで容易に分離することが可能であるが, 対象が莫大で, 逐次脆弱性が報告されるため人手による対応は困難である. そこでこの対応を取る手段としてベイジアンフィルタを導入した.
ベイジアンフィルタはベイズの定理に基づき, ある事象の発生確率を評価する手法で, 電子メールのスパム判定用フィルタ[6]として広く用いられている. ベイジアンフィルタを実行するに当り, 次の2つを条件とした. ただし各OSごとに, あるOSがBulletinIDに対し脆弱なら, そのBulletinID情報を扱うWebページを「脆弱Webページ」, 逆に非脆弱なら, そのBulletinID情報を扱うWebページを「非脆弱Webページ」と表す.
¨
特定の単語は脆弱Webページ中に高頻度に出現する
¨
それ以外の単語は非脆弱Webページ中に高頻度に出現する
従って検査するWebページ中の単語を, 脆弱/非脆弱Webページ中の単語と比較することで, そのWebページが脆弱Webページなのか選別出来る. そこで, 比較用に脆弱/非脆弱Webページをあらかじめ分離し, Webページ中の各単語の出現頻度をデータベース(以下「コーパス」)として作成した. またコーパス作成に際し, 次の2つを条件とした.
¨
HTML構造のタグをコーパスに含めない
¨
MS07-050までのWebページをコーパスに使用
図5にWindows XPに着目して作成したコーパス中の単語の出現頻度例を示す.
図5: Windows XP用コーパスデータ例
図5は, 脆弱Webページの全197ページ, 非脆弱Webページの全394ページ中に出現した各単語の総数を示している. 両コーパスにおいて「the」, 「to」という単語が最も出現頻度が高かった. また, 特定の単語「XP」, 「SQL」, 「IIS」に着目すると, XPは脆弱Webページにより多く出現し, SQLやIISといった, サーバ用アプリケーションを表す単語は非脆弱Webページにより多く出現する傾向が見られた.
次に, 実際にWebページに対し脆弱/非脆弱Webページを選別する計算過程を示す.
(1)
式(1)は, 各単語の脆弱Webページ確率を算出する. ここでgiは非脆弱Webページ用コーパス中に単語wiが出現した回数, biは脆弱Webページ用コーパス中にwiが出現した回数, nunvulは非脆弱Webページ用コーパスに含めたWebページの総数, nvulは脆弱Webページ用コーパスに含めたWebページの総数である. p(wi)を算出後, 各単語wiの出現数で重み付けを行う.
(2)
ここでxは全単語でのp(wi)の平均値, sはxの予測に与える強さで0.001とした. nは単語wiの出現回数である. そして各単語ごとの脆弱Webページ確率f(wi)から結合確率を算出する.
Pが脆弱Webページ, Qが非脆弱Webページである結合確率で, 両者から指標値Sを算出する. SはP≒Qのとき0.5に近づき, P>>Qなら1.0(脆弱Webページ), P<<Qなら0(非脆弱Webページ)に近い値が算出される.
今回, ベイジアンフィルタを実行するプログラムはPHPで構築した. 図6にベイジアンフィルタ実行プログラムのフローチャートを示す.
図6: ベイジアンフィルタ実行処理のフローチャート
図7は, 各OS毎にコーパスとして用いた脆弱/非脆弱Webページに対してベイジアンフィルタを実行した際の正答率をグラフとして示している. 各OSとも上側に脆弱Webページ, 下側に非脆弱Webページに対する結果を示している.
図7: ベイジアンフィルタの実行結果
今回閾値を0.5とし, 0.5以上であれば脆弱Webページであると選別した. 逆に0.5より小さい場合非脆弱Webページである. つまり, あるOSにとって脆弱Webページと選別されたものは, Webに記載されているBulletin IDの脆弱性を持つと言える. 図5の脆弱Webに着目すると, false-negativeが若干発生したがその大半を選別できた. false-negativeに関しては, 確率算出の過程で脆弱Webの特徴を過大視することで誤りをなくすことが可能であることを確認している. この結果から, 各OSと脆弱なBulletinIDの関係を確率論に基づき評価でき, さらには今後新たに報告されるWebページに対しても同様の解析が行えると考えている.
この結果を踏まえ, ベイジアンフィルタで脆弱Webページと判定されたWebページから, 個々のOSに対する脆弱性情報が記載されていることを前提とし, 限定的な条件を定め構造解析によりレジストリキー情報の収集を行った. そして先述のMBSAの検査リスト情報に加え, レジストリキーによるセキュリティパッチ有無の追検査を実行できるよう更新した. 図8に検査リストの例としてWindows XP用の検査項目例を, 図9にWatcherでの検査処理のフローチャートを示す.
図8: 検査リストの例 図9: Watcherによる検査プログラムのフローチャート
図10にWindows 2000とXPにおけて, Snortが検知できるBulletinID202件に対し, ベイジアンフィルタによる選別(2段目)と, 脆弱であると判定されたものに対してMBSAとレジストリキーで検査が行える件数(3段目)を示す.
図10: ベイジアンフィルタによる脆弱性選別結果とMBSA及びレジストリキーでの検査可能数
ベイジアンフィルタを実行することで, Windows 2000においてMBSAで非検査対象の123件の脆弱性に対し, 内88件が非脆弱なものであり, 残りの114件がWindows 2000に関する脆弱性であることが分かる. そしてMBSAとレジストリキーによって110件の脆弱性が検査可能であった. Windows XPにおいても同様に, そのほとんどを検査できる結果となり, ベイジアンフィルタの有効性を確認できた. また両OSとも若干ではあるが検査不可のものも存在するが, これらは特定できているため, これらの脆弱性に関する情報を別途公開することで, 人手による対応が可能であると考えている.
さらに標準的なクライアントとして, Windows OSの脆弱性とプリインストールされるソフトウェアに着目し, これらの脆弱性に対し正確に検査できるように調整を行った. 今回対象としたアプリケーションは以下の3種である.
¨
Internet Explorer
¨
Windows Media Player
¨
Outlook Express
4. 擬似アラートによる性能評価
RealAlertシステムの動作を確認するために, 擬似アラートによる判別処理実験を行った. 擬似アラートとはSnortのアラート形式を模し, 任意のシグネチャIDを付加したアラートである. 図11にSnortのアラート情報例を示す. この中で, 実行された攻撃の特徴を固有の数値として現しているのがシグネチャIDである.
図11: Snortアラートの情報例
擬似アラートによって実際に攻撃が発生しなくても, 特定の攻撃が実行され, アラートが発生したかのようにRealAlertシステムの判別処理が実行できる. 今回の試験では, Snortが検知できるBulletinID202種の擬似アラートを評価した.
図12にWatcherの脆弱性検査結果を示す. 図12はWindows 2000, XP両OSに対し, OSをインストールしたままの状態(以下「Gold」)と, サービスパックを導入し最新の状態にアップデートをかけたクライアント(以下導入したサービスパック名で表す)計4機に対し, MBSAだけでの検査数(一段目)と, レジストリキーによる追検査を適用した場合の検査数(二段目), そして検査結果として「パッチ有」, 「パッチ無」と判別された脆弱性数(三段目)をそれぞれ示す.
図12: Watcherの検査件数の比較
この結果から, MBSAの検査結果数に対し, レジストリキーによるセキュリティパッチ検査を追加することによって, 各状態のクライアント全てにおいて著しい改善が見られた. そしてその全ての脆弱性はパッチ有無の検査が行えていることを確認した. 検査数の改善はMBSAでは対処できなかったアプリケーションへの対応や, サポート対象外とされていたサービスパックに対応可能となったことに起因していると考えられる. また, Windows 2000,
XP Goldの検査数(それぞれ72, 94件)に対し, パッチ無と判別された脆弱性数(それぞれ67, 91件)に差が生じている. 本来これらのクライアントはアップデートを行っていないため, 検査した脆弱性全てがパッチ無と判別されるべきであろう. しかしこの差として生じた脆弱性は, 全てアプリケーションの脆弱性であり, これらのクライアントにインストールされているアプリケーションのバージョンが, 脆弱性の対象外となっていたことに起因していた. そのため, これらをパッチ有(厳密には「影響無し」)と判定していた. またWindows 2000 SP4において一件のみパッチ無と判別された脆弱性が生じた. これはMS05-030に対する脆弱性で, この脆弱性のセキュリティパッチが, それ以降に報告された脆弱性MS06-016を修正するセキュリティパッチに置き換わることに起因した. このコンピュータには, MS06-016用のセキュリティパッチのみがインストールされ, MS05-030を修正するセキュリティパッチが直接インストールされていないためである. そのためレジストリキーが登録されず, Watcherの検査において誤判定をしていた. このような置き換えが可能なセキュリティパッチに対応するには, Webページからの情報収集において, これらの関係性を新たに導き出す必要があると考えられる.
図13は擬似アラートの判別結果に, 「安全」「危険」と判定されたアラート数の比率をグラフとして表している. またグラフ中の数値が実際の件数となる.
図13: アラート判別処理の結果
このアラート判別処理の結果から, BulletinIDへ結びつくアラートの全てを「安全」か「危険」のどちらかに振り分けることができた. さらにWatcherの検査結果を基にアラート判別結果を確認すると, セキュリティパッチが導入されていない脆弱性へのアラートのみ「危険」と正確に判別できていた.
以上のことから, 若干ではあるもののまだ対応しきれていない脆弱性が存在するが, これら脆弱性の特定は行えているため, Webページでその情報を別途公開することで人為的にも対処が可能であると考えている. そして全体を通じ, レジストリキーによるセキュリティパッチの追検査によって検査精度が非常に向上し, Snortのアラートに関してほぼ自動でアラート情報の危険性判別が可能なことを確認できた.
5.
まとめ
ネットワーク侵入検知システムの問題点である大量発生するアラートの処理に対し, 実際に影響を受ける攻撃アラートのみを抽出するRealAlertシステムの開発研究及びその評価を行った. 擬似攻撃によるアラート判別実験から, セキュリティパッチの有無により危険性判別を行えたが, 同時に判別不可アラートも確認された. そこで, レジストリキーによるセキュリティパッチの追検査を検討した. レジストリキー情報の取得は, マイクロソフト社のWebページから行い, ベイジアンフィルタによる解析対象の選別を行った. ベイジアンフィルタの実行結果では, わずかに誤り生じたが高い判定性能で, その有用性を確認できた. さらに, レジストリキーによる追検査を実行することで, WindowsOSと標準的なアプリケーションの脆弱性の影響をほぼ全て判定可能となった.
山梨大学総合情報処理センタの方々には,
Real Alertシステムの試験運用環境の構築に際して大変お世話になりました. ここに深く感謝いたします.
参考文献
[1] Secunia, “Interesting Statistics from the Secunia PSI”,
<http://secunia.com/blog/18/>,
(参照2008-01-15)
[2] 独立行政法人 情報処理推進機構, “2006年 国内における情報セキュリティ事象被害状況調査報告書”,
<http://www.ipa.go.jp/security/fy18/reports/virus-survey/documents/
2006_virus_domestic.pdf>, (参照2008-01-15)
[3] Snort,
<http://www.snort.org/>, (参照2008-01-15)
[4] Microsoft Baseline Security Analyzer (MBSA),
<http://www.microsoft.com/technet/security/tools/mbsahome.mspx>
[5]
RealAlert, “真に危険な不正侵入情報のみを抽出するアラートフィルタリングシステムの開発”,
<http://sojo.yamanashi.ac.jp/ipc/bul/final05/hanawa/index.html>
[6]RealAlert,
“ネットワーク侵入検知システム用アラートフィルタの評価”,
<http://sojo.yamanashi.ac.jp/ipc/bul/final06/hanawa/hanawa.html>
[6]
Paul Graham, “A Plan for Spam”, <http://www.paulgraham.com/spam.html>,
(参照2008-01-22)