分かりやす〜い
コンピュータ技術情報

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」の解説ですが、それは次回以降に行ないます。



←前へ戻る    ▲このページの上へ    続きを読む→

▲このページの上へ