Slides3 Desenvolvimentoseguro
Slides3 Desenvolvimentoseguro
Slides3 Desenvolvimentoseguro
Desenvolvimento Seguro
§ Conformidade de sistemas
§ Legislações
§ HIPAA, LGPD, etc
§ Padrões Internacionais
§ Referência
§ Capítulo 1 do livro do Bruno Fraga
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Código de conduta
§ Diversas áreas possuem seus códigos
§ Julgamento dos pares
§ Computação (ACM)
§ Morais
§ Evitar danos a terceiros, não discriminar, dá crédito a propriedade intelectual, entre outros
§ Responsabilidades
§ Respeitar as leis, adquirir e manter competência, honrar contratos, entre outros
§ Gerenciais (Liderança)
§ Gerir pessoas e recursos, especificar e autorizar o uso adequado dos recursos, entre outros
Desenvolvimento Seguro
§ Código de conduta
§ Segurança (ISC)
§ Proteger a sociedade, a comunidade e a infraestrutura
§ Agir com honra, honestidade, justiça, responsabilidade e legalidade
§ Prover um serviço diligente e competente
§ Avançar e proteger a profissão
§ Testes de invasão (EC-Council)
Desenvolvimento Seguro
§ Código de conduta
§ Testes de invasão (EC-Council)
§ Privacidade
§ Divulgação autorizada
§ Propriedade intelectual
§ Não realizar atividades ilegais
§ Possuir autorizações
§ Qualidade do serviço
§ Gerenciamento e área de expertise
§ Compartilhamento de conhecimento
Desenvolvimento Seguro
§ Motivação
§ Softwares estão sujeitos a falhas
§ Acidentais: Erros de operação e programação
§ Intencionais: Ataques maliciosos que exploram eventuais vulnerabilidades
§ Fator humano
§ Codificação ingênua
§ Incidentes de segurança afetam as propriedades de segurança
§ Nível de impacto é variável
§ Riscos de segurança sempre existiram, mas aumentaram bastante com o desenvolvimento
Web
§ Envolvem aspectos relacionados com a rede de comunicação e/ou da própria aplicação
§ Plataformas móveis também possuem alta exposição
Desenvolvimento Seguro
§ Software seguro é um software “livre” de vulnerabilidades e que funciona conforme
pretendido, sem comprometer as propriedades de segurança
§ Os softwares são desenvolvidos seguindo um processo que envolve algumas fases
§ O esforço para alterações em fases tardias são mais custosos
§ Envolvendo ou não requisitos de segurança
§ Existe ainda eventuais danos em casos de ataques, caso as falhas não sejam identificadas
previamente
Desenvolvimento Seguro
§ https://www.microsoft.com/pt-br/download/details.aspx?id=12379
Desenvolvimento Seguro
§ Treinamento
§ Nivelamento da equipe de desenvolvimento
§ Conceitos abordados
§ Princípios de projeto de segurança: privilégio mínimo, padrões abertos, defesa em profundidade,
etc.
§ Modelagem de ameaças
§ Como um atacante ver a aplicação?
§ Vetores de ataques e potenciais vulnerabilidades
§ Como se proteger e testar aplicações?
§ Boas práticas de codificação segura
§ Metodologias de testes
§ Privacidade de dados
Desenvolvimento Seguro
§ Requisitos
§ Além dos requisitos funcionais da aplicação, os requisitos de segurança devem ser
determinados
§ Análise de custos
§ Ex. gerenciamento de backup
§ Compatibilidade com as regras de negócio
§ Ex. gerenciamento de senhas
§ Gestão de segurança
§ Análise de riscos
§ Aceitação de riscos conhecidos
§ Conscientizar o cliente que segurança não é custo
§ Danos de incidentes de segurança
Desenvolvimento Seguro
§ Projeto
§ Redução da superfície de ataque
§ Ex. Isolar banco de dados
§ Modelagem de ameaças
§ Considera aspectos da arquitetura da aplicação
§ Identificação dos ativos e potenciais vulnerabilidades
§ Classificação de dados (informações sensíveis)
§ Padrões de ataques
§ Normalmente existe diversos ataques realizados em conjunto
§ Documentação e classificação das ameaças
§ Definição de controles de segurança
§ Observar princípios de projeto
§ Ex. Algoritmos de criptografia
§ Uso de um checklist
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Implementação
§ Boas práticas gerais de codificação
§ Revisão de código
§ Análise estática
§ Manual e automatizada
§ Codificação segura
§ Foi previsto na fase de projeto diversos controles. É a hora de implementá-los adequadamente
§ Uso de ferramentas aprovadas e algoritmos seguros
§ Boas práticas para evitar ataques que explorem as falhas na codificação
Desenvolvimento Seguro
§ Verificação
§ Testes de software
§ Análise Dinâmica
§ Verificar comportamento do sistema quanto os aspectos de segurança
§ Ex. Problemas de privilégios
§ Ferramentas auxiliares
§ Testes de penetração
§ Teste de fuzzing
§ Gerar falhas por meio da inserção de dados aleatórios/defeituosos
§ Análise das exceções
§ Auditoria
§ Revisar modelo de ameaças e superfície de ataque
Desenvolvimento Seguro
§ Liberação (Release)
§ Plano de gestão de incidentes
§ Equipe e serviços/procedimentos a serem realizados
§ Gestão de vulnerabilidades (cap. 7)
§ Ciclo das vulnerabilidades
§ Teste de patch de correção
§ Revisão de segurança
§ Checklist
§ Arquivamento de documentos e códigos
Desenvolvimento Seguro
§ Resposta
§ Execução do plano de gestão de incidentes
§ Aprender com os erros
Desenvolvimento Seguro
§ Outras metodologias S-SDLC
§ OWASP CLASP (Comprehensive, Lightweight Application Security Process)
§ Guia para equipe de desenvolvimento
§ Melhores práticas
§ Responsabilidades
§ Atividades
§ Vulnerabilidades e estratégias de mitigação
§ Estruturado em componentes a serem integrados aos processos de desenvolvimento
§ Visões
§ Recursos
§ Casos de uso
Desenvolvimento Seguro
§ Boas práticas
§ Relacionadas com diversas fases do SDL
§ Especialmente com a fase de implementação
§ Mitigação dos riscos existentes
§ Programação defensiva
§ Manter-se atualizado
§ Recomendações OWASP (Proactive Controls)
§ http://cutt.ly/lyIuUSN
§ https://owasp.org/www-project-proactive-controls/
Desenvolvimento Seguro
§ Programação defensiva
§ Jamais assumir que o usuário irá utilizar o programa conforme esperado
§ Verificar consistência e completude de todos dos dados manipulados
§ Adotar práticas recomendadas
§ CERT, OWASP e Microsoft
§ As iniciativas envolve não apenas padrões de codificação
§ Modelagem de ameaças
§ Análise de código
§ Testes de segurança
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Definir requisitos de segurança
§ Observar as necessidades de segurança da aplicação
§ Legislação e órgãos de padronização
§ Existem catálogos que relacionam os requisitos com os respectivos controles
§ OWASP Application Security Verification Standard (ASVS)
§ Exposição de dados sensíveis
§ Comunicação segura (SSL/TLS)
§ Salvar senhas com hash e salt
§ Visão geral sobre padrões de segurança
§ Outros controles são mais específicos
§ Identificar e testar soluções
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Proteger o acesso aos bancos de dados
§ Consultas parametrizadas
§ Validação da entrada
§ Configuração adequada dos controles de segurança existentes nos SGBD
§ Acesso autenticado e autorizado
§ Comunicação protegida
§ Diretamente relacionado com SQL Injection
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Validação de dados
§ Verificar sintática e semanticamente as entradas
§ A entrada possui tipo e valor apropriado (ex. intervalo de datas)
§ Uso de expressões regulares
§ Uso de listas (branca ou preta) no processo de validação
§ Validação sempre no lado do servidor
§ Reduz a superfície de ataque
§ Nem sempre é possível distinguir entradas legítimas de maliciosas
§ Ex. SIGAA permite formatação dos textos
§ Deve ser utilizado em conjunto com outros controles
§ Diversos frameworks possuem métodos para validação de entradas
§ Relacionado com ataques de injeção, XSS e desserialização insegura
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Aplicar controle de acesso
§ Verificação de permissões (autorização)
§ Toda requisição deve ter a permissão verificada
§ Ex. Comandos SQL para apagar dados/tabelas
§ Ex. Acesso a páginas de uma aplicação
§ Princípio do privilégio mínimo
§ Bloquear por padrão
§ Existem alguns mecanismos de controle de acesso
§ Lista de Controle de Acesso (ACL): quem pode acessar e quais as permissões (leitura/escrita)
§ Registrar eventos de controle de acesso
§ Tentativas erradas indicam a tentativa de ataques
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Registro de logs e monitoramento
§ A análise de logs é essencial na investigação de um incidente e busca por soluções
§ Pode ser usado por sistemas de detecção de intrusão e para satisfazer requisitos
regulatórios
§ Não pode armazenar informação confidencial
§ O ideal é possuir proteção contra adulteração e ter localização distribuída
§ Algumas informações são padronizadas
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Principal referência: OWASP
§ Fundação sem fins lucrativos com diversos projetos inerentes a segurança Web (e também
Mobile)
§ Top Ten Vulnerabilities
§ Condificação segura
§ Controles proativos
§ Developers Guide (https://wiki.owasp.org/index.php/OWASP_Guide_Project)
§ Guia de referência rápida (https://owasp.org/www-pdf-archive/OWASP_SCP_v1.3_pt-BR.pdf)
§ Testing Guide
§ Testes relacionados a todo processo de desenvolvimento
§ Code Review Guide (https://wiki.owasp.org/index.php/Category:OWASP_Code_Review_Project)
§ Foco em testes de penetração
§ Ferramentas de apoio (WebScarab e WebGoat)
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Exemplo de ataque
§ Digitar a seguinte informação em um campo da aplicação
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Entendendo o ataque
§ Esse comando retorna todos os usuários, mas como foi executado no login o acesso será
feito com o primeiro usuário da tabela (normalmente um administrador)
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Como se proteger?
§ Não confie em seus usuário
§ Ambiente Web
§ Sempre valide/trate as entradas
§ Frameworks podem fazer essa validação se
usados corretamente
§ A biblioteca JDBC foi utilizada no código
anterior
§ Consultas parametrizadas
§ Java (PerparedStatement) Rodrigo Ferreira. Segurança em aplicações Web. Casa do Código
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Inerente ao uso de trechos de HTML (e scripts) em campos de uma aplicação e em
URLs
§ Os campos podem, por exemplo, personalizar as páginas (ex. SIGAA) ou inserir
comentários
§ O ataque é “concretizado” sempre que a página for acessada pela vítima
§ Execução do script pelo navegador da vítima
§ Exemplos de ações
§ Adicionar como amigo, fazer postagens (Samy Worm)
§ Redirecionamentos ou envio de dados para páginas maliociosas
Desenvolvimento Seguro
§ Exemplo de ataque
§ Enviar um script para coletar dados por um campo de uma página
§ XXS Armazenado
§ Ao acessar a página que mostra os campos digitados o script é executado
§ Envio de dados fornecidos pela vítima
Desenvolvimento Seguro
§ Mascarando o ataque
§ Scripts em tags HTML
§ Codificação Hexadecimal
Desenvolvimento Seguro
§ Proteção
§ Validação e tratamento
§ Lista branca
§ Manter-se atualizado
§ XXS Filter Evasion Cheat Sheet
§ Bibliotecas AntiSamy
§ Configuração via XML
§ No exemplo, as tags são removidas
§ Mas é possível fazer o escape
§ O script aparece como texto simples
§ Exemplo de XSS Refletido
§ No exemplo, armazenamento ou processamento
da entrada limpa
Desenvolvimento Seguro
Rodrigo Ferreira. Segurança em aplicações Web. Casa do Código
§ https://www.hacksplaining.com/lessons
Desenvolvimento Seguro
§ É importante compreender os riscos associados ao desenvolvimento de softwares
§ As boas práticas estão relacionadas com controles para mitigar potenciais
vulnerabilidades
§ Metodologia para seleção do Top 10
§ Coleta de Dados: CWEs / CVEs / Análise de Apps (> 500 mil)
§ Contribuições científicas
§ Categorização e Classificação
§ Fatores
§ Passado e Futuro
§ Facilidade de exploração e mitigação
§ Impacto
Desenvolvimento Seguro
§ Quebra de controle de acesso
§ “As restrições sobre o que os usuários estão autorizados a fazer nem sempre são
corretamente verificadas. Os atacantes podem abusar destas falhas para aceder a
funcionalidades ou dados sem autorização, tais como dados de outras contas de usuário,
alterar as permissões de acesso, entre outros.”
§ Violação de princípios: privilégio mínimo e seguro por padrão
§ Tipo de permissão
§ Os ataques envolvem diferentes estratégias (não confundir com quebra de autenticação)
§ Elevação de privilégios
§ Alteração de URLs
§ Tokens JWT e configuração incorreta do CORS
§ Em aplicações complexas, a verificação pode ser inadequada em alguns pontos
§ Nem sempre é fácil encontrar os pontos vulneráveis
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Injeção
§ “Falhas de injeção, tais como injeções de SQL, OS e LDAP ocorrem quando dados não-
confiáveis são enviados para um interpretador como parte de um comando ou consulta
legítima”
§ Inclui: Cross-Site Scripting (XSS)
§ O atacante insere um script que podem ser executados no computador da vítima
§ Os scripts podem “sequestrar” sessões do usuário, desfigurar sites, ou redirecionar
§ Vulnerabilidade comum e bastante divulgada
§ Fácil de explorar e mitigar
§ Consultas e comandos são dinâmicos (usam dados fornecidos pelos usuários)
§ Uso de Frameworks para validação de dados (parametrização e escaping)
§ Impacto elevado
§ Acesso não autorizado e ações resultantes desse acesso (controle total)
§ Inserção, alteração e remoção de dados (e até tabelas inteiras)
Desenvolvimento Seguro
§ Design Inseguro
§ É diferente de implementação insegura
§ Problemas de design não são corrigidos por uma implementação perfeita
§ Falhas relacionadas ao projeto dos controles de segurança (ausentes ou ineficientes)
§ Modelagem de ameaças, nível de segurança desejado
§ Proteção
§ Uso de um SDL
§ Bibliotecas de padrões de design
§ Gerenciamento de riscos e análise adequada dos controles de segurança
§ Atenção aos recursos computacionais e as camadas de proteção
Desenvolvimento Seguro
§ Configurações de segurança incorreta
§ “Uma boa segurança exige a definição de uma configuração segura e implementada na
aplicação, frameworks, servidor de aplicação, servidor web, banco de dados e plataforma.
Todas essas configurações devem ser definidas, implementadas e mantidas, já́ que
geralmente a configuração padrão é insegura. Adicionalmente, o software deve ser
mantido atualizado.”
§ Inclui: Entidades externas de XML (XXE)
§ Referências a entidades externas dentro dos documentos XML
§ Proteção: Validação de dados, bibliotecas atualizadas, utilizar o formato JSON
§ As recomendações de proteção não podem ser negligenciadas
§ Testes podem detectar configurações incorretas
§ Tratamento de erros
§ Utilização de componentes vulneráveis
§ Eventualmente compromete um sistema por completo
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Falhas de identificação e autenticação
§ “As funções da aplicação que estão relacionadas com a autenticação e gestão de sessões
são muitas vezes implementadas incorretamente, permitindo que um atacante possa
comprometer passwords, chaves, tokens de sessão, ou abusar doutras falhas da
implementação que lhe permitam assumir a identidade de outros utilizadores (temporária
ou permanentemente).”
§ Fácil de explorar, mas a mitigação também depende do fator humano
§ Força bruta, dicionário, senhas padrões, falhas no gerenciamento de sessões (ausência de timeout)
§ Sessões abertas em PCs públicos, senhas fracas, fornecimento de códigos de verificação
§ Autenticação multi-fator, senhas fortes, proteção contra força bruta, identificadores de sessão
aleatórios e não explícito em URLs
§ Impacto elevado
§ Acesso não autorizado (eventualmente com controle total) e revelação de informações sensíveis
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Falhas de registro e monitoramento de segurança
§ “O registo e monitoramento insuficientes permite que os atacantes possam continuar
realizando ataques sem serem detectados. Alguns dos estudos demonstram a demora em
identificar violações de dados.”
§ Os testes de penetração mostram se registro está sendo feito adequadamente
§ Como e o que registrar?
§ Essa vulnerabilidade mostra a importância da definição e aplicação de um plano para
tratamento de incidentes
§ O monitoramento é uma atividade essencial desse plano para permitir a detecção de
ataques
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Os testes de segurança fazem parte de todo processo de desenvolvimento
§ Análise de documentos
§ Observação aspectos de segurança (requisitos e controles)
§ Revisão de código
§ Testes de invasão/penetração
§ Uso de ferramentas
Desenvolvimento Seguro
Desenvolvimento Seguro
§ Além de encontrar vulnerabilidades
§ Medir capacidade de detectar e se recuperar de ataques
§ Tipos de testes
§ Caixas preta, branca e cinza
§ Prevenção de danos
§ Plano de comunicação
Desenvolvimento Seguro
§ Metodologia PTES
§ Processo cíclico
§ Existem variações entre metodologias
§ Autorização prévia é indispensável
§ Não apenas voltado para segurança de aplicações
§ https://www.take.net/blog/tag/teste-de-invasao/
§ Fase 1: Preparação / Pré-engajamento
§ Autorização prévia é indispensável
§ Definição de escopo
§ Fase 2: Coleta de Informações
§ Engenharia social, Google Hacking e NMAP
§ Coleta de informações para auxiliar os testes
Desenvolvimento Seguro
§ Metodologia PTES
§ Fase 3: Modelagem de ameaças
§ Relacionamento das informações coletadas
§ Arquitetura da aplicação
§ Identificação de vetores de ataques
§ Mapeamento / Como Atacar?
§ Ferramentas: Web Spiders
§ É possível que alguns dados sejam obtidos com a evolução dos testes
§ Ex.: Campos das tabelas
§ Exemplos de achados
§ Recuperação de senha (ex. perguntas secretas)
§ Regras para criação senhas (critérios para força bruta) e usuários
Desenvolvimento Seguro
§ Metodologia PTES
§ Fase 4: Análise de vulnerabilidades
§ Descoberta de falhas
§ Ferramentas para varreduras de vulnerabilidades
§ Planejamento
§ Localizar exploits inerentes às vulnerabilidades conhecidas
§ Fase 5: Exploração de vulnerabilidades
§ Execução dos testes
§ Cuidado para não comprometer sistemas de produção
§ Não apenas detectar se uma aplicação está vulnerável
§ Identificação de potenciais danos
§ Identificação pontos para testes futuros
§ Ferramentas: Proxies de interceptação (Burp Suite, WebScarab) e Fuzzers
Desenvolvimento Seguro
§ Metodologia PTES
§ Fase 6: Pós-exploração
§ Como manter o controle do sistema?
§ Ex.: Backdoor, Criar uma nova conta
§ Apagar rastros
§ Os ataques nem sempre são identificados imediatamente
§ https://anchisesbr.blogspot.com/2020/09/seguranca-quanto-tempo-leva-para.html
§ Fase 7: Relatórios
§ Documentar o processo conforme público alvo
§ Relatórios técnicos e executivos
§ Incluir recomendações de mitigação, limitações (o que não foi testado) e como reproduzir ataques
https://sectigostore.com/blog/13-vulnerable-websites-
Desenvolvimento Seguro web-apps-for-pen-testing-and-research/