ORACLE TNSリスナーリモート登録ポイズン(ポイズンアタック)の脆弱性



Oracle Tns Listener Remote Registration Poison Vulnerability



このセキュリティアラートは、セキュリティの問題CVE-2012-1675に対処します。これは、最近「」として開示されたTNSリスナーの脆弱性です。TNSリスナーポイズンアタック'Oracle DatabaseServerに影響します。この脆弱性は、認証なしでリモートで悪用される可能性があります。つまり、ユーザー名とパスワードを必要とせずにネットワーク経由で悪用される可能性があります。リモートユーザーは、この脆弱性を悪用して、推奨されるソリューションが適用されていないシステムの機密性、整合性、および可用性に影響を与える可能性があります。

 
Oracle released the 2012 warning, CVE-2012-1675 vulnerability allows an attacker to Oracle in the case does not provide a user name / password data to a remote 'TNS Listener' component processes of poisoning vulnerability.Example: An attacker may no longer need the user name and password using a data message during transmission (including encrypted or non-encrypted data), if the binding (CVE-2012-3137 vulnerability password cracking) to further influence or even control the local area network any one database. 
2. For the vulnerability, oracle gives two kinds of solutions in different environments:

http://www.oracle.com/technetwork/topics/security/alert-cve-2012-1675-1608180.html この脆弱性から保護するための推奨事項は、次の場所にあります。OracleReal Application Clusters(RAC)を使用するOracleDatabaseデプロイメント用のMyOracle Support Note1340831.1。RACを使用しないOracleデータベースのデプロイメントに関するMyOracle Support Note1453883.1。

テストモードでの(非RAC)を示し、単一のインスタンスを修正します。 2つのハイジャックされたlistener.oraデータベースに加えて: 図のSECURE_REGISTER_LISTENER =(TCP)(つまり、最後のハイジャックハッカーがデータベースにアクセスしたい)2 do:SQL> alter system set remote_listener = '(ADDRESS =(PROTOCOL = TCP)(HOST = database2)(PORT = 1521) ) 'スコープ=両方$ lsnrctl reload<<<< restart the listener

注:リンクが図2のハイジャックログデータベースをリッスンする必要があることを確認し、remote_listenerアクセス​​を拒否する情報があるかどうかを確認します。その説明が成功を裏付けています。



一方、12.1または11.2.0.4でも言及されており、RACの新しいパラメーターでこの問題を解決するように構成されています。登録のための有効なノードチェック(VNCR)(ドキュメントID 1600630.1)

VALID_NODE_CHECKING_REGISTRATION_listener_name値:OFF / 0-VNCR ON / 1 / LOCALを無効にします-デフォルト。 VNCRを有効にします。すべてのローカルマシンIPが登録できます。 SUBNET / 2-サブネット内のすべてのマシンが登録を許可されます。

#IPサーバーネットワークセグメントを指定または固定できます



REGISTRATION_INVITED_NODES_listener-name値は、有効なIP、有効なホスト、CIDR表記を使用するサブネット(ip4 / 6の場合)、またはipv4のワイルドカード(*)です。例:REGISTRATION_INVITED_NODES_Listener =(net-vm1、127.98.45.209、127.42.5。*)

INVITEDリストを設定すると、マシンのローカルIPが自動的にリストに含まれることに注意してください。含める必要はありません。

REGISTRATION_EXCLUDED_NODES_listener_name-INVITED_NODESの逆。



3.上記の2つの脆弱性についてだけでなく、シミュレートされたユーザーの組み合わせによって、テストデータベースのパスワードを取得しました。(攻撃部分)ネットワークに移動します。 ケースCVE-2012-1675の脆弱性により、攻撃者は、中毒の脆弱性のリモート「TNSリスナー」コンポーネントプロセスにユーザー名/パスワードデータを提供せずにOracleを攻撃できます。攻撃者はこの脆弱性を悪用して、データの正当な「TNSリスナー」コンポーネントデータベースサーバーシステムを攻撃者の制御下に置き、リモートデータベースインスタンス制御コンポーネントを導き、アセンブリと正当なデータベース間の中間者攻撃、セッションハイジャック、または拒否を引き起こす可能性があります。サービス攻撃。 CVE-2012-3137の脆弱性は、Oracle Database 10g / 11g認証プロトコルの実装に設計上の欠陥があることです。攻撃者は、認証なしでデータベースユーザーパスワードハッシュデータにリモートアクセスし、暴力的なユーザーパスワードを解読して、データベースシステムをさらに制御する可能性があります。次のプロセスステップとOracleの侵入によって達成できます。(1)CVE-2012-1675 TNSを使用してハイジャックを実行し、リモートモニタリングの使用で登録し、同じ名前で登録されたデータベースインスタンス(2)新しいログインユーザー、TNS負荷分散戦略では、偽のトラフィック監視サービスにログオンすることができます(3)ユーザーのログインプロセスを監視し、データトラフィックを実際のデータベースに転送する監視サービス(4)CVE-の使用2012- 3137認証情報の通信プロセスを取得する(5)認証情報オフラインブルートフォース、ランディングパスワードを取得する(6)ユーザー名/パスワードを破ろうとするOracle、Oracle内のデータへの完全なアクセス 彼は次のいくつかのプロセス全体を理解するために地図を描きました。 1. oracleは、ローカルネットワークサービス名によってターゲットホストのIPアドレス、サービスポート番号、ターゲットデータベースの名前に解決され、情報をoracleサーバー側リスナーに送信し、最終的にリスナーDBによって配信されます。 図1)2。両方の場合同じ名前のデータベースの存在を監視する2つのモニターがあります(図3を参照、ローカルリスナー、リモートリスナー)。図3では、データベースのリモートハイジャックを監視するために登録されているため、クライアント接続はハイジャッカーデータベースに割り当てられる可能性があります。 (図2、ステップ2)の下のインスタンス、そして次にローカルモニタキャプタを配置することによって、クライアント要求表示を元のデータベースに戻す(図2、ステップ3)。 図2) 図1の第1のステップにより、ハイジャックされたデータベースに登録されている可能性があります 画像3)3.CVE-2012-3137によるパスワードクラッキング CVE-2012-3137影響を受けるバージョン11.2.0.3、11.2.0.2、11.1.0.7データベースでは、SHA-1暗号化アルゴリズム10.2.0.5および10.2.0.4の使用、およびSHA-110.2の使用があります。 0.3(z / OSで実行)バージョン。 11.2.0.3のこの脆弱性は解決されましたが、データベースクライアントとサーバーのみが11.2.0.3にアップグレードされ、sqlnet.oraファイルによってSQLNET.ALLOWED_LOGON_VERSION = 12が有効になります。 CVE-2012-3137 Oracleで説明されているように、ネットワークを介してパケットをログに記録するサードパーティによるアクセスを防止します。パスワードは暗号化されています。このセクションでは、oracle11.1のパスワードクラッキングの例についてのみ説明します。接続を開始した後(オラクルハンドが完了)、ネゴシエートされた認証プロトコルを介してクライアントとサーバーが使用されます。このタスクを実行するために、クライアントは最初にパケットをデータベースに送信します。パッケージには、クライアントの暗号化キー情報が含まれており、要求されます。確認データベースの暗号化が有効になった後、サービスは確認パケットを送信します。以下に示します。安全なネットワークを介して必要なプロトコルサービスが完了すると、ユーザーデータベースはO3logon(oracle認証)になり、シーケンスデータベースを実行するための合意がクライアントにあることを確認します。パスワードを証明します。サードパーティの傍受に対するネットワークパスワードを回避するため。まず、クライアントはユーザー名をデータベースに送信して、ユーザーのIDを示します。データベース暗号化プロトコルの終わり。ここで、端末96は、データベースキーとして、オフセットとして、20個の異なるそれぞれに接続されている。次のように、キーエンドデータベースクライアントに配布される一般的なもの:AUTH_SESSKEY ..... COCDD89FIGODKWASDF.......................。 クライアント96は、暗号化アルゴリズムに従って、クライアントキーおよび64ビット暗号化キーをサーバに送信する。着信暗号化キーを計算するクライアントサーバー。計算されたパスワードが暗号化されてデータベースに保存されている場合、16の一貫した暗号文認証が渡されます。 TNSハイジャックによると、このプロセスは、取得された暗号化された情報パケットの上に表示されます:AUTH_SESSKEY、AUTH_SESSKEY_CLIENT、AUTH_PASSWORD、AUTH_VFR_DATAこれらの4つの値は復号化するためのキーです。 SHA1、MD5、AES192に準拠した一連のプロセスにそれらを配置します。プレーンテキストでパスワードを取得するための最終的な衝突データディクショナリ。このオンライン出版物の次のサンプルコードセクション、このコードの作成者とアイデアは完全に同じではありませんが、プロセスがこの脆弱性を攻撃する可能性があることを説明することもできます。 Crypto.Cipherからhashlibをインポートします。importAESdefdecrypt(session、salt、password):pass_hash = hashlib.sha1(password + salt)key = pass_hash.digest()+ ' x00 x00 x00 x00'decryptor = AES。 new(key、AES.MODE_CBC)plain = decryptor.decrypt(session)returnplain session_hex = 'EA2043CB8B46E3864311C68BDC161F8CA170363C1E6F57F3EBC6435F541A8239B6DBA16EAAB5422553A7598143E78767' password'password 'oracle'password'password'e78767' salt_hex = 'A7193E546 passwords:session_id = decode(session_hex.decode( 'hex')、salt_hex.decode( 'hex')、password)print 'パスワードの復号化されたsession_id'%s 'は%s'%(password、session_id.encode( 'hex '))ifsession_id [40:] ==' x08 x08 x08 x08 x08 x08 x08 x08 ':print' PASSWORD IS '%s' '%password break