独立行政法人 産業技術総合研究所【理事長 中鉢 良治】(以下「産総研」という)セキュアシステム研究部門【研究部門長 松井 俊浩】制御システムセキュリティ研究グループ【研究グループ長 古原 和邦】戸田 賢二 主任研究員らは、技術研究組合 制御システムセキュリティセンター【理事長 新 誠一】(以下「CSSC」という)と共同で、装着するだけでパソコンやサーバー、制御システム(以下単に「システム」という)の重要データを防御するセキュリティバリアデバイス(SBD)の開発に成功した。SBDはシステムの入出力ポート(IOポート)と周辺機器の間に差し込むだけで機能を発揮し、OSの種類を問わず、またデバイスドライバーなどのソフトウエアをインストールする必要もない。
SBDは、専用に開発した多種類のIOポートを持つFPGAボードとその制御装置から構成されている。今回、SATAポートで接続する記憶装置(ハードディスクなど)とマザーボードなどの本体の間にSBDを割り込ませることでマルウエアの攻撃からデータを保護する機能を実現した。特に、記憶装置のブロック単位の保護に加え、ファイル単位での読み出しや書き出しの保護を実現し、防御の適用範囲をこれまでよりも大幅に拡大することができた。
SBDの特徴は、オリジナルの記憶装置には手を加えることなく、オリジナルのファイルやデータブロックを防御できることである。機密情報の漏えい防止のほか、ブート領域やシステムファイルを保護できるため、OSを再起動すればメモリ上のマルウエアを排除でき、SBDのログから攻撃の様子を確認して即座に業務や制御・監視を再開することが可能である。
なお、この成果の詳細は、2014年2月17日~18日に東京で開催される情報セキュリティ国際会議「CODE BLUE」で発表する。
|
開発したセキュリティバリアデバイス(左)とSBD用FPGAボード(右) |
巨大となった最近のOSやアプリケーションソフトウエア(アプリ)の脆弱性を完全にふさぐことは困難であり、脆弱性の報告例は年を追って増加している。脆弱性はその対策が行われるまで「ゼロデイ」と呼ばれ無防備な状態であり、マルウエアの主な攻撃対象となっている(ゼロデイ攻撃)。特に、制御システムおいては、ハードウエアの性能が限られていてセキュリティソフトウエアの導入が困難なことがある。また、動作検証や可用性の問題からセキュリティパッチをあてずに古いOSやアプリを使い続けるケースも多い。これらの問題に対処すべく産総研とCSSCが共同で開発を行ったのが、簡単に後付けでき、ソフトウエアのインストールが不要で、OSやアプリを問わずに重要なデータを保護するSBDである。従来、パーティション単位での保護やファイルを保護領域に移動させるものはあったが、システムの記憶装置に全く手を加えずにファイルやデータブロックを自由に指定して防御できるような技術はなかった。
SBDは、防御対象のシステムと周辺機器を繋ぐIOポートを中継する形で装着することで、セキュリティの強化を行う装置である(図1、図2)。装着は、IOコネクターの着脱のみであり簡単に行える。SBDは多様なポート中継による広範囲な防御を目指している。今回、SATAポートに接続される記憶装置と本体の間にSBDを割り込ませることで、ディスクのブロック単位の保護に加えてファイル単位での読み出しや書き込みの保護を行うことに成功した。オリジナルの記憶装置はそのままで、デバイスドライバーなどのインストールも不要という特徴がある。
|
図1 SBD装着概念図 |
|
図2 SBD装着実体図 |
SBDの記憶装置保護機能の仕組みを図3に示す。システムのデータが格納された記憶装置と本体はSBDにより中継されるが、SBDはシステムの記憶装置とは別に自分だけ読み書き可能な記憶装置を持っており、そこにシステムのオリジナルの記憶装置のデータブロックへの読み書き(アクセス)可否情報を保存している。システムからその記憶装置に対してデータの読み書き要求があると、SBDはその領域のアクセス可否情報を参照する。許可されていればそのまま読み出しや書き込みを行うが、読み出しが禁止されていれば0などのダミーデータを返し、書き込み禁止されていればその書き込み動作を行わない。なお、ディスクのアクセス単位は、物理的には512バイトのセクター単位となるが、SBDではこれをバイト単位にする拡張を行った。すなわち、読み出したセクターの内容をSBDが書き込むセクターの内容とバイト単位で比較し、バイト単位のデータが同一の内容であれば書き換えなし、異なる内容であれば書き換えありとの判断をFPGAボードで行う。書き換える部分以外は読み出したデータを用い、セクター単位で記憶装置に書き込む。これにより、バイト単位のデータ保護を実現した。システムからセキュリティ情報ディスクは見えないため、マルウエアは原理的にこのセキュリティ情報を変更することはできない。
|
図3 SBDのデータ保護機能の動作方式 |
今回、さらにデータブロック単位のアクセス制御を拡張し、ファイル単位のアクセス制御を実現した。ファイルの読み出し禁止は、SBDでファイル部分のデータブロックを読み出し禁止に指定し、ダミーデータを返す。ファイルの書き込み禁止については、Windowsで一般に使われているファイルシステムのNTFSの場合、ユーザーに当該ファイルの書き込み禁止違反の検出を知らせつつ、一旦ファイルへの書き込みを許す。そして再起動時にSBDが当該ファイルを元の内容に書き戻す。従って、システムファイルなどを書き込み禁止にしておけば、OSの起動前にそれらのファイルが復活し、システムを無事元の状態に復帰させることができる。このように書き込み禁止ファイルへの書き込みを一旦許すのは、Windowsなど一般的なOSでは、高速化のためファイルシステムのキャッシュがメモリ上にあり、書き換えはまずこのキャッシュ上で行われる。このためSBDが記憶装置(ディスク)への書き込みを禁止した場合、書き換えられたキャッシュとディスクの間に齟齬が発生するからである。キャッシュは短時間の内にディスクに反映されるため、書き込み禁止違反は早期に検出できる。また、ブート領域などファイル以外の領域を破壊したりマルウエアを仕込んだりする攻撃に対しては、SBDはその書き換えを即座に検出し禁止できる。
今回開発した技術は、オリジナルのディスクに全く手を加えず、ファイルやデータ領域を自由に指定して防御できるものであり、同等な機能の製品はなく、新たに実現した。
SBDは、アクセス違反を検出すると同時にイーサネットなどの外部との通信を遮断することもできるため、マルウエアによる遠隔操作を断ち切ったり、それ以上の侵入や他への感染、情報流失などを防止したりすることもできる。その後、安全な状況でSBDのログや書き換えられたファイルを解析し、マルウエアの分析も進めることもできる。また、FPGAボードでアクセス違反を検出しているため、装着による記憶装置のアクセス速度の低下は小さく抑えられており、モーションコントロールなどのリアルタイムでの処理が必要なシステムや広い通信帯域が必要なデータサーバーなどにも対応可能と考える。
今回、SBDでのファイル単位の保護をユーザーの多いWindows系OSで用いられるNTFSで実現した。他のファイルシステムにも適用可能であり、Linux系のEXTおよび小規模ストレージ向きのFATについては近日中に対応予定である。ほかのファイルシステムについても必要に応じて対応させることができる。また、イーサネット、USB、HDMIなどのほかのIOポートを中継する機能を開発することでSBDの防御機能のさらなる強化を行っていく予定である。
現在のSBDでは、専用に開発したFPGAボードが10 cm×23 cmという大きさであり、また、SBD制御装置はFPGAボードを内蔵できるよう市販のパソコンを用いているため、全体としてデスクトップパソコンほどのサイズのプロトタイプ機となっている。一般ユーザー向けには小型化が望まれるため、今後、記憶装置のメーカーと連携することにより現在の記憶装置と同一のサイズでのSBDストレージを開発することを検討していく予定である。