ANITA: Uma Ferramenta para Auxiliar o

Propaganda
ANITA: Uma Ferramenta para Auxiliar o Gerenciamento da
Segurança de Bancos de Dados
Sessão de Demos
Júlio Tavares, Thayson Pinheiro, Ítalo Sousa, Angelo Brayner, José Maria Monteiro
1
Universidade Federal do Ceara (UFC)
Fortaleza – CE – Brazil
{tavares,pinheiro,sousa,brayner,monteiro}@dc.ufc.br
Abstract. Ensuring the security of database systems has become a complex task,
since today, you need to protect large volumes of heterogeneous, distributed and
sensitive data. However, this activity requires a high level of expertise of the database administrator, besides the use of sophisticated and high cost software. In
this sense, this work presents a tool, called ANITA (A Non InTrusive Analyzer to
hardening database security), which provides support for security management
of relational databases.
Resumo. Garantir a segurança de sistemas de bancos de dados tornou-se uma
tarefa complexa, uma vez que, atualmente, necessita-se proteger um grande volume de dados heterogêneos, distribuídos e sensíveis. Entretanto, essa atividade
exige um elevado nível de especialização do administrador do banco de dados, além da utilização de softwares sofisticados e de alto custo. Neste sentido,
este trabalho apresenta uma ferramenta, denominada ANITA (A Non InTrusive
Analyzer to hardening database security), que fornece suporte para o gerenciamento da segurança de bancos de dados relacionais.
1. Introdução
Atualmente, gerenciar a segurança de bancos de dados tornou-se uma tarefa complexa.
Essa complexidade advém de diferentes fatores, tais como: a heterogeneidade, ou seja, a
necessidade de garantir a segurança de sistemas de bancos de dados (SBDs) de diferentes
fornecedores; o aumento das ameaças internas e externas; além do surgimento de novas
legislações e normas de conformidade.
Dados sensíveis, tais como pessoal, saúde, cartões de crédito e débito, financeiro
e propriedade intelectual, estão sendo armazenados em bancos de dados. Tais dados, em
geral, devem ser armazenados e gerenciados segundo normas internacionais de conformidade, como, por exemplo, a norma PCI DSS (Payment Card Industry Data Security
Standard), que trata dos dados relacionados a cartões de crédito. Porém, os Sistemas de
Gerenciamento de Bancos de Dados (SGBDs) não fornecem recursos nativos de segurança suficientes para assegurar o cumprimento dessas normas. Por exemplo, os SGBDs
não dispõem de mecanismos de segurança para análises de vulnerabilidades, para detectar
e prevenir ataques de injeção de SQL, etc. Além disso, SGBDs de fabricantes diferentes
oferecem recursos de segurança distintos. Logo, garantir a segurança de bancos de dados
distribuídos e heterogêneos constitui-se um grande desafio.
Os bancos de dados constituem um dos ativos mais importantes de uma organização, uma vez que estes armazenam os registros de clientes e de negócios confidenciais.
Desta forma, quando hackers ou funcionários mal intencionados ganham acessos aos dados sensíveis, eles podem rapidamente extrair valor e impactar as operações de negócios
da organização. Segundo o Relatório sobre Violação de Dados da Verizon de 2014, os
bancos de dados são um dos ativos mais comprometidos [Verizon 2014]. Além do prejuízo financeiro e do dano na reputação da organização, esses comprometimentos podem
resultar em violações de normas e regulamentações, multas e honorários advocatícios.
Por outro lado, de acordo com o Online Trust Alliance, 97% dos incidentes ocorridos em
2013 poderiam ter sido evitados através da implementação de medidas simples e seguindo
melhores práticas de controles internos [Alliance 2013]. As dez principais ameaças aos
bancos de dados em 2015, segundo o site [Innovation 2015] são ilustradas na Tabela 1.
Tabela 1. Dez principais causas de ataques a banco de dados em 2015
Posição
1
2
3
4
5
6
7
8
9
10
Ameaça
Privilégios excessivos ou esquecidos
Abuso de privilégio
Input Injection
Malware
Auditoria fraca
Exposição de mídia de storage
Exploração de vulnerabilidades e configurações fracas de banco de dados
Dados sensíveis sem políticas de segurança
DoS - Negação de Serviço
Pouca experiência dos profissionais na área de segurança
Recentemente, diversas ferramentas têm sido propostas com a finalidade de garantir a segurança dos bancos de dados e assegurar a conformidade com normas internacionais, como, por exemplo, Idera SQL Compliance Manager, IBM Infosphere Guardium
Data Activity Monitor, Database Audit Software – Enforcive, LepideAuditor Suite e Oracle Advanced Security. Porém, tais ferramentas são específicas para determinados fabricantes de SGBDs, possuem custos elevados e focam na auditoria das alterações efetuadas
sobre os dados1 .
2. Solução Proposta
Este trabalho apresenta uma ferramenta, denominada ANITA (A Non InTrusive Analyzer
to hardening database security)2 , para auxiliar o gerenciamento da segurança de bancos
de dados. A ferramenta proposta foi implementada em Linguagem Java e fornece suporte
para os três principais SGBDs comercias: PostgreSQL 8.4, Oracle 11g e SQL Server
2008.
1
Um estudo comparativo envolvendo essas ferramentas pode se encontrado em:
http://searchsecurity.techtarget.com/feature/Comparing-the-top-database-security-tools
2
Um vídeo de demonstração da ferramenta ANITA pode ser encontrado em: http://tiny.cc/sbbd2016
Atualmente, a ferramenta proposta verifica automaticamente 22 itens de segurança, os quais estão organizados em 5 grupos. Logicamente, esses itens de verificação
variam de acordo com o SGBD utilizado. A Tabela 2 ilustra os 22 itens de segurança
verificados pela ferramenta ANITA junto ao SQL Server.
Tabela 2. Verificações de Segurança para o SQL Server
Grupo
Controle de Acesso
Item de Verificação
Usuários Sysadmins
Usuários db_owner
Usuário SA
Usuário Guest
Logins sem Permissões Associadas
Usuários sem Login
Monitoramento e Auditoria
Nível de Auditoria
Número de LOGS de Eventos
Notificações sobre Eventos
Logins de Usuários db_owner
Vulnerabilidades e Configuração Grupo de Administradores
Grupo de Administradores Locais
Política de Expiração de Senhas
Bancos de Dados de Exemplo
Modo de Autenticação
Protocolos de Rede Habilitados
Backups Válidos
Atualização dos Patches de Segurança
Quantidade de Visões Utilizadas
Prevenção e Bloqueio de Ataques Falhas de Login
Porta Padrão
Criptografia de Dados
Quantidade de Objetos Criptografados
A ferramenta ANITA apresenta ainda as seguintes características:
1. Não-intrusiva: completamente desacoplada do código do SGBD. Isso permite que
a solução concebida possa ser utilizada com qualquer SGBD. Além disso, a solução não está sujeita a modificações em seu código a cada nova versão do SGBD.
2. Independente de localização: pode executar em uma máquina distinta daquela
utilizada para hospedar o SGBD, não consumindo recursos do servidor onde o
SGBD está hospedado.
3. Gratuita: pode ser utilizada gratuitamente.
4. Código aberto: o código da ferramenta está disponível para download e pode ser
alterado livremente.
Para verificar automaticamente cada um dos itens apresentados na Tabela 2, a
ferramenta ANITA utiliza um script codificado no dialeto SQL específico do SGBD utilizado. Desta forma, para o SGBD SQL Server foram implementados 22 scripts na linguagem Transact-SQL. Já para o Oracle e PostgreSQL foram implementados 22 scripts nas
linguagens PL/SQL e PL/pgSQL, respectivamente.
Esses scripts extraem da metabase do SGBD avaliado, por meio de consultas SQL,
todas as informações necessárias para as verificações de segurança. Vale ressaltar que tais
scripts são executados a partir de um código Java Web, ou seja, eles não precisam ser
criados no SGBD. Desta forma, nenhum procedimento armazenado ou gatilho é criado
no SGBD que está sendo avaliado.
A Figura 1 ilustra o script utilizado para verificar os usuários pertencentes a role
“Sysadmins” (primeiro item de verificação na Tabela 2). Já a Figura 2 exibe o script
utilizado para verificar o nível de auditoria definido para o banco de dados (sétimo item
de verificação na Tabela 2). Os scripts ilustrados nas figuras 1 e 2 foram desenvolvidos
especificamente para o SGBD SQL Server, utilizando o dialeto Transact-SQL.
EXEC master.sys.sp_helpsrvrolemember
Figura 1. Script utilizado para verificar os usuários pertencentes a role “Sysadmins” (SQL Server).
DECLARE @AuditLevel int
EXEC master.dbo.xp_instance_regread N’HKEY_LOCAL_MACHINE’,
N’Software \Microsoft \MSSQLServer \MSSQLServer’,
N’AuditLevel’, @AuditLevel OUTPUT
SELECT CASE WHEN @AuditLevel = 0 THEN ’None’
WHEN @AuditLevel = 1 THEN ’Successful logins only’
WHEN @AuditLevel = 2 THEN ’Failed logins only’
WHEN @AuditLevel = 3 THEN ’Both failed and successful logins’
END AS [AuditLevel]
Figura 2. Script utilizado para verificar o nível de auditoria definido para o banco
de dados (SQL Server).
A Figura 3 ilustra parte do Dashboard da ferramenta ANITA. Nesta figura, é possível identificar os dados de conexão com o sistema de banco de dados a ser avaliado, no
lado esquerdo da figura, e os resultados obtidos pela verificação de segurança para os três
primeiros grupos (Controle de Acesso, Monitoramento e Auditoria, além do grupo Vulnerabilidades e Configuração). Vale destacar que para utilizar a ANITA não é necessário
realizar nenhuma alteração, instalação ou configuração no SGBD alvo. Sendo suficientes
apenas os dados de conexão com o SGBD (endereço ip, porta, database), além do login e
da senha de um usuário. O único requisito é que este usuário tenha acesso ao dicionário
(metabase) do SGBD. Para cada item de verificação de segurança é exibido um ícone que
retrata o resultado da avaliação. Ao lado de cada grupo pode-se observar um componente
do tipo “velocímetro” que indica a média do resultado da avaliação considerando todos os
itens do grupo. Já a Figura 4 ilustra uma parte do Dashboard da ferramenta ANITA que
tem por objetivo comparar o resultado da última verificação de segurança com os resultados de verificações anteriores, realizadas sobre o mesmo sistema de banco de dados.
Figura 3. Dashboard da ANITA - Itens de Verificação (SQL Server).
3. Trabalhos Relacionados
Em [Rajpoot et al. 2015], Rajpoot et al. propõem um modelo de controle de acesso que
combina a utilização de regras e atributos, extraindo as vantagens destes dois mecanismos.
Já Stoller propõe um[Stoller 2015] um modelo de controle de acesso baseado no conceito
de relacionamentos, inspirado nas redes sociais. Wei et al. [Wei and Yu 2014] propõem
uma solução não-intrusiva para garantir a integridade dos dados armazenados em SGBDs.
Alguns trabalhos recentes têm proposto soluções para a detecção de ataques de injeção
de SQL [Kar et al. 2015]. A ferramenta ANITA diferencia-se das ferramentas existentes
por ser não-intrusiva, independente de localização, gratuita, de código aberto, extensível,
orientada para a gerência de SGBDs (e não para auditoria ou compliance), fácil de usar,
além de poder ser utilizada com diferentes SGBDs.
4. Conclusões e Trabalhos Futuros
Neste trabalho apresentamos uma ferramenta, denominada ANITA (A Non InTrusive
Analyzer to hardening database security), que fornece suporte para o gerenciamento da
segurança de bancos de dados relacionais. ANITA foi implementada em Linguagem Java
e fornece suporte para os três principais SGBDs comerciais: PostgreSQL 8.4, Oracle 11g
e SQL Server 2008. Como trabalhos futuros, pretende-se tornar a ferramenta extensível,
a fim de permitir, de maneira simples, a adição de novos itens de verificação de segurança
e o suporte a outros SGBDs. Adicionalmente, iremos investigar como integrar a ANITA
a outras ferramentas de análise de código fonte e de logs para detecção de ataques.
Figura 4. Dashboard da ANITA - Resultados Históricos (SQL Server).
Referências
Alliance, O. T. (2013). Online trust alliance. Available at https://otalliance.org.
Innovation, P. I. (2015). 10 principais causas de ataques a banco de dados. Available at
http://www.perallis.com/.
Kar, D., Panigrahi, S., and Sundararajan, S. (2015). SQLiDDS: SQL Injection Detection Using Query Transformation and Document Similarity, pages 377–390. Springer
International Publishing, Cham.
Rajpoot, Q. M., Jensen, C. D., and Krishnan, R. (2015). Integrating Attributes into RoleBased Access Control, pages 242–249. Springer International Publishing, Cham.
Stoller, S. D. (2015). An Administrative Model for Relationship-Based Access Control,
pages 53–68. Springer International Publishing, Cham.
Verizon (2014). Relatório de investigações de violações de dados. Available at
http://www.verizonenterprise.com/br/DBIR/2014/.
Wei, W. and Yu, T. (2014). Integrity Assurance for Outsourced Databases without DBMS
Modification, pages 1–16. Springer Berlin Heidelberg, Berlin, Heidelberg.
Download