Especialização em Segurança da Informação Segurança em Banco de Dados e Aplicações 1. Segurança em Banco de Dados Márcio Aurélio Ribeiro Moreira [email protected] http://si.lopesgazzani.com.br/docentes/marcio/ Objetivos do capítulo Apresentar a arquitetura padrão dos DBMS Apresentar os principais conceitos de DBMS Apresentar a arquitetura de processamento e armazenamento de bancos de dados Mostrar os principais problemas de segurança de armazenamento dos DBMS Apresentar as recomendações para resolver ou evitar os problemas apresentados Márcio Moreira 1. Segurança em Banco de Dados – Slide 2 Segurança em Banco de Dados e Aplicações Arquitetura padrão Abaixo apresentamos a macro arquitetura padrão dos DBMS ou SGBD: DBMS = Database Management System SGBD = Sistema Gerenciador de Banco de Dados Nota: A arquitetura apresentada não tem nenhum foco em segurança, apenas apresenta os nós envolvidos Márcio Moreira 1. Segurança em Banco de Dados – Slide 3 Segurança em Banco de Dados e Aplicações Níveis de segurança dos dados Humano Interfaces Corrupção Usuário Falta de cuidado Aplicação Engenharia Social Rede Aplicação DBMS Físico Sistema Operacional Márcio Moreira 1. Segurança em Banco de Dados – Slide 4 Segurança em Banco de Dados e Aplicações Iterações com o DBMS Usuário ou formulários: Consultas Comandos Processamento Dados Dados Mensagens Comandos SQL (consultas) em texto plano Aplicações ou DBA (Database Administrator): Transações Comandos SQL (procedimentos) em texto plano Resultados: Result sets: conjuntos resultantes Normalmente tabelas ou mensagens de retorno Também em texto plano Márcio Moreira 1. Segurança em Banco de Dados – Slide 5 Segurança em Banco de Dados e Aplicações Principais conceitos dos DBMS Data Model (Modelo de Dados): É uma coleção modelos que descrevem os dados O modelo relacional é o mais utilizado atualmente Schema (Esquema): É a descrição de uma coleção particular de dados Modelo relacional: Relação: Esquema: Tuplas: Atributos: Tabela X Equivalente a uma tabela Conjunto de colunas Linha 1: Linha 2: Linhas ... Colunas Linha N: Márcio Moreira 1. Segurança em Banco de Dados – Slide 6 Coluna A Coluna B Dado1A Dado1B Dado2A Dado2B ... ... DadoNA DadoNB Segurança em Banco de Dados e Aplicações Níveis de abstração View (visão): Como cada usuário vê os dados que ele tem direito de acesso Esquema conceitual: Visão 1 Visão 2 Visão 3 Esquema Conceitual Estrutura lógica dos dados Esquema físico: Estrutura física dos arquivos e índices utilizados Márcio Moreira 1. Segurança em Banco de Dados – Slide 7 Esquema Físico Banco de Dados Segurança em Banco de Dados e Aplicações Propriedades dos DBMS Independência dos dados: Independência lógica: Protege os dados de mudanças na estrutura lógica Independência física: Protege os dados de mudanças na estrutura física Transações: Atomicidade: Consistência: Integridade: Durabilidade: A transação é concluída totalmente ou não é feita. Se estava consistente, continuará após a transação. Todas as restrições de integridade são respeitadas. Se a transação for concluída, não será perdida. Controle de Concorrência: Isolamento: Márcio Moreira Cada usuário deve “imaginar” que está sozinho. 1. Segurança em Banco de Dados – Slide 8 Segurança em Banco de Dados e Aplicações Pilares de segurança no DBMS Confidencialidade: Alguns dados são acessíveis só por alguns usuários Ataques (roubos) podem revelar segredos, senhas, etc. Privacidade: DBMS Disponibilidade Disponibilidade: Integridade Os dados devem ser válidos e não corrompidos Ataques (fraudes) causam danos à organização Privacidade Integridade: Confidencialidade Dados pessoais não podem ser revelados Ataques podem resultar em ações legais As informações devem estar acessíveis quando necessárias Ataques ou problemas afetam os resultados do negócio Márcio Moreira 1. Segurança em Banco de Dados – Slide 9 Segurança em Banco de Dados e Aplicações Segurança em Banco de Dados Objetivos: Evitar leitura (select), inserção (insert), atualização (update) ou remoção (delete) não autorizadas Mecanismos: Definição de um DBA (DataBase Administrator) para: Criação de contas, concessão ou revogação de direitos e definição do nível de segurança Autenticação: Um usuário ou grupo de usuários (papéis = roles) precisam de uma identificação (identidade) única (conta), que deve ser verificada, para acessar o DBMS Autorização: O DBA pode conceder ou revogar direitos de acesso aos objetos do DBMS para usuários, grupos de usuários ou papéis (roles) Márcio Moreira 1. Segurança em Banco de Dados – Slide 10 Segurança em Banco de Dados e Aplicações Tipos de Controle de Acesso Discricionário (DAC: Discretionary Access Control): O acesso aos objetos do DBMS são baseadas na identidade dos usuários Exemplos: A tabela X pode ser lida pelos: A, B e C Mandatório (MAC: Mandatory Access Control): Cada objeto do DBMS recebe uma classe de segurança (ultra secreto, secreto, confidencial ou não classificado) Cada usuário ou grupo recebe um nível de acesso às classes de segurança Baseado em Papéis (RBAC: Role-Based Access Control): Os direitos de acesso aos objetos do DBMS são concedidos a papeis (roles) Os usuários ou grupos são associados aos papéis Exemplos: Todas as tabelas podem ser escritas por db_writer Os usuários A, B e C são db_writer Márcio Moreira 1. Segurança em Banco de Dados – Slide 11 Segurança em Banco de Dados e Aplicações Comandos de concessão/revogação Concessão: GRANT operação ON objeto TO identidade [WITH GRANT OPTION] Revogação: REVOKE operação ON objeto FROM identidade Operações: SELECT, INSERT, DELETE ou UPDATE [( lista_de_colunas )] CREATE ou EXECUTE [função ou procedimento armazenado] ALTER {TABLE | VIEW | FUNCTION | STORED PROCEDURE} Objetos: Função (function), Gatilho (trigger), Procedimento (stored procedure), Tabela (table), Visão (view), etc. Identidades: Usuário, grupo de usuários ou papel GRANT OPTION: Concede à identidade o direito de conceder direitos Márcio Moreira 1. Segurança em Banco de Dados – Slide 12 Segurança em Banco de Dados e Aplicações Ataques internos ao DBMS Dados sensíveis: São dados privados (não são de acesso público) Levam a classificar as bases em 3 grupos: Públicas: Privadas: Mistas: Não possuem dados sensíveis Só possuem dados sensíveis Contem alguns dados sensíveis Controle de acesso: Tem a missão de limitar o usuário a ter acesso somente aos dados que eles podem acessar Márcio Moreira 1. Segurança em Banco de Dados – Slide 13 Segurança em Banco de Dados e Aplicações Segurança x Precisão Compartilhamento de dados públicos: Segurança: Aceitar consultas à dados públicos e Rejeitar as de dados privados Precisão: Proteger os dados privados revelando o máximo possível dos públicos Ideal: Máximo de segurança com o máximo de precisão Infelizmente, isto nem sempre é possível Márcio Moreira 1. Segurança em Banco de Dados – Slide 14 Segurança em Banco de Dados e Aplicações SQL Injection Idéia: injetar código para ganhar acesso Exemplo de autenticação: SELECT * FROM usuarios WHERE usuario = '$usuario' AND senha = '$senha' Sintaxe SQL: ' (apóstrofo) Terminador de strings -- (2 menos) Comentários (ignora o restante) O que acontece se digitarmos no campo usuário? x' OR 1=1 -Márcio Moreira 1. Segurança em Banco de Dados – Slide 15 Segurança em Banco de Dados e Aplicações SQL Injection - Exemplos No SQL Server: '; EXEC xp_cmdshell 'net stop sqlserver', no_output - No lugar do comando (net stop ...), podemos colocar: Net user admin2 /add && net localgroup administrators admin2 /add && net localgroup ORA_DBA admin2 /add ' UNION SELECT id, name, '', 0,'' FROM sysobjects WHERE xtype='U' -- Injeção no get (passagem de parâmetros) em url: http://windefense/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25'— Referências: www.owasp.org/images/7/74/Advanced_SQL_Injection.ppt Márcio Moreira 1. Segurança em Banco de Dados – Slide 16 Segurança em Banco de Dados e Aplicações Ataque de inferência Suponha que o Salário seja um dado privado Portanto, não pode ser retornado. Será? Observe as consultas: SELECT COUNT(*) FROM T WHERE Salario > 30000 Retorna a quantidade de pessoas que ganham acima de 30000 SELECT SUM(Salario) FROM T WHERE Salario > 30000 Retorna a soma dos Salários de quem ganha acima de 30000 SELECT Nome FROM T WHERE Salario > 30000 Retorna o nome de quem ganha mais de 30000 SELECT * FROM T WHERE 1/(Salario – 30000) > 0 Se alguém ganhar 30000 dará uma mensagem de erro de divisão por zero A política de segurança dos dados deve ser muito bem especificada para os elementos do DBMS Márcio Moreira 1. Segurança em Banco de Dados – Slide 17 Segurança em Banco de Dados e Aplicações Formas de obtenção de dados Direta: Obtenção do dado diretamente Limites: Conhecendo os limites podemos inferir os dados Resultado negativo: Consulta a um valor negativo revela o dado Existência: Saber que o dado existe já é um problema Probabilidade: Determinar a probabilidade de um dado ter um valor Márcio Moreira 1. Segurança em Banco de Dados – Slide 18 Segurança em Banco de Dados e Aplicações Abrindo a arquitetura padrão Buffer Browser Web Server Query Processor Files Márcio Moreira Aplicação Transaction Driver DBMS Driver Manager 1. Segurança em Banco de Dados – Slide 19 Segurança em Banco de Dados e Aplicações Processador de consultas Query Processor Query Parser Query Rewriter Módulos responsáveis pelas iterações do DBMS: Query Parser: Analisador de consultas Query Rewriter: Tradutor de consultas Query Optimizer Query Optimizer: Otimizador de consultas Query Executor Márcio Moreira Query Executor: Executor de consultas 1. Segurança em Banco de Dados – Slide 20 Segurança em Banco de Dados e Aplicações Buffer Buffer Buffer Manager Módulos do buffer: Buffer Manager: Gerenciador de buffers Buffer Pool: Buffer em memória de páginas do banco de dados no disco Buffer Pool Márcio Moreira Este sub-sistema é fundamental para o desempenho do gerenciador 1. Segurança em Banco de Dados – Slide 21 Segurança em Banco de Dados e Aplicações Transaction Transaction Sub-sistema de transações: Transaction Manager: Transaction Manager Gerenciador de transações: Garante: Atomicidade, Consistência, Integridade e Durabilidade Gerencia acessos concorrentes: Lock Manager Garante: Isolamento. Lock Manager: Gerenciador de bloqueios Lock Tables Lock Tables: Controle (em memória) de tabelas bloqueadas Márcio Moreira 1. Segurança em Banco de Dados – Slide 22 Segurança em Banco de Dados e Aplicações Files Files Storage Manager Sub-sistema de arquivos: Storage Manager: Gerenciador de armazenamento Files & Access Methods: Files & Access Methods Logging & Recovery Márcio Moreira Gestão dos métodos de acesso e arquivos do DBMS Logging & Recovery: Gestão dos arquivos de logs e recuperação em caso de falhas 1. Segurança em Banco de Dados – Slide 23 Segurança em Banco de Dados e Aplicações Simplificação da arquitetura padrão Processando uma consulta: Buffer Files Página 3 ... Página 1 ... Página 2 ... Página 3 ... Márcio Moreira Resposta Resposta Resposta Consulta Consulta Consulta Browser Web Server Query 1. Segurança em Banco de Dados – Slide 24 Processor Página 4 ... Página n ... Segurança em Banco de Dados e Aplicações Perspectiva de segurança atual Área ≈ segura: Pode ser cifrada Área insegura: Texto Plano Área ≈ segura: Buffer Pode ser cifrada Página 3 ... Abrangência: Usuário Márcio Moreira Abrangência: Usuário(s) Abrangência: Todos as Transações Página 1 ... Abrangência: Página 2 ... Todos os Dados Página 3 ... Resposta Resposta Resposta Consulta Consulta Consulta Browser Web Server Query 1. Segurança em Banco de Dados – Slide 25 Área insegura: Files Texto Plano Processor Página 4 ... Página n ... Segurança em Banco de Dados e Aplicações Estratégia de segurança no servidor Riscos: Inspeção de memória: Pegar páginas na memória Pegar chaves usadas no armazenamento: Compromete todos os dados Buffer Files Manter Página i Página 1 ... ... Páginas em Página j ... Texto Plano Produtos: Página 2 Armazenar ... Página 3 Páginas ... Página 4 Criptografadas Oracle, DB2, SQL Server, Sybase, Informix, etc. ... Processar Browser Web Server Query em Consultas Processor Página n ... Texto Plano Márcio Moreira 1. Segurança em Banco de Dados – Slide 26 Segurança em Banco de Dados e Aplicações Estratégia de segurança média Riscos: Inspeção de memória: Pegar dados das consultas Pegar chaves usadas no armazenamento: Compromete todos os dados Browser Web Server Buffer Files Manter Página i Página 1 ... ... Páginas Página j ... Cifradas Página 2 Armazenar ... Página 3 Páginas ... Página 4 Criptografadas ... Processar Query em Consultas Processor Página n ... Texto Plano Márcio Moreira 1. Segurança em Banco de Dados – Slide 27 Segurança em Banco de Dados e Aplicações Estratégia de segurança máxima Benefício: Ausência de exposição Buffer Files Manter Página i Página 1 ... ... Páginas Página j ... Custo: Cifradas Implementação complexa Queda de performance Browser Web Server Página 2 Armazenar ... Página 3 Páginas ... Página 4 Criptografadas ... Processar Query Consultas Processor Página n ... Cifradas Márcio Moreira 1. Segurança em Banco de Dados – Slide 28 Segurança em Banco de Dados e Aplicações Custo do processamento cifrado Execução de SELECT: Seqüencial: Por índice: Proposto em 2002 por Márcio, João e Ilmério Pesa o processamento, mas está se viabilizando 2006: Ainda era experimental Fonte: Tingjian Ge and Stan Zdonik Márcio Moreira 1. Segurança em Banco de Dados – Slide 29 Segurança em Banco de Dados e Aplicações Ameaças à segurança do DBMS T.ACCESS: Acesso não autorizado à base de dados T.DATA: Acesso não autorizado à informações T.RESOURCE: Consumo excessivo de recursos T.ATTACK: Ataque não detectado T.ABUSE.USER: Abuso no uso de privilégios dos usuários Márcio Moreira 1. Segurança em Banco de Dados – Slide 30 Segurança em Banco de Dados e Aplicações Objetivos de segurança O.I&A.TOE: Toda operação no DB deve ser Identificada e Autenticada O.ACCESS: O DBA e os usuários têm direito de acesso a seus objetos O.AUDIT: O DBMS deve registrar eventos de segurança relevantes O.RESOURCE: O DBMS deve controlar o uso dos recursos do DB O.ADMIN.TOE: O DBMS deve prover recursos de administração ao DBA Márcio Moreira 1. Segurança em Banco de Dados – Slide 31 Segurança em Banco de Dados e Aplicações Objetivos de segurança x Ameaças Ameaças O.I&A.TOE O.ACCESS T.ACCESS YES YES T.DATA YES YES T.RESOURCE YES YES T.ATTACK YES YES YES YES T.ABUSE.USER YES YES YES YES P.ACCESS YES P.ACCOUNT YES O.AUDIT O.RESOURCE O.ADM.TOE YES YES YES YES YES YES YES Fonte: Database Management System Protection Profile (DBMS PP) P.ACESS: Política de Acesso ao banco de dados P.ACCOUNT: Política de gestão (Administração: DBA e Objetos: Proprietário) Márcio Moreira 1. Segurança em Banco de Dados – Slide 32 Segurança em Banco de Dados e Aplicações Recomendações de segurança Todas as mencionadas em Segurança em Aplicações continuam válidas Adicionais – “BRAVE”: Backup and recovery: Além do backup, devemos fazer journal (log) e archive RAID: Performance e disponibilidade Authorization: Concessão de privilégios adequados Devemos usar também a Autenticação de usuários Views: Encryption: Márcio Moreira Cada perfil deve ter suas visões Criptografe dados sensíveis 1. Segurança em Banco de Dados – Slide 33 Segurança em Banco de Dados e Aplicações Recomendações gerais 1 Ligue a auditoria para dados sensíveis: Audite e verifique os acessos Use pelo menos 2 níveis de logs e archives: Salve estes arquivos em storages separados Crie honey tokens para atrair os atacantes Use a detecção de intrusos no DBMS Remova as scripts, procedimentos e utilitários desnecessários (ex: setpwd.exe) Márcio Moreira 1. Segurança em Banco de Dados – Slide 34 Segurança em Banco de Dados e Aplicações Recomendações gerais 2 Use controle de acesso mandatório ou RBAC (Role Based Access Control) Mantenha a segurança da infra-estrutura: SO, rede, firewalls, storages, backups, etc. Use checklists: Na seleção e compra do DBMS Na administração do DBMS Márcio Moreira 1. Segurança em Banco de Dados – Slide 35 Segurança em Banco de Dados e Aplicações Referências Cenys, et al. Implementation of HoneyToke Module in DBMS Oracle 9iR2EE For Internal Malicius Activity Detection. IEEE. DIMVA. Jul-2005. Christopher Clack. Selected Database Issues. Security. Lecture 1. Lecture 2. Lecture 3. UCL CSD. Mar-2008. ChengXiang Zhai. DBMS Architecture. University of Illinois. Sep-2006. Common Criteria. Database Management System Protection Profile (DBMS PP). CC Portal. 2000. Márcio Moreira 1. Segurança em Banco de Dados – Slide 36 Segurança em Banco de Dados e Aplicações Referências Jerry Keesee and Jonathan Leffler. IBM Informix Dynamic Server 10.00 Security and Column-Level Encryption. IBM. Mar-2005. Luc Bouganim and Philippe Pucheral. ChipSecured Data Access: Confidential Data on Untrusted Servers. VLDB. 2002. Márcio Moreira, João Nunes and Ilmério Silva. A Multi-User Key and Data Exchange Protocol to Manage a Secure Database. SBBD. 2002. Michael McGrattan. Data Security - Encryption Strategies for Data at Rest. Blue Oasis. 2005. Márcio Moreira 1. Segurança em Banco de Dados – Slide 37 Segurança em Banco de Dados e Aplicações Referências Raghu Ramakrishnan and Johannes Gehrke. Database Management Systems. 3rd Edition. McGraw-Hill. 2002. SUN. Best Practices in Information Lifecycle Management Security. SUN. Feb-2006. Susan Davidson. Physical Storage. University of Pennsylvania. Nov-2007. Tingjian Ge and Stan Zdonik. Fast, Secure Encryption for Indexing in a Column-Oriented DBMS. Brown University. 2006. Márcio Moreira 1. Segurança em Banco de Dados – Slide 38 Segurança em Banco de Dados e Aplicações Referências UNIRAS. Current Advice - Mitigating the risk of Malicious Software. NISCC. 2004. UNIRAS. NISCC Technical Note 01/03: Understanding Database Security. NISCC. 2004. Zheng-Fei, Jing, Wei and Bai-le. Fast Query Over Encrypted Character Data in Database. CIS. 2004. Márcio Moreira 1. Segurança em Banco de Dados – Slide 39 Segurança em Banco de Dados e Aplicações