O documento fornece uma visão geral da segurança do SQL Server, abordando tópicos como segurança física, do sistema operacional, dos objetos de banco de dados e das aplicações. Apresenta também as principais ameaças como elevação de privilégios, SQL injection e boas práticas de segurança.
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Visão geral sobre segurança
1. SQL Server – Visão geral de Segurança
Alexandre Paiva
Analista de Sistemas & Desenvolvedor
Petrobras Distribuidora S/A - MCDBA MCT MCSD MCP
3º Encontro do Grupo SQL Server ES
3. Apresentação
• $> whoami
• Analista de Sistemas - Petrobras Distribuidora – Gás Natural
• Autodidata em programação (1987 – MC-1000)
• Primeiro curso de programação (1988 – TK2000)
• Técnico em desenvolvimento de microcomputadores (IBPI – 1993)
4. Apresentação
• MCP – MCDBA – MCT (Microsoft – 2000+)
• Bacharel em Sistemas de Informação (UFF/FUNEMAC - 2010)
• Especialista em Projeto, Gestão e desenvolvimento de Sis. Info.
(IFF Campos do Goytacazes – Pós 2010/11)
• Desenvolvimento Web (C#, ASP.NET, Bootstrap, ...)
• Gestão de infraestrutura de Mapas (Plataforma ESRI ArcGIS)
• Sistemas de monitoramento industrial - SCADA (iFix, Historian,
Dream Reports)
5. Objetivos
• Evangelizar segurança digital é urgente, revelando a enorme
exposição aos riscos virtuais para os dados pessoais e
corporativos
• Observar os limites de responsabilidade com segurança nas
empresas divulgando a disciplina de Segurança da informação
• Conhecer as ameaças às informações e as medidas de
segurança
• Onde nos encaixamos neste cenário
6. Segurança
• O que é segurança?
– É uma sensação, um sentimento a respeito de quanto estamos
vulneráveis às ameaças conhecidas e quanto se acredita que seremos
atacados
• Qual a motivação de uma ameaça/ataque?
• Decisão depende de custo/benefício do ataque
– Custo: Tempo, preparação, investimento ($), equipe, etc
– Benefício: financeiro, psicológico, ideológico, etc
7. Segurança
Processo contínuo
• Pessoas são a parte mais frágil do processo por
causa do lado emocional e cultural. Facilmente
exploráveis
• Processos precisam de melhoria pois são
estáticos per si
• Tecnologia evolui muito rapidamente, exigindo
constante adaptação
8. Segurança
• Vulnerabilidade: falha ou fraqueza que possa ser explorada
• Ameaça: possibilidade de um agente (ou fonte de ameaça)
explorar uma vulnerabilidade específica;
• Impacto: potencial das consequências de um ataque
• Risco: probabilidade de uma fonte de ameaça explorar
uma vulnerabilidade, resultando em um impacto
– Evitar, controlar, transferir (para terceiros), aceitar (absorver)
9. Segurança
• Intenção/motivação do ataque: Depende do que se deseja
– Roubo de dados, Bloqueio de uma atividade, distração, etc.
• Oportunidade: momento apropriado
– Zero-day attack, sistema desatualizado, alguma distração ou
sazonalidade, etc
• Capacidade: é a condição financeira, perícia humana e técnica
de alcançar o objetivo de ataque.
• Ataque = Objetivo + Método + Oportunidade + Vulnerabilidade
10. As ameaças
TOP 10 Ameaças - OWASP.org 2017 em ordem de criticidade:
• Injection (Inimigo #1 do SQL Server)
• Gerenciamento de sessão e autenticação quebrados
• Injeção de script entre sites (Cross-Site Scripting - XSS)
• Controle de acesso quebrado
• Falha de configuração da segurança
• Exposição de dados críticos
• Proteção contra ataques insuficientes (Novo)
• Falsificação de requisição entre sites
• Uso de componentes com vulnerabilidades conhecidas
• Interfaces de aplicações sem subprotegidas (Novo)
11. O que fazer?
• Não ser hackeado!
• Quem é o responsável pela segurança?
12. Segurança da Informação
• É uma disciplina formal para gestão da segurança de ativos
digitais
• ABNT NBR ISO/IEC 27002 – Tecnologia da informação –
Técnicas de segurança – Código de prática para a gestão de
segurança da informação
• Se aplica a todo ambiente onde exista informação, não
somente no âmbito computacional
– Ex.: Informação impressa e não gerida adequadamente
13. Pilares da Segurança da Informação
• Confidencialidade
– somente pessoas autorizadas podem
ter acesso
• Integridade
– Controle de mudanças
• Disponibilidade
– Informação disponível quando
necessária
14. Outras características
• Autenticidade
– A fonte é verídica? Plágio? Este é o original?
• Irretratabilidade/Não repúdio
– Impossível negar a autoria;
– Email, senhas, chaves de acesso, logins configuram a autoria por
parte da identidade que foi registrada.
– Nunca compartilhe login/senha!
– Ex. O banco não devolve o saldo da transferência feita com tua conta.
• Conformidade (legal)
15. Outras características
• Privacidade
– O mundo se expõe de forma “nudes e curtis”, mostrando
gratuitamente todo tipo de informação e revelando seus hábitos,
preferências, e relacionamentos
– Qual o limite de segurança para
tanta exposição?
• Wikileaks
• Manda nudes?
16. Outras características
• Privacidade
– A luta por anonimato está cada vez mais forte pois o efeito colateral
da exposição social digital já começa a dar sinais
– TOR - The Onion Router Project: uma rede para
o anonimato [DEMO]
– VPN: Criptografia e posicionamento geográfico
selecionável
– Firewall: Essencial como tua fechadura de casa
17. Outras características
• Criptografia
– Essencial para a privacidade
• Assimétrica: Chaves privada e pública
– Comunicação, transmissão e
armazenamento seguro de
dados
• GPG - The GNU Privacy Guard
18. Outras características
• Criptografia
– Bitlocker & Bitlocker to GO, EFS
– Utilitários de criptografia de HD externo,
pendrive e dispositivos móveis
• Samsung Magician, Knox
– CriptoMoedas para privacidade financeira
• Bitcoin, Ether, BitCash, etc
19. Gestão da Segurança da Informação
• Níveis de segurança
• Pontos de controle de segurança
– Tudo que pode ser implementado para segurança. Ex. política Seg.,
gestão, controle de acesso, seg. patrimonial, backup, etc
• Política de segurança
– conjunto formal de regras que devem ser seguidas pelos utilizadores
dos recursos de uma organização
• Modelos de maturidade
– BSIMM The Building Security In Maturity Model
20. Segurança SQL Server
• Segurança física
• O Sistema Operacional
• Os Objetos de bancos de dados
• Os Aplicativos que acessam os dados
– As ameaças ao SQL Server
21. Segurança física
• Sala de servidores não é lugar de exposição ou visitação
• invadir/escapar
• Conhecer o layout
• Aprender a rotina
• Ajuda de dentro ou
de fora
• Criar uma distração
ou oportunidade
22. Segurança física
Engenharia social como chave de entrada
• Informações falsas ou sequestradas
para privilégios e acessos
• Explora comportamento humano
• Extrapola o acesso físico
• Pessoalmente, por telefone, por email
23. Segurança física
• Acesso às instalações
– Entrada sem restrição, recepção vazia
– Abordagem Mesa limpa
– Impressões abandonadas, Descarte
inadequado de material de escritório
– Lixo é fonte de informação
26. Segurança SQL Server
• Segurança física
• O Sistema Operacional
• Os Objetos de bancos de dados
• Os Aplicativos que acessam os dados
– As ameaças ao SQL Server
27. O Sistema Operacional
• Sempre atualizado ou
WannaCry?
• Política de privilégio mínimo
até para administradores
– 1 pessoa = 2 contas
• 1 rotineira
• 1 administrativa (Prefix*: AS, AE
+ conta rotineira)
28. O Sistema Operacional
• Nunca usar SO sem suporte. *O caso do “SUS” Britânico e o XP!
Marketshare Desktop S.O.
30. Segurança SQL Server
• Segurança física
• O Sistema Operacional
• Os Objetos de bancos de dados
• Os Aplicativos que acessam os dados
– As ameaças ao SQL Server
31. Segurança dos objetos de Banco
• Login
• Usuário
• Schema
• Tabelas, views
• procedures & functions
• Permissões
– Diretamente no objeto
– Roles
32. Segurança dos objetos de Banco
• Login
• Usuário
• Schema
• Tabelas, views
• procedures & functions
• Permissões
– Diretamente no objeto
– Roles
Desafio!
33. Segurança SQL Server
• Segurança física
• O Sistema Operacional
• Os Objetos de bancos de dados
• Os Aplicativos que acessam os dados
– As ameaças ao SQL Server
34. Ameaças – SQL Server
• Elevação de privilégios
• Sondagem (probing) e
observação inteligente
– Erro que expõe
informações relevantes
– Tratamento de erro
ausente
– Use log se precisar de
informações de erro
35. Ameaças – SQL Server
• Autenticação
– Strings de conexão inseguras
– SQL user login vs Autenticação
integrada Windows
• Senhas fracas
– 2,6 bilhões de contas on-line foram
violadas no ano passado
– Métrica de senha forte (NIST*)
– Quanto tempo leva para quebrar na
força bruta?
• Testar!
• Comprimento é força!
36. Ameaças – SQL Server
• SQL Injection
– Uma subcategoria de Injection
– Aplica-se a qualquer banco de dados SQL (SQL Server, Oracle, MySQL,
DB2, etc)
– Injetar comandos ou alterações nas condições de execução de um
comando para obter resultados diferentes daqueles disponíveis pelo
aplicativo/site.
• Ex. Listar cartões de crédito onde só deveria validar um login
• Ex. Ter acesso de administrador onde teu perfil seria de consulta
37. SQL Injection
var Shipcity;
ShipCity = Request.form ("ShipCity");
var sql = "select * from OrdersTable where ShipCity = '" + ShipCity + "'";
[ENTRADA] Redmond
[SAÍDA] select * from OrdersTable where ShipCity = 'Redmond'
38. SQL Injection
[ENTRADA] Redmond'; drop table OrdersTable--
[SAÍDA] SELECT * FROM OrdersTable WHERE ShipCity = 'Redmond';drop table
OrdersTable--'
[SEGURA]
sqlCommand comm = new SqlCommand();
Comm.text = "select * from OrdersTable where ShipCity = @p1"
SqlParameter parm = comm.SelectCommand.Parameters.Add("@p1",
SqlDbType.VarChar, 20);
Parm.Value = Request.form ("ShipCity");
...
Comm.executeread();
39. SQL Injection (Bad)
[ENTRADA] Redmond'; drop table OrdersTable--
[SAÍDA] SELECT * FROM OrdersTable WHERE ShipCity = 'Redmond';drop table
OrdersTable--'
[SEGURA]
sqlCommand comm = new SqlCommand();
Comm.text = "select * from OrdersTable where ShipCity = @p1"
SqlParameter parm = comm.SelectCommand.Parameters.Add("@p1",
SqlDbType.VarChar, 20);
Parm.Value = 'Redmond’;
...
Comm.executeread();
40. Boas práticas
• Conjunto de ações reconhecidas como auxílio na redução das
vulnerabilidades
– Booksonline, MSDN, Technet, sites especializados
• Não são opcionais, você é que está negligenciando
• Implantar Segurança da Informação, mesmo que não
formalmente, mas como cultura, de forma corporativa e
pessoal
41. Boas práticas
• Trabalhar em conjunto com equipe de desenvolvimento para o
uso de aplicações seguras
– Trate a entrada de dados
– Use parâmetros, NUNCA concatenação direta (sqlStringBuilder!)
– Incentive o TDD (Test Driven Develpment) com testes de segurança
– Use testes automatizados de banco de dados, além dos testes de
aplicação
– Usar ferramentas que revelam as vulnerabilidades
• Sqlmap, w3af, havij, etc
• Criar backlog para equipe de testes
42. Boas práticas
• Prefira autenticação integrada e segura
– Prefira autenticação Windows (mais segura e menos digitação de
senha)
– Senhas seguras são senhas longas. Frases são mais simples de
lembrar que um sopa de caracteres misturados
– Gerenciadores de senhas são um alívio para a memória
• Confiança no desenvolvedor é requisito para escolha
• Ex. Gerador de senha online
43. Boas práticas
• Para nunca ser pego por engenharia social é preciso um nível
de desconfiança patológico, uma semi-paranóia
– Não precisa ficar louco; adote as boas práticas!
• Faça parte de um grupo de especialistas, participe e mantenha-
se atualizado.
• Viva seguro, preserve a privacidade, cuide dos bancos de
dados
44. Próximos Encontros
• 23/09 - 4º Encontro do SQL Server ES
• 30/09 - SQL Saturday São Paulo
• 21/10 - SQL Saturday Rio de Janeiro
• 18/11 - SQL Saturday Salvador
45. SQL Server – Visão geral de Segurança
commit;
Alexandre Paiva
Analista de Sistemas & Desenvolvedor
Petrobras Distribuidora S/A - MCDBA MCT MCSD MCP
3º Encontro do Grupo SQL Server ES
Notas do Editor
Risco: probabilidade de uma fonte de ameaça explorar uma vulnerabilidade, resultando em um impacto para a organização;
Vulnerabilidade: falha ou fraqueza de procedimento, design, implementação, ou controles internos de um sistema que possa ser acidentalmente ou propositalmente explorada, resultando em uma brecha de segurança ou violação da política de segurança do sistema;
Ameaça: possibilidade de um agente (ou fonte de ameaça) explorar acidentalmente ou propositalmente uma vulnerabilidade específica;
For 2017, the OWASP Top 10 Most Critical Web Application Security Risks (in the Release Candidate) are:
A1 Injection
A2 Broken Authentication and Session Management
A3 Cross-Site Scripting (XSS)
A4 Broken Access Control (As it was in 2004)
A5 Security Misconfiguration
A6 Sensitive Data Exposure
A7 Insufficient Attack Protection (NEW)
A8 Cross-Site Request Forgery (CSRF)
A9 Using Components with Known Vulnerabilities
A10 Underprotected APIs (NEW)
Portanto os atributos básicos da segurança da informação, segundo os padrões internacionais (ISO/IEC 17799:2005) são os seguintes:
Confidencialidade: propriedade que limita o acesso a informação tão somente às entidades legítimas, ou seja, àquelas autorizadas pelo proprietário da informação;
Integridade: propriedade que garante que a informação manipulada mantenha todas as características originais estabelecidas pelo proprietário da informação, incluindo controle de mudanças e garantia do seu ciclo de vida (Corrente, intermediária e permanente). O ciclo de vida da informação orgânica - criada em ambiente organizacional - segue as três fases do ciclo de vida dos documentos de arquivos; conforme preceitua os canadenses da Universidade do Quebec (Canadá): Carol Couture e Jean Yves Rousseau, no livro Os Fundamentos da Disciplina Arquivística;
Disponibilidade: propriedade que garante que a informação esteja sempre disponível para o uso legítimo, ou seja, por aqueles usuários autorizados pelo proprietário da informação;
Autenticidade: propriedade que garante que a informação é proveniente da fonte anunciada e que não foi alvo de mutações ao longo de um processo;
Irretratabilidade ou não repúdio: propriedade que garante a impossibilidade de negar a autoria em relação a uma transação anteriormente feita;
Conformidade: propriedade que garante que o sistema deve seguir as leis e regulamentos associados a este tipo de processo.
Níveis de segurança: Lógico e Físico
Uma conta com perfil de ADMIN só deve ser usada exclusivamente para atividades administrativas planejadas. Para quaisquer outras atividades o operador deve utilizar contas normais de seu perfil com menor privilégio. AS conas especiais para gestão de recursos podem ser prefixadas para identificar o conjunto de recursos a ser permitido.
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/application-security-scenarios-in-sql-server
Common Threats
Developers need to understand security threats, the tools provided to counter them, and how to avoid self-inflicted security holes. Security can best be thought of as a chain, where a break in any one link compromises the strength of the whole. The following list includes some common security threats that are discussed in more detail in the topics in this section. +
SQL Injection
SQL Injection is the process by which a malicious user enters Transact-SQL statements instead of valid input. If the input is passed directly to the server without being validated and if the application inadvertently executes the injected code, then the attack has the potential to damage or destroy data. You can thwart SQL Server injection attacks by using stored procedures and parameterized commands, avoiding dynamic SQL, and restricting permissions on all users. +
Elevation of Privilege
Elevation of privilege attacks occur when a user is able to assume the privileges of a trusted account, such as an owner or administrator. Always run under least-privileged user accounts and assign only needed permissions. Avoid using administrative or owner accounts for executing code. This limits the amount of damage that can occur if an attack succeeds. When performing tasks that require additional permissions, use procedure signing or impersonation only for the duration of the task. You can sign stored procedures with certificates or use impersonation to temporarily assign permissions. +
Probing and Intelligent Observation
A probing attack can use error messages generated by an application to search for security vulnerabilities. Implement error handling in all procedural code to prevent SQL Server error information from being returned to the end user. +
Authentication
A connection string injection attack can occur when using SQL Server logins if a connection string based on user input is constructed at run time. If the connection string is not checked for valid keyword pairs, an attacker can insert extra characters, potentially accessing sensitive data or other resources on the server. Use Windows authentication wherever possible. If you must use SQL Server logins, use the SqlConnectionStringBuilder to create and validate connection strings at run time. +
Passwords
Many attacks succeed because an intruder was able to obtain or guess a password for a privileged user. Passwords are your first line of defense against intruders, so setting strong passwords is essential to the security of your system. Create and enforce password policies for mixed mode authentication. +
Always assign a strong password to the sa account, even when using Windows Authentication.
2,6 bilhões de senhas violadas: https://www.dashlane.com/?utm_source=HowSecureIsMyPassword&utm_medium=affiliates&utm_campaign=SiteFooter