4

セキュリティ上の理由から、DB チームに EXTPROC_DLLS:ONLY; を追加するよう依頼しました。しかし、彼らはこう言いました。

「KEY = EXTPROC1526 は外部プロセスをまったく参照しないことに注意してください。これは、IPC プロトコルを介して Oraxxx を呼び出す必要があるプロセスで使用される単なるキーです。キーは任意の値にすることができ、同じキー値をtnsnames.ora 経由で渡された"

私には、それは間違っているようです。これについて私を助けてもらえますか?EXTPROC の正確な使い方と、EXTPROC_DLLS:ONLY を追加しないとどうなるのですか?

4

2 に答える 2

3

Oracle データベースに接続するプログラムには、Extproc エージェントが必要です。

PLS/SQLたとえばExtproc、オラクルと連携する必要があります

セキュリティの詳細については、こちら
を参照してください。リンクの一部を省略しています。

Description
***********
The Oracle database server supports PL/SQL, a programming language. PL/SQ can execute external procedures via extproc. Over the past few years there has been a number of vulnerabilities in this area.

Extproc is intended only to accept requests from the Oracle database server but local users can still execute commands bypassing this restriction.

Details
*******
No authentication takes place when extproc is asked to load a library and execute a function. This allows local users to run commands as the Oracle user (Oracle on unix and system on Windows). If configured properly, under 10g, extproc runs as nobody on *nix systems so the risk posed here is minimal but still present. 

ここに例があります

于 2015-05-14T13:25:01.480 に答える
2

他のデータベースとは対照的に、Oracle はプラグインが独自のメモリ アドレス空間にアクセスすることを許可しません。MySQL/PostgreSQL の場合、.dll プラグイン (C ストアド プロシージャ) がメイン データベース プロセスによってロードされます。

extprocOracle では、 (または)を呼び出すことによって、リスナーが新しいプロセスを生成できますextproc32。このプロセスは共有ライブラリをロードし、残りのデータベースは IPC を介してこのプロセスと通信します。

外部ライブラリがデータベースをクラッシュさせたり、データを破損したりすることがないため、このアプローチはより安全です。一方、C ストアド プロシージャは Java ストアド プロシージャよりも遅い場合があります。

このオプションは、extproc によってロードされる .dll のパスを制限できます。つまり、CREATE LIBRARYステートメントによって作成されたものです。

PS: C ストアド プロシージャの使用は非常にまれです。使用しない場合は、listener.ora から extproc スタンザ全体を自由に削除できます。

PS1: この機能を悪用するシナリオが考えられextprocます。

  • ユーザーには が必要ですがCREATE LIBRARY、通常は付与されません
  • extproc は、誰の特権でも実行するように構成されていませんが、oracle:dba として実行されます
  • ユーザーが悪意のある .so ライブラリを作成し、初期化中に何か「悪」を実行します。
  • ユーザーはこのライブラリを /tmp ディレクトリに配置します
  • CREATE LIBRARYユーザーはステートメントを使用して /tmp を指す Oracle LIBRARY を作成します
  • このライブラリextprocへのユーザー フォースdlopen
  • exprocOS権限で悪意のあるコードを実行しますoracle:dba

このEXTPROC_DLLS:ONLY制限を使用する場合、開発者は DBA と協力する必要があり、ホワイトリストに登録されたライブラリのみを使用およびロードできます。

于 2015-05-14T14:22:09.260 に答える