2015-05-14 3 views
3

По соображениям безопасности я попросил команду DB добавить EXTPROC_DLLS: ТОЛЬКО; но они сказали, что это:.Что такое EXTPROC в Oracle?

«Информируют, что KEY = EXTPROC1526 не относится к какому-либо внешнему процессу на все Это только ключ, используемый любым способом, необходимо позвонить Oraxxx по протоколу IPC. ключ может быть любое значение и то же значение ключа должно быть передано через tnsnames.ora»

Для меня это кажется неправильным. Не могли бы вы помочь мне в этом? Каково точное использование EXTPROC, и что произойдет, если мы не добавим EXTPROC_DLLS: ТОЛЬКО?

ответ

2

Для любой программы для подключения базы данных оракула необходим агент Extproc.

PLS/SQL, например, нужно Extproc работать с оракулом

Вы можете найти более подробную информацию о SecurIT here
Ill прошлом некоторые ссылки

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. 

и example here

+0

Итак, пожалуйста, исправьте меня: например, моя программа работает на той же машине, что и в БД. Вместо TCP я использую IPC. Поэтому база данных будет обрабатывать новую процедуру для моей программы «extproc», и моя программа подключается к этой процедуре, которая работает как СУБД. – Ace

+0

@ Возможно, он может сделать это, я не могу быть уверенным, что делает ваша программа. ниже ibre объясняется, когда используется extproc – Moudiz

1

On в отличие от других баз данных, Oracle не позволяет плагинам получать доступ к собственному адресному пространству. В случае MySQL/PostgreSQL плагин .dll (хранимая процедура C) загружается основным процессом базы данных. Oracle позволит слушателю создать новый процесс extproc (или extproc32). Этот процесс загружает общую библиотеку, а остальная часть базы данных ведет переговоры с этим процессом через IPC.

Этот подход более безопасен, поскольку внешняя библиотека не может разбивать базу данных и не испортить данные. С другой стороны, иногда C хранимые процедуры могут быть медленнее, чем Java.

Этот параметр может ограничивать путь для .dlls, который будет загружен extproc. т. е. созданных оператором CREATE LIBRARY.

PS: использование хранимых процедур C ОЧЕНЬ редко, если вы их не используете, вы можете свободно удалить всю строфу extproc из listener.ora.

PS1: возможный сценарий использования функции extproc.

  • Пользователь должен иметь CREATE LIBRARY, которые, как правило, не предоставляется
  • EXTPROC не настроен для работы с privs ничьи.
  • Пользователь создает вредоносную библиотеку .so, которая будет выполнять что-то «зло» во время ее инициализации.
  • Пользователь помещает этот LIB в директорию/TMP
  • Пользователь создает Oracle БИБЛИОТЕКУ указывая в/TMP с помощью CREATE LIBRARY о
  • силы пользователя extproc к dlopen эта библиотека
  • exproc будет выполнять вредоносный код с priveledges OS oracle:dba

При использовании этого ограничения EXTPROC_DLLS:ONLY разработчики должны сотрудничать с администраторами баз данных, и могут использоваться только библиотеки с белым списком.