terça-feira, 24 de março de 2009

Segurança - Revogar privilégios desnecessários

Como qualquer usuário do Oracle poderá exercer os privilégios concedidos a PUBLIC, revogue os privilégios desnecessários do grupo de usuários PUBLIC do banco de dados.

Esses privilégios incluem o privilégio de EXECUTE em várias packages (PL/Sql) a qual permite que os usuários executem. Varias packages já são instaladas com privilégio PUBLIC, seguindo o princípio de privilégio mínimo, o DBA deverá revogar os privilégios concedendo somente os que forem necessário para utilização da aplicação.

Logado como SYSTEM, use a consulta a seguir para listar os objetos pertencentes a SYS que tem privilégio EXECUTE concedido a PUBLIC.

SELECT table_name

FROM DBA_TAB_PRIVS

WHERE owner = 'SYS'

AND privilege = 'EXECUTE'

AND grantee = 'PUBLIC';

Vários packages DBMS_* e UTL_* foram listados né? segue alguns dos packages mais avançados que podem ser usados de forma incorreta pelos usuários.

  • UTL_SMTP - Permite que mensagens de e-mails sejam enviadas, o privilégio nessa package pode permitir a troca não autorizada de mensagens via e-mail.
  • UTL_TCP - Permite que o servidor estabeleça conexão de rede de saída com qualquer serviço de rede de recepção ou em espera, esse privilégio permite que sejam enviados dados entre servidores e qualquer serviço de rede em espera.
  • UTL_HTTP - Permite que o servidor solicite e recupere dados via HTTP, a permissão a essa package, permite que dados sejam enviados por HTML a um WEB site mal-intencionado.
  • UTL_FILE - Se tiver sido configurado de forma incorreta, permite acesso ao texto de qualquer arquivo localizado no Sistema Operacional, com essa permissão o usuário poderá gravar dados arbitrários no mesmo local gravado por outro.
  • DBMS_OBFUSCATION_TOOLKIT - Criptografa os dados, em hipótese nenhuma usuários devem ter acesso a criptografia de dados, pois os dados criptografados não poderão ser recuperados se as chaves de criptografia não forem gerenciadas e armazenadas de forma segura.

Essas packages são muito úteis para aplicações que necessitem do serviço delas, porem devem ser atribuídas as permissões aos usuários de forma adequada para garantir a segurança.

Segue o exemplo de como revogar um privilégio a uma package PUBLIC

REVOKE execute on utl_file FROM PUBLIC;

Até a próxima........

Nenhum comentário: