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.
2条答案
按热度按时间vtwuwzda1#
与其他数据库相反,Oracle不允许插件访问它自己的内存地址空间。在MySQL/PostgreSQL的情况下,.dll插件(C存储过程)由主数据库进程加载。
Oracle允许侦听器通过调用
extproc
(或extproc32
)来生成一个新进程。该进程加载共享库,数据库的其余部分通过IPC与该进程进行对话。这种方法更安全,因为外部库不会使数据库崩溃,也不会损坏数据。另一方面,有时C存储过程可能比Java存储过程慢。
此选项可以限制extproc加载的. dll的路径。即那些由
CREATE LIBRARY
语句创建的. dll。PS:C存储过程的使用是非常罕见的,如果你不使用它们,你可以自由地删除整个extproc stanza从Corner. ora。
PS1:有可能利用
extproc
功能的场景。CREATE LIBRARY
,通常不授予此权限CREATE LIBRARY
语句创建指向/tmp的Oracle LIBRARYextproc
到dlopen
此库exproc
将使用操作系统权限执行恶意代码oracle:dba
在使用
EXTPROC_DLLS:ONLY
限制时,开发人员必须与DBA合作,并且只能使用和加载白名单库。rkue9o1l2#
对于任何连接Oracle数据库的程序,您都需要Extproc代理。
例如,
PLS/SQL
需要Extproc
才能与Oracle一起工作您可以找到有关securit here的更多信息
我过去的一些联系
字符串
example here