engenharia de software ii - teste de segurança de software
Post on 10-Aug-2015
58 Views
Preview:
TRANSCRIPT
TESTE DE SEGURANÇAEquipe:• Danilo Galvão• Emanuel Pantoja• Juliano Padilha• Luiz Venicio• Ricardo Arthur
SUMÁRIO
Introdução Por que testes de segurança de software? O papel do testador de segurança de software Abordagens de testes de segurança de software Criando planos de testes com base na Modelagem de Ameças Padrões de Ataques Os pricipais problemas de segurança de software Demonstração Conclusão
INTRODUÇÃO
Os testes de segurança de software são esseciais para garantir:
• Confidencialidade;• Integridade;• Disponibilidade;• Autencidade;• Não-repúdio.
Asseguram que requisitos de segurança de software foram garantidos no desenvolvimento, mesmo quando estes requisitos não fazem parte das especificações funcionais.
INTRODUÇÃO
“Testes de segurança ajudam a descobrir brechas que podem causar a perda de informações importantes.”
INTRODUÇÃO Abordagem de Teste de Segurança
POR QUE TESTE DE SEGURANÇA ?
Os testes “tradicionais” buscam avaliar as funcionalidades do software.
Validar a capacidade de proteção do software contra acessos internos ou externos não autorizados.
Os testes de segurança podem ser considerado o “alicerce” para os demais testes.
POR QUE TESTE DE SEGURANÇA ?
O PAPEL DO TESTADOR DE SEGURANÇA DE SOFTWARE
Participar de todo o processo de desenvolvimento de software.
Ter capacidade técnica e conhecimento de segurança para testar software.
Atestar que o software está pronto para ser distribuído.
ABORDAGENS PARA TESTE DE SEGURANÇA
White Box
Black Box
Fuzzing
ABORDAGENS PARA TESTE DE SEGURANÇA
White Box
Teste onde o testador tem amplo conhecimento do software e acesso a código fonte.
Vantagem Permite um teste completo de todas as
características do software. Desvantagem
O teste pode ficar inviável com um número grande de linhas de código.
ABORDAGENS PARA TESTE DE SEGURANÇA
Black Box
Teste onde o testador tem o mesmo conhecimento e privilégios de acesso de um usuário comum.
Vantagens Pode ser executado sem acesso a “solution”
(código fonte compilável). É possível testar controles em “run-time”
Desvantagens O testador necessita de conhecimentos
avançados em segurança de software. Pode ser necessário realizar uma engenharia
reversa de software.
ABORDAGENS PARA TESTE DE SEGURANÇA
ABORDAGENS PARA TESTE DE SEGURANÇA
Fuzzing
Técnica para injeção de falhas Escalável – funciona com qualquer linguagem Versátil – Host ou Rede
PLANOS DE TESTES COM BASE NA MODELAGEM DE AMEAÇA
Para um teste eficaz é necessário utilizar as características que foram identificadas e documentadas na Modelagem de Ameaças que é realizada na fase de design do desenvolvimento de software
MODELAGEM DE AMEAÇA
Abordagem estruturada usada para identificar e mensurar riscos aos recursos gerenciados pelo software.
Permite que o design enderece os riscos de segurança.
Define os requisitos e recursos de segurança.
Ajuda a revisar os testes e revisões de código.
PROCESSO DE MODELAGEM DE AMEAÇAS
PROCESSO DE MODELAGEM DE AMEAÇAS
Identify Assets Identificar os bens valiosos que seu sistema deve
proteger. Create a Architecture Overview
Utilizar diagramas e tabelas simples para documentar a arquitetura de seu aplicativo, inclusive subsistemas, limites de confiança e fluxo de dados
Decompose the Application Decompor a arquitetura do aplicativo para criar um
perfil de segurança para o aplicativo. O objetivo do perfil é revelar vulnerabilidades do projeto, implementação ou configuração de implementação do aplicativo.
PROCESSO DE MODELAGEM DE AMEAÇAS
Identify the Threats Conhecer os objetivos de um invasor, a arquitetura e
as possíveis vulnerabilidades da aplicação, identificar as ameças que poderiam afetar a aplicação.
Document the Threats Documentar cada ameaça utilizando um modelo
comum de ameaça que defina um conjunto central de atributos a capturar para cada ameaça.
Rate the Threats Classificar as ameaças de modo a priorizar e tratar
as ameaças mais significativas primeiro. Essas ameaças apresentam riscos maiores. Considera-se a probabilidade de danos que ele
causaria.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE
SQL Injection XSS (Cross Site Scripting) Quebra de Autenticação e Gerenciamento de Sessão Referência direta à objetos Cross-Site Request Forgery (CSRF) Falhas de Configuração Armazenamento Inseguro Falha na Restrição de Acesso à URLs Canal Inseguro Redirecionamentos Não-Validados Entre outros…
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARESQL Injection
É um tipo de ataque muito simples, baseia-se na execução de comandos SQL. Comandos de manipulação de dados - DML (SELECT, INSERT, UPDATE, DELETE) ou comandos de definição de dados – DDL (CREATE, DROP, ALTER).
Os comandos são injetados em campos de formulários que são disponibilizados para os usuários inserir/tratar informações.
Ocorre por haver a falta de validação de parâmetros fornecidos por usuários.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARESQL Injection
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARESQL Injection
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARESQL Injection – Como Resolver
Validação sozinha não resolve!• Mesmo com as expressões regulares mais
complexas, há meios de burlá-la.
Forma recomendada! Like a Jedi.. • Interface padronizada para trabalhar com bancos de
dados, como:• PDO -> PHP• JDBC -> Java• Abstrair a complexidade e fornecer um conjunto de
padrões.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREXSS (Cross Site Scripting)
Consiste em uma vulnerabilidade causada pelas falhas nas validações dos parâmetros de entrada do usuário e resposta do servidor na aplicação web.
Este ataque permite que scripts seja inserido de maneira arbitrária no navegador do usuário alvo.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREXSS (Cross Site Scripting)
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREXSS (Cross Site Scripting) Qual o impacto e as principais consequências do
ataque?• Sequestro de sessão de usuários;
• Alteração do código HTML do aplicativo (visível somente do lado do cliente);
• Redirecionar o usuário para sites maliciosos;
• Alteração do objeto DOM(Modelo de Objetos do Documento) para captura de dados ou envio de malware.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREXSS (Cross Site Scripting)
Tipos:
• Persistente
• Não-Persistente
• DOM (Document Object Model)
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREXSS (Cross Site Scripting)
Persistente
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREXSS (Cross Site Scripting)
Não-Persistente
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREXSS (Cross Site Scripting)
DOM
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREXSS (Cross Site Scripting) Como proteger-se contra ataques XSS?
• Não há meios concretos de proteger-se (usuário), pois são ataques que ocorrem devido a vulnerabilidade de aplicações web que o host está executando.
• SSL pode protegê-lo de um ataque XSS = MITO!
• Encriptação de dados não significa nada para um atacante que explora vulnerabilidades a XSS.
• Então não existe uma solução?
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREXSS (Cross Site Scripting) Como proteger-se contra ataques XSS?
• Validação de entrada
• Validação de saída
• Validação de elementos DOM
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREQuebra de Autenticação e Gerenciamento de
Sessão
Ocorre quando a falha na segurança permite que login’s, senhas ou dados de conexão (como cookies) sejam capturados por terceiros.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREReferência direta a objetos
Ocorre quando a referência a um objeto interno fica exposta, permitindo que ela seja manipulada em função de acesso não autorizados a dados.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE
Cross Site Request Forgery (CSRF)
É uma classe de ataques que explora a relação de
confiança entre um aplicativo web e seu usuário legítimo;
O Ataque mais comum utiliza uma tag de imagem (img src)
no documento HTML. No “src” é inserido link’s maliciosos;
A vítima acessa um site malicioso enquanto está logada no
sistema vulnerável;
O atacante “induz” a vítima a fazer tal requisição.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE
Cross Site Request Forgery (CSRF)
Etapas de exploração em Aplicações Vulneráveis:
1. Autenticação do Usuário;
2. Acesso ao Aplicativo Malicioso;
3. Requisição à Aplicação Alvo;
4. Execução da Operação;
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE Cross Site Request Forgery (CSRF)
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE Cross Site Request Forgery (CSRF)
Exemplo;
<img src="http://bank.co/transfer.do?acct=HACKER&amount=100000" width="1" height="1" border="0">
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE Cross Site Request Forgery (CSRF)
Prevenção
• Não exibir imagens externas;
• Não clicar em links de Spam ou não confiáveis nos
e-mails, bate-papo e etc;
• Exigir um segredo, específico do token do usuário;
• Limitar o tempo de vida de cookies da sessão;
• Exigir que o cliente forneça dados de autenticação.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE Falhas de Configuração• Aplicações Rodam em Cimas de Serviçoes que
rodam em cima de SO’s;• Todos Sistemas podem ser vetores de ataques;• Falhas Humanas;• Versões Desatualizadas.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE Falhas de Configuração• Exemplo: 10/12/2012
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE Falhas de Configuração
Prevenção
- Realizar atividades Corretivas;
- Patches e Atualizações;
- Equipe de Testes;
- Especialista em cada Software/Aplicação.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREProteção Insuficiente da Camada de
Transporte
• A internet pública é hostil
• Tráfego de dados pode ser capturado
• Visualização / Modificação de informações
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREProteção Insuficiente da Camada de
Transporte
• Como prevenir-se contra de falha de proteção da Camada de Transporte?
• Utilize criptografia
• Certificado Digital
• Confidencialidade e Autenticidade
• Algoritmos seguros
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREProteção Insuficiente da Camada de
Transporte
• Exemplo 1:
• Um site que não usa SSL em todas as páginas que requerem autenticação
• Um atacante pode monitorar o tráfego da rede e observar os cookies de autenticação de sessão da vítima
• O atacante pode então copiar o cookie e assumir o controle da sessão da vítima
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWAREProteção Insuficiente da Camada de
Transporte
• Exemplo 2:• Um site com configurações de certificado SSL
inválidas
• Usuários tem que aceitar avisos para poder usar o site, e se acostumam com eles
• Sites maliciosos exibem avisos semelhantes
• Se as vítimas estiverem acostumadas com estes avisos, elas podem entrar em sites maliciosos e fornecerem senhas ou outros dados privados
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARERedirecionamentos Não-Validados
• Requisição forjada com instrução de redirecionamento
• Aplicação não valida o parâmetro e redireciona a vítima para site malicioso
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARERedirecionamentos Não-Validados
• Como proteger-se de redirecionamentos não validados
• Simplesmente evite usar redirects e forwards
• Se usar, não envolva parâmetros do usuário no cálculo do destino
• Se parâmetros do usuário não puderem ser evitados, certifique-se os valores fornecidos são válidos e autorizados para o usuário
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARERedirecionamentos Não-Validados
• Exemplo 1:
http://www.example.com/redirect.jsp?url=evil.com
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARERedirecionamentos Não-Validados
• Exemplo 2:
http://www.example.com/boring.jsp?fwd=admin.jsp
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE Armazenamento Criptográfico Inseguro
Falhas de implementação de mecanismos de criptografia podem colocar em risco as informações armazenadas;
Um atacante pode aproveitar essa vulnerabilidade e tentar obter acesso aos conteúdos de dados sensíveis à aplicação;
Utilizar algoritmos reconhecidos; Não utilizar algoritmos fracos.
PRINCIPAIS PROBLEMAS DE SEGURANÇA DE SOFTWARE Falha ao Restringir Acesso à URLs
Essa falha permite que usuários não autorizados acessem páginas restritas da aplicação;
Caso um mecanismo de controle de acesso não seja implementado de forma adequada, é possível que um usuário tenha acesso a páginas ou informações que não deveriam ser permitidas;
Implementar controles de acessos, adequados a lógica de negócio e funções da aplicação;
Realizar testes de penetração.
PADRÕES DE ATAQUE
Uma série de passos repetitivos que podem ser aplicados de uma forma consistente e confiável para simular um ataque contra um sistema de software
“CAPEC” - http://capec.mitre.org/
Projeto que tem como objetivo identificar e documentar padões de ataques de possam ser utilizados para testes de segurança de software.
PADRÕES DE ATAQUE
ATAQUES MAIS COMUNS
DDoS ATTACK Maneira relativamente simples de derrubar algum service.
Port Scanning Attack Técnica bastante utilizada para encontrar fraquezas
em um determinado servidor. Cavalos de Tróia, vírus e outros malwares
Normalmente desenvolvidos com o único objetivo de gerar destruição do alvo.
Ataques de Força Bruta É uma estrategia usada para quebrar a cifragem de
um dado percorrendo uma lista de possíveis chaves com um algoritmo de busca até que a chave seja encontrada
DEMONSTRAÇÃO
CONCLUSÃO
Testes de segurança irão garantir: Que o software desenvolvido terá sua garantia
de funcionalidade e não trará riscos aos seus beneficiados.
Que o processo de resposta a incidentes após a entrega do software não será traumático devido a falhas que não foram identificadas durante o processo de desenvolvimento.
Que todas as informações e expectativas de segurança do cliente serão entregues.
CONCLUSÃO O Que fazer com os resultados dos testes?
Identificar suas deficiências e capacitar os recursos envolvidos no desenvolvimento de software.
Identificar e desenvolver políticas com padrões que garatem o desenvolvimento de um software mais seguro.
Trabalhar e buscar a viabilização da inclusão de recursos de segurança no processo de desenvolvimento de software.
REFERÊNCIAS• http://codigofonte.uol.com.br/artigos/evite-sql-injection-usando-
prepared-statements-no-php• http://www.blogcmmi.com.br/engenharia/top-10-vulnerabilidades-em-
aplicativos-web-owasp• http://pt.slideshare.net/clavissecurity/principais-ameas-aplicaes-web-
como-explorlas-e-como-se-proteger• http://pt.slideshare.net/Qualister/testes-de-segurana• http://pt.slideshare.net/conviso/testes-de-segurana-de-software-
teched-2008-presentation• http://www.redesegura.com.br/2012/01/saiba-mais-sobre-o-cross-
site-scripting-xss/• http://imasters.com.br/artigo/9879/seguranca/xss-cross-site-scripting/• http://www.documentoeletronico.com.br/faqTEC010.asp• http://parul.info/fuzzing-mutation-vs-generation/• http://capec.mitre.org/index.html• http://www.devmedia.com.br/evitando-sql-injection-em-aplicacoes-
php/27804• http://www.devmedia.com.br/sql-injection-em-ambientes-web/9733
REFERÊNCIAS• www.redesegura.com.br%2F2012%2F03%2Fserie-ataques-os-ataques-
cross-site-request-forgery-csrf%2F&h=ZAQEJv-aw• www.pt.wikipedia.org%2Fwiki%2FCrosssite_request_forgery&h=ZAQEJv-
aw• http://www.slideplayer.com.br%2Fslide%2F391589%2F&h=ZAQEJv-aw• https://www.owasp.org/index.php/Top_10_2010-A9
Insufficient_Transport_Layer_Protection
• https://www.owasp.org/index.php/Top_10_2010-A10-Unvalidated_Redirects_and_Forwards
top related