SELinuxで組み込み機器のセキュリティを高める(前編) ―― SELinuxの概要
組み込み機器がインターネットに接続されるようになり,さまざまな攻撃にさらされることになった.SELinuxは,Linuxのアクセス権限機能を拡張し,ファイルやポート番号ごとに細かくアクセス制御を行うことができる.前編の今回は,SELinuxの概要と組み込み機器への摘要の取り組みについて解説する. (編集部)
1 SELinuxはなぜ必要か?
SELinux(Security-Enhanced Linux)とは,LinuxのセキュリティをOSレベルで強化したものです.SELinuxは(Red HatやDebianのような)ディストリビューションの名前ではなく,Linuxカーネル中の一機能の名称です.Linuxカーネル本体の持つアクセス制御機能を強化し,攻撃の被害を最小限に封じ込めることができます.米国のNSA(National Security Agency)を中心に開発・公開され,Linuxカーネル2.6本体に取り込まれています.SELinuxは,これまで,サーバ分野で広く用いられてきました.最近では,組み込み分野にも適用する動きが高まっています.
なぜ,組み込み分野にSELinuxが必要となってきたのでしょうか? その理由として,インターネットに接続される組み込みLinux機器が増え,ネットワークを通じた攻撃にさらされるようになってきたことが挙げられます.薄型テレビやDVDレコーダ,ブロードバンド・ルータ,セットトップ・ボックスなど,インターネット接続機能を持つ組み込み機器へのLinuxの採用が増加しています.一方,インターネットにつながると,悪意のある攻撃者やコンピュータ・ウイルスによる不正侵入にもさらされてしまいます.実際に組み込み機器でも不正侵入が発生しています.三つの例を紹介しましょう.
1) 不用意に保守ポートを空けていたためログインされた
ブロードバンド・ルータで多くみられる事例です.プロバイダが遠隔から機器を保守したいがために,telnetのポートが空いており,「ユーザー名 root,パスワード admin」のような容易に推測できる認証情報で,ログインできてしまったりします.
2) ウィルスをダウンロードし,実行してしまった
携帯電話で多くみられる攻撃です.インターネットからプログラムをダウンロードし,不用意に実行したらそれがウィルスだったということがあります.
3) バッファ・オーバフロー攻撃
携帯電話やプリンタ,Webカメラなどの機器で報告されている,最も典型的な攻撃です.攻撃者やウィルスが不正に長い入力を送ることで,配列をあふれさせ,スタック上の関数の戻りアドレスを破壊し,任意の命令を実行させる攻撃です.配列にデータを読み込む際のデータ長のチェック・ミスや,メモリ管理周りのバグが原因です.
このように,システム設定の不具合や操作ミス,アプリケーションのバグのようなセキュリティ・ホールがあると,攻撃者やウィルスにつけこまれてしまいます.例えばDVDレコーダの場合,図1のようなセキュリティ上の懸念があります.Webで録画できる機能を実現するために,Webサーバが動作していますが,バグがあるとバッファ・オーバフロー攻撃により攻撃者が不正侵入できます.さらに,インターネットから動画メディアをダウンロードしたとします.もしそこにウイルスが混入していたら,動画メディア再生アプリケーションがウイルスを実行してしまいます.一度不正侵入やウイルス実行を許すと,システム・ファイルを破壊されて機器が使えなくなったり,ほかのマシンを攻撃するための踏み台として利用されたりします.ユーザにとっても被害が生じると同時に,メーカも修理のために回収が必要になるなど,対応に追われることになります.
図1 DVDレコーダにセキュリティ・ホールがあった場合の被害