TOPに戻る
▼Network
SNMPのセキュリティホール
┣ サービス拒否攻撃と
┃ バッファオーバーラン
┣ SNMPの必要性
┣ GetRequest/GetNext
┃ Request/SetRequest
┃ /Trap
┗ ASN.1/BERと
セキュリティホール
Copyright(C) 2001-2002.ugpop. All rights reserved.
■ サービス拒否攻撃とバッファオーバーラン ■
今回から新しい講座を始めます。
皆さんはSNMPに関するセキュリティホールをご存知でしょうか?
このセキュリティホールは影響範囲が非常に広範囲にわたりま
す。(WINDOWS/LINUX/SUNを含むほぼ全てのネットワーク機器)
また深刻度も「中」と、そこそこ高い物となっています。
このセキュリティホールについて分からない方もとりあえずネ
ットワーク機器の各ベンダー毎のホームページ等を見てパッチ
を当てておきましょう。
それではこのセキュリティホールについて説明します。
まず、マイクロソフトにより発表された警告文を見てみましょ
う。
==↓ここから=====================
簡易ネットワーク管理プロトコル (SNMP) は、ファイアウォー
ル、コンピュータ、ルータなどの異種のネットワーク デバイ
スを管理するためのインターネット標準プロトコルです。Win-
dows ME を除く、Windows のすべてのバージョンは SNMP の実
装を提供しています。これはどのバージョンでも、既定ではイ
ンストール、および実行されません。
すべての実装でバッファのオーバーランが存在します。影響を
受けるバージョンの SNMP サービスを実行しているシステムに
不正な管理リクエストを送信することにより、攻撃者はサービ
ス拒否を引き起こすことができる場合があります。さらに、攻
撃者は LocalSystem コンテキストで、システムでコードを実
行する可能性があります。これにより、攻撃者はシステムで任
意の操作を行うことができる可能性があります。
==↑ここまで=====================
この文章は少し難しく書いてありますがなんとなく分かる方も
多いかもしれません。
これを要点だけ抜き出して非常に単純化して書くと以下の様に
なります。
==↓ここから=====================
SNMPにバッファオーバーランのバグが存在していて、これによ
りSNMPが動作しているコンピュータに対してサービス拒否攻撃
を行なう事が出来る。
==↑ここまで=====================
分からない言葉が3つほど出てきました。
「サービス拒否攻撃」
「バッファオーバーラン」
「SNMP」
です。
1つめの言葉「サービス拒否攻撃」から説明します。
「サービス拒否攻撃」とは、「DOS攻撃」と呼ばれる事もあり
ます。
「DOS」とはDenial Of Serviceの略です。
これは何かというと、サーバーが行なっているさまざまなサー
ビスを行なえないようにしてしまう攻撃の事です。
例えば、ネットワークに異常に負荷をかけてしまって通信を行
なえなくしてしまうとか、(これによりネットワークプリンタ
で印刷が行なえなくなったり、メールが送れなくなったりする。)
サーバー自体を動作不能にしてしまう、というような事を行な
います。
次に「バッファオーバーラン」です。
「バッファオーバーラン」とは、「バッファオーバーフロー」
と同じ意味です。
このメルマガを初期の頃からご覧になっている方は「バッファ
オーバーフロー」についてはもうご存知ですよね?
「バッファオーバーフロー」について説明できる方は、すでに
そこそこのハッカーになれているかもしれません。
「CodeRED」ウィルスの講座にて詳しく解説しましたが、ご存
じない方も多いと思うので再度簡単に説明します。
「バッファオーバーフロー」というのは、バッファが壊れてし
まうバグの事です。
例えば、以下のように書くと分かりやすいでしょうか。
良い例)
◎正常な処理
1.バッファ(200文字入る)
┌───────────┐
│ 空 │
└───────────┘
2.長い文字列など(300文字)
ABC ・・・・・・・・・・・・・・・
3.長さチェック(重要)
4.長すぎるのでABC ・・・・・・・・・・・・・・・
はバッファに格納せずに捨てる。
悪い例)
×異常な処理
1.バッファ(200文字入る)
┌───────────┐
│ 空 │
└───────────┘
2.長い文字列など(300文字)
ABC ・・・・・・・・・・・・・・・
3.なんか長いみたいだけど無理矢理バッファに入れ
てしまおう。
┌───────────┐××××××
│ABC ・・・・・・・・・・・・・・・×
└───────────┘××××××
良い例では3項で長さチェックを行なっているのですが、
悪い例では長さチェックが行われていません。
この「長さチェックを行わない」というのがバグです。
このように長すぎる情報を無理矢理入れようとしてしま
い、大切な情報が入っている部分までも上書きしてしま
うのです。
また、良い例)を以下のようにしても正常に処理が行わ
れます。
良い例(その2)
◎正常な処理
1.バッファ(200文字入る)
┌───────────┐
│ 空 │
└───────────┘
2.長いリクエスト(300文字)
ABC ・・・・・・・・・・・・・・・
3.長さチェック(重要)
4.長すぎるのでバッファを広げます。(400文字入る)
┌───────────────────┐
│ 空 │
└───────────────────┘
5.入れられる大きさになったのでバッファに格納し
ます。
┌───────────────────┐
│ABC ・・・・・・・・・・・・・・・ │
└───────────────────┘
良い例のいずれの場合も、必ず「長さチェックを行って
いる」という事が言えます。
そして、バッファが短ければそれに対応した正しい処理
を行っています。
つまり、長さチェックを行い、バッファの決められた長
さをはみださないように使っているのです。
このバッファオーバーフローですが、プロセッサの仕様を利用
してしまう事により発生します。
つまりハードウェアの動作を悪用してしまう事によりバッファ
オーバーフローは発生してしまうのです。
このハードウェアの仕様ですが、「バッファオーバーフローが
発生するからハードウェアの仕様を変更しろ」と言っても、そ
れは不可能なのです。仮にハードウェアの仕様を変更したとし
ても、それにより今までのアプリケーションソフトは動作しな
くなってしまうでしょう。
そうなるとそのプロセッサは誰も使わないのです。
動くソフトが無いのにプロセッサだけ欲しい人なんていません
よね?
これで先ほどの3つの言葉
「サービス拒否攻撃」
「バッファオーバーラン」
「SNMP」
の内、2つまで説明しました。
次に「SNMP」の解説ですが、それは次回以降に行ないます。
←前へ戻る ▲このページの上へ 続きを読む→