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.