文書番号 52474 最終更新日 2004-05-18 公開区分 一般公開 文書タイプ PROBLEM
製品名(バージョン)[コンポーネント] SQL*Net (7.3.4 - 9.2.0.2) [SQL*Net]
プラットフォーム(バージョン) すべてのプラットフォーム ( - )
関連文書  
概要 #42: Oracle Net Listener の潜在的な DoS 脆弱性
内容:
[問題]
潜在的なセキュリティの脆弱性が Oracle Net Listener で発見されました。 この潜在的なセキュリティの
脆弱性により Oracle Net Listener は DoS攻撃を受ける可能性があります。悪意あるユーザーが意図的に
Oracle Net Listener に対し不正なデータを送信すると、Listener が使用不可能になる可能性があります。 
Listener の機能を回復する為には、手動で Listener を再起動する必要があります。


[対象リリース]
  - Oracle9i Database Release2 9.2.0.1 - 9.2.0.2
  - Oracle9i Database Release 9.0.1.0 - 9.0.1.4
  - Oracle8i Database Release 8.1.x
  - Oracle8  Database Release 8.0.x
  - Oracle7  Database Release 7.3.x


[対象プラットフォーム]
全てのプラットフォーム

[修正済リリース]
Oracle Database 10g (10.1.0)

[修正済 PSR]
Oracle9i Release2 9.2.0.3

[回避策]
パッチをご適用頂くことで回避できます。
パッチがご適用頂けない場合は以下の方法等で Oracle Net TNS Listener に対するアクセス
を制限することでご対応下さい。

  以下のパラメータを以下の構成ファイルに指定することで、特定のクライアントからの接続のみ
  許可/拒否することが可能です。

        - 構成ファイル
           9.0.1 以降
             sqlnet.ora
           8.1.7 以前
             protocol.ora

        - パラメータ
             tcp.validnode_checking = YES
             tcp.invited_nodes = (192.168.1.1, 192.168.1.2,.....)
             tcp.excluded_nodes = (192.168.1.1, 192.168.1.2,.....)

  tcp.validenode_checking は、特定のクライアントからの接続を許可/拒否する機能を使用
  するかどうかを決定します。 この機能を使用する場合 YES と記述されています。
  残りの 2つのパラメータは、どのノードからの接続を許可(tcp.invited_nodes)、
  拒否(tcp.excluded_nodes)するかを指定します。例えば 192.168.1.1 192.168.1.2 
  192.168.1.3 からの接続のみを許可する場合以下のように記述します。

             tcp.validnode_checking = YES
             tcp.invited_nodes = (192.168.1.1, 192.168.1.2, 192.168.1.3)


[パッチ情報]
日本でリリースされている全てのプラットフォームに対して、現在フルサポート期間にある
9.2.0、9.0.1、8.1.7 の最新パッチレベルに対応するパッチを提供させて頂く予定です。
現在提供させて頂いてますパッチの情報については、以下の URL の "対応パッチの入手方法"
 をご参照き、そちらよりパッチのダウンロードを行って下さい。

       http://otn.oracle.co.jp/security/021010_1/top.html


[よくある質問とその回答]

  Q. 普通に使用している状態で、この障害が発生する可能性はあるでしょうか。
  A. 悪意あるユーザーにより意図的な操作が行われない限り、通常の使用方法では
     この問題は発生しません。


  Q. 今回の問題はどのような環境で発生するのでしょうか?
  A. 通常のインターネットシステムにおいては、Oracle Net TNS Listener はファイアーウォールの
     内側に存在することが多いため、この問題には遭遇することはないと考えられます。
     Oracle Net TNS Listener とデータベースが共にファイアーウォールの外側にある環境の場合、
     悪意あるユーザーにより不正な操作が意図的に行われた場合に発生する可能性があります。
     しかしこの構成の場合、データベースがファイアーウォールに守られている構成とは言い難いため、
     ファイアーウォールの内側に再構成することをお勧めします。


  Q. この障害の為にOracle Net TNS Listener が正常に動作しなくなりました。応急処置を教えて下さい。
  A. 以下の方法で Oracle Net TNS Listener を再起動して下さい。

       - Unix プラットフォーム
         ps -ef |grep tns 等で リスナープロセスの PID を確認しプロセスを Kill します。
         以下のコマンドでリスナーを起動します。

            lsnrctl start [リスナー名]

       - WindowsNT4.0
         コントロールパネルのサービスから以下のサービスを停止・起動します。
       - Windows2000
         コントロールパネルの管理ツールのサービスから以下のサービスを停止・起動します。

            Oracle[%ORACLE_HOME_NAME%]TNSListener[リスナー名]


  Q. 今回の障害に対して特に注意する必要があるシステム環境を教えて下さい。
  A. 社外から直接Oracle Net TNS Listener に接続する可能性がある場合には注意が必要です。
     例えば、以下の何れかに該当する場合にはパッチの適用をご検討下さい。

       - 社外からOracle Net TNS Listener が起動している IP ADDRESS とポート番号に対して接続できる
       - Oracle Net TNS Listener が起動している IP ADDRESS とポート番号の情報が公開されている
       - Oracle Net TNS Listener がデフォルトのポート番号である1521, 1526を使用している


  Q. この障害から回避する為に、パッチはクライアント側に適用する必要がありますか。
  A. Oracle Net TNS Listener がインストールされているサーバーマシンに適用頂くことで
     回避可能です。 クライアント側に適用頂く必要はありません。


  Q. 本現象を発生させる具体的な方法について教えて下さい。
  A. セキュリティに関する情報のため、公開は控えさせて頂いております。


[謝辞]
  オラクル社はこの脆弱性に関する情報を提供していただきました Rapid7, Inc 社に深く感謝をいたします。


[更新履歴]
2004/05/18 文書管理情報を更新
2004/04/07 修正予定リリースを修正済リリースに変更
           バージョン名を Oracle Database 10g (10.1.0) と明記
2002/12/13 パッチ情報の URL の変更, 
           バージョン情報に 8.0.x 7.3.x を追記