Especializaçãoem Segurançada Informação
Segurança em Banco de Dados e Aplicações1. Segurança em Banco de Dados
Márcio Aurélio Ribeiro [email protected]://si.lopesgazzani.com.br/docentes/marcio/
Márcio Moreira 1. Segurança em Banco de Dados – Slide 2 Segurança em Banco de Dados e Aplicações
Objetivos do capítulo
Apresentar a arquitetura padrão dos DBMSApresentar os principais conceitos de DBMSApresentar a arquitetura de processamento
e armazenamento de bancos de dadosMostrar os principais problemas de
segurança de armazenamento dos DBMSApresentar as recomendações para resolver
ou evitar os problemas apresentados
Márcio Moreira 1. Segurança em Banco de Dados – Slide 3 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 SystemSGBD = Sistema Gerenciador de Banco de
DadosNota: 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 4 Segurança em Banco de Dados e Aplicações
Níveis de segurança dos dados
Humano
Corrupção
Falta de cuidado
EngenhariaSocial
Interfaces
Usuário
Aplicação
Rede
Aplicação DBMS
Sistema Operacional
Físico
Márcio Moreira 1. Segurança em Banco de Dados – Slide 5 Segurança em Banco de Dados e Aplicações
Iterações com o DBMS
Usuário ou formulários:Consultas
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 retornoTambém em texto plano
Comandos
Dados
Processa-mento
Dados
Mensagens
Márcio Moreira 1. Segurança em Banco de Dados – Slide 6 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 dadosO modelo relacional é o mais utilizado atualmente
Schema (Esquema):É a descrição de uma coleção particular de dados
Modelo relacional:Relação: Equivalente a uma tabelaEsquema: Conjunto de colunasTuplas: LinhasAtributos: Colunas
Tabela X
Coluna A Coluna B
Linha 1: Dado1A Dado1B
Linha 2: Dado2A Dado2B
... ... ...
Linha N: DadoNA DadoNB
Márcio Moreira 1. Segurança em Banco de Dados – Slide 7 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:Estrutura lógica dos dados
Esquema físico:Estrutura física dos arquivos
e índices utilizadosBanco de Dados
Esquema Físico
Esquema Conceitual
Visão 1 Visão 2 Visão 3
Márcio Moreira 1. Segurança em Banco de Dados – Slide 8 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: A transação é concluída totalmente ou não é feita.Consistência: Se estava consistente, continuará após a transação. Integridade: Todas as restrições de integridade são respeitadas.Durabilidade: Se a transação for concluída, não será perdida.
Controle de Concorrência: Isolamento: Cada usuário deve “imaginar” que está sozinho.
Márcio Moreira 1. Segurança em Banco de Dados – Slide 9 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áriosAtaques (roubos) podem revelar segredos, senhas, etc.
Privacidade:Dados pessoais não podem ser reveladosAtaques podem resultar em ações legais
Integridade:Os dados devem ser válidos e não corrompidosAtaques (fraudes) causam danos à organização
Disponibilidade:As informações devem estar acessíveis quando necessáriasAtaques ou problemas afetam os resultados do negócio
DBMS
Confidencialidade
Privacidade
Integridade
Disponibilidade
Márcio Moreira 1. Segurança em Banco de Dados – Slide 10 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 11 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 12 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 13 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: Não possuem dados sensíveisPrivadas: Só possuem dados sensíveisMistas: 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 14 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 eRejeitar 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ãoInfelizmente, isto nem sempre é possível
Márcio Moreira 1. Segurança em Banco de Dados – Slide 15 Segurança em Banco de Dados e Aplicações
SQL Injection
Idéia: injetar código para ganhar acessoExemplo de autenticação:
SELECT *FROM usuariosWHERE 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 16 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 17 Segurança em Banco de Dados e Aplicações
Ataque de inferência
Suponha que o Salário seja um dado privadoPortanto, 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 18 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 19 Segurança em Banco de Dados e Aplicações
Abrindo a arquitetura padrão
BrowserWeb
Server
Aplicação
Driver DBMS
Files
Driver Manager
Transaction
Buffer
QueryProcessor
Márcio Moreira 1. Segurança em Banco de Dados – Slide 20 Segurança em Banco de Dados e Aplicações
Processador de consultas
Módulos responsáveis pelas iterações do DBMS:Query Parser:
Analisador de consultas
Query Rewriter:Tradutor de consultas
Query Optimizer:Otimizador de consultas
Query Executor:Executor de consultas
Query Processor
Query Parser
Query Rewriter
Query Optimizer
Query Executor
Márcio Moreira 1. Segurança em Banco de Dados – Slide 21 Segurança em Banco de Dados e Aplicações
Buffer
Módulos do buffer:Buffer Manager:
Gerenciador de buffers
Buffer Pool:Buffer em memória de páginas do
banco de dados no disco
Este sub-sistema é fundamental para o desempenho do gerenciador
Buffer
Buffer Manager
Buffer Pool
Márcio Moreira 1. Segurança em Banco de Dados – Slide 22 Segurança em Banco de Dados e Aplicações
Transaction
Sub-sistema de transações:Transaction Manager:
Gerenciador de transações: Garante: Atomicidade,
Consistência, Integridade e Durabilidade
Gerencia acessos concorrentes: Garante: Isolamento.
Lock Manager:Gerenciador de bloqueios
Lock Tables:Controle (em memória) de tabelas
bloqueadas
Transaction
Transaction Manager
Lock Manager
Lock Tables
Márcio Moreira 1. Segurança em Banco de Dados – Slide 23 Segurança em Banco de Dados e Aplicações
Files
Sub-sistema de arquivos:Storage Manager:
Gerenciador de armazenamento
Files & Access Methods: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
Files
StorageManager
Files & Access
Methods
Logging & Recovery
Márcio Moreira 1. Segurança em Banco de Dados – Slide 24 Segurança em Banco de Dados e Aplicações
Simplificação da arquitetura padrão
Processando uma consulta:
BrowserWeb
Server
Buffer
QueryProcessor
Consulta
Files
Página 1...
Página 2...
Página 3...
Página n...
Página 4...
Consulta Consulta
Página 3...
Página 3...
RespostaRespostaResposta
Márcio Moreira 1. Segurança em Banco de Dados – Slide 25 Segurança em Banco de Dados e Aplicações
Perspectiva de segurança atual
BrowserWeb
Server
Buffer
QueryProcessor
Consulta
Files
Página 1...
Página 2...
Página 3...
Página n...
Página 4...
Consulta Consulta
Página 3...
Página 3...
RespostaRespostaResposta
Área insegura:Texto Plano
Abrangência:Usuário
Área ≈ segura:Pode ser cifrada
Abrangência:Usuário(s)
Área ≈ segura:Pode ser cifrada
Abrangência:Todos as
Transações
Área insegura:Texto Plano
Abrangência:Todos os Dados
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 no servidor
Riscos: Inspeção de memória:
Pegar páginas na memóriaPegar chaves usadas no armazenamento:
Compromete todos os dados
Produtos: Oracle, DB2, SQL Server, Sybase, Informix, etc.
BrowserWeb
Server
Buffer
QueryProcessor
Files
Página 1...
Página 2...
Página 3...
Página n...
Página 4...
Página i...
Página j...
Armazenar
Páginas
Criptografadas
Processar
Consultas em
Texto Plano
Manter
Páginas em
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édia
Riscos:Inspeção de memória:
Pegar dados das consultasPegar chaves usadas no
armazenamento: Compromete todos os dados
BrowserWeb
Server
Buffer
QueryProcessor
Files
Página 1...
Página 2...
Página 3...
Página n...
Página 4...
Página i...
Página j...
Armazenar
Páginas
Criptografadas
Processar
Consultas em
Texto Plano
Manter
Páginas
Cifradas
Márcio Moreira 1. Segurança em Banco de Dados – Slide 28 Segurança em Banco de Dados e Aplicações
Estratégia de segurança máxima
Benefício:Ausência de exposição
Custo:Implementação complexaQueda de performance
BrowserWeb
Server
Buffer
QueryProcessor
Files
Página 1...
Página 2...
Página 3...
Página n...
Página 4...
Página i...
Página j...
Armazenar
Páginas
Criptografadas
Processar
Consultas
Cifradas
Manter
Páginas
Cifradas
Márcio Moreira 1. Segurança em Banco de Dados – Slide 29 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érioPesa o processamento, mas está se viabilizando2006: Ainda era experimental Fonte: Tingjian Ge and Stan Zdonik
Márcio Moreira 1. Segurança em Banco de Dados – Slide 30 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 31 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 32 Segurança em Banco de Dados e Aplicações
Objetivos de segurança x Ameaças
Ameaças O.I&A.TOE O.ACCESS O.AUDIT O.RESOURCE O.ADM.TOE
T.ACCESS YES YES YES YES
T.DATA YES YES YES
T.RESOURCE YES YES YES YES
T.ATTACK YES YES YES YES
T.ABUSE.USER YES YES YES YES
P.ACCESS YES YES
P.ACCOUNT 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 33 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 adequadosDevemos usar também a Autenticação de usuários
Views: Cada perfil deve ter suas visões
Encryption: Criptografe dados sensíveis
Márcio Moreira 1. Segurança em Banco de Dados – Slide 34 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 atacantesUse a detecção de intrusos no DBMSRemova as scripts, procedimentos e utilitários
desnecessários (ex: setpwd.exe)
Márcio Moreira 1. Segurança em Banco de Dados – Slide 35 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 DBMSNa administração do DBMS
Márcio Moreira 1. Segurança em Banco de Dados – Slide 36 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 37 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. Chip-Secured 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 38 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 39 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.