TOP設計・移行・活用> どのような「セキュリティホール」が発見されているか?
アンチウイルスソリューション
1億円の企業ダメージを回避するウイルス対策ソリューション

第2回:WindowsとLinuxのセキュリティホール
著者:トレンドマイクロ  黒木 直樹   2005/8/24
前のページ  1  2   3  4  次のページ
どのような「セキュリティホール」が発見されているか?

   代表例としてバッファオーバーフロー(バッファオーバーラン)と、クロスサイトスクリプティングの2種類の脆弱性(セキュリティホール)について解説する。
バッファオーバーフロー(バッファオーバーラン)

   バッファオーバフローは、プログラムがあらかじめ用意してあるバッファの大きさを超えてデータを書き込んでしまうバグである。

   例えば、ある文字の入力用に20文字分の領域(バッファ)を予定していたとする。しかし、意図しない入力で50文字以上の文字が入力された場合には、差分の30文字分は次のデータ領域へと上書きされてしまう。

   この場合、データ領域の位置や大きさによっては、上書きされるデータがスタック領域へおよぶ場合がある。スタック領域に上書きされると、プログラムがその領域を参照した際にスタックデータ(戻り先のアドレス)だと理解するため、プログラムの戻り位置が壊れ、意図しない場所へと制御が移りプログラムが動作しなくなる。この戻り値を詐称することで、プログラムの実行権限を奪うことが可能である。

   OSの種類によっては、プログラム内のコード領域とデータ領域、スタック領域を区別せず、コードがデータ領域に書かれていてもそのまま実行してしまう物がある。

   一般的にサーバ上で実行されている各種プログラムは管理者権限で実行されている。したがってこの手のプログラムを乗っ取ることができれば、そのサーバ上であらゆることが行えてしまう。

   セキュリティパッチを除くバッファオーバーフローへの対応としては、適切なメモリ管理・保護機能を持ったOSやMPUを使用するか、または実行時に常にバッファオーバーフローを検知する機能やしくみを利用することが必要になる。

正常なプログラム
図1:正常なプログラム

  1. メインプログラムがあるサブルーチンを呼び出す
  2. その際、呼び出されたプログラム位置(戻り場所)をスタック領域に書く
  3. あるデータ領域にデータが書かれても、予め確保してあるバッファサイズ内であったため、正常にデータは保存される(データ領域から外にはみ出さない)
  4. サブルーチンが終了すると、スタック領域にあらかじめ書いておいた位置に戻る

表1:正常なプログラムの動作

バッファオーバーフロー(脆弱性有り)
図2:バッファオーバーフロー(脆弱性有り)

  1. メインプログラムがあるサブルーチンを呼び出す
  2. その際、呼び出されたプログラム位置(戻り場所)をスタック領域に書く
  3. あるデータ領域にデータが書かれる際、あらかじめ確保してあるバッファサイズを越えると、場合によっては隣接するスタック領域を浸食する。この際、以前に書かれていた戻り場所情報は、データ領域を越えたデータで上書きされる。この上書きされたデータを、後に続く「不正プログラム」の場所(アドレス)とする
  4. サブルーチンが終了すると、スタック領域にあらかじめ書いておいた位置に戻るが、上記3により戻り場所が変わっている
  5. 「不正プログラム」が実行される

表2:脆弱性があった場合の動作


クロスサイトスクリプティング

   Webサイトの訪問者の入力をそのまま画面に反映する掲示板などのプログラムが、バグにより悪意のあるコードを訪問者のブラウザに送ってしまう危険性がある脆弱性のことである。

   悪意を持ったユーザがフォームなどを通してJavaScriptなどのスクリプトコードを入力した時に、プログラム側に適切なチェック機構がないと、そのスクリプト内容がそのままHTMLに埋め込まれ、ページを閲覧したコンピュータでスクリプトが実行されてしまうことがある。

   スクリプトの内容によってはCookieデータの盗聴や改竄などが可能なため、Cookieを盗み本人になりすまして物品の購入を行ったり、Cookieを利用してサイトに侵入したりする可能性がある。

   サーバ側での対策としては、訪問者からの入力内容をそのまま表示せずに、スクリプトなどのコードを識別して無効化する処理を施すことが必要である。

   ユーザ側での対策としては、スクリプトを使用しない設定にすることなどがあげられる。

クロスサイトスクリプティング
図3:クロスサイトスクリプティング

  1. 脆弱性のあるサイトにスクリプトを埋め込む
  2. スクリプトの埋め込まれたサイトにアクセス
  3. 一般ユーザのPC上でスクリプトが実行
  4. クッキーを送信
  5. 集めたクッキーを採取

表3:クロスサイトスクリプティングの例


前のページ  1  2   3  4  次のページ


トレンドマイクロ株式会社 黒木 直樹
著者プロフィール
トレンドマイクロ株式会社  黒木 直樹
トレンドマイクロ株式会社 上級セキュリティエキスパート
1996年トレンドマイクロ株式会社入社。
ウイルス対策ソフト「ServerProtect」をはじめとする法人向け製品のプロダクトマーケティングを経て、製品開発部の部長代行に就任(2000年)。個人・法人向け全製品の開発においてリーダーを務め、同社のビジネスを支える主力製品へと成長させる。アウトソーシングサービス事業の立ち上げた後(2001年)、2002年にコンサルティングSEグループ兼インテグレーショングループ部長に就任。営業支援のシステムエンジニア、テクニカルコンサルタントを率い、情報セキュリティ全般にわたりプロジェクトを推進する。


INDEX
第2回:WindowsとLinuxのセキュリティホール
  ウイルス/ワームが狙うセキュリティホールは?
どのような「セキュリティホール」が発見されているか?
  Windowsの脆弱性と悪用するウイルス
  フォーマット・ストリング・バグを悪用するワーム「ELF_RAMEN」