Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web Apps mais [In]Seguras

Web Apps mais [In]Seguras

Palestra que foi ministrada pelo grande amigo Matheus Mendes (https://br.linkedin.com/in/matheusrochamendes/pt) abordando sobre conceitos de seguranças, gargalos, OWASP e sobre o quão vulneráveis nossas app's pode estar.

Opensanca

April 12, 2016
Tweet

More Decks by Opensanca

Other Decks in Technology

Transcript

  1. WEB APPS MAIS SEGURAS MATHEUS ROCHA MENDES ▸ Arquiteto de

    soluções @ Entelgy Brasil ▸ Graduado em processamento de dados pela FATEC-TQ ▸ Pós graduado com MBA em eng. de software pela FIAP-SP ▸ 10 anos de experiência ▸ Fã de arquitetura e design de software ▸ Newbie em segurança digital / desenvolvimento seguro
  2. WEB APPS MAIS SEGURAS HACKER, PHREAKER, LAMMER, CRACKER... ▸ Códigos

    maliciosos em clipper, c, vb. ▸ Template building para virus e trojans (delphi e vb) ▸ Conhecimento abundante e difícil de filtrar ▸ A tão secreta deep-web de hoje
  3. WEB APPS MAIS SEGURAS JAVA ▸ Aplicação de baixa concorrência

    ▸ JVM - Buffer overflow "proof" ▸ Aplicação desktop ▸ Não exposta na web ▸ Ambiente controlado
  4. WEB APPS MAIS SEGURAS TRABALHANDO NA CAPITAL ▸ Editora com

    milhões de assinantes ▸ Principal publicação com mais de 1 milhão de assinantes ▸ Portal de benefícios com mais de 3 mil acessos / dia ▸ Concorrência para disputa de eventos (jantar, cinema, shows, etc) ▸ Concurso cultural ▸ Hot-sites da noite pro dia
  5. WEB APPS MAIS SEGURAS TRABALHANDO NA CAPITAL ▸ Java 4

    e 5 ▸ EJB 2.1, Spring, Struts 1, Struts 2, Wicket, JSF 1.2 ▸ Ant / Maven ▸ Muito legado ▸ Varias integrações via arquivo e serviço com CRM e CDMS ▸ Dados de pagamento espalhados em vários sistemas
  6. WEB APPS MAIS SEGURAS IHHH... A CASA CAIU ▸ Dezenas

    de páginas com javascript malicioso ▸ Acesso root a algumas máquinas ▸ Acesso as credenciais de banco ▸ Acesso a máquinas consideradas "isoladas" ▸ Dados de pagamento ? esses estavam a salvo ufa ! #sqn ▸ De quem é a culpa ?
  7. WEB APPS MAIS SEGURAS IHHH... A CASA CAIU ▸ Segurança

    não era uma diretriz coletiva ▸ Operação na mão de terceiros ▸ Integração continua pela metade ▸ Area de negócio um pouco distante dos times de devs ▸ Segurança reativa e não proativa ▸ 6 meses de log (wtf?)
  8. WEB APPS MAIS SEGURAS OWASP ▸ Open Web Application Security

    Project ▸ Dezembro 2001 ▸ Core Values: Open , Innovation, Global, Integrity ▸ +100 projetos ▸ 2000+ Membros individuais ▸ 40+ Corporações associadas
  9. WEB APPS MAIS SEGURAS OWASP TOP 10 ▸ Guideline de

    boas práticas relacionadas a segurança ▸ Lista os 10 riscos considerados os mais críticos ▸ Exemplo de ataques ▸ Informações de como prevenir ou mitigar determinas vulnerabilidade ▸ Indicação de implementações de referência
  10. WEB APPS MAIS SEGURAS A1 - INJECTION ▸ Fazer com

    que a aplicação execute comandos arbitrários através de um interpretador em uso (SQL, Shell, LDAP, Xpath, etc) ▸ Impacto: O céu é o limite ! ▸ Exemplo: String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") + "'";
  11. Firewall Hardened OS Web Server App Server Firewall Databases Legacy

    Systems Web Services Directories Human Resrcs Billing Custom Code APPLICATION
 ATTACK Network Layer Application Layer Accounts Finance Administration Transactions Communication Knowledge Mgmt E-Commerce Bus. Functions HTTP request! SQL query! DB Table ! ✇ HTTP response " ✇ 1. Aplicação disponibiliza um form 2. O hacker envia um ataque de injeção através do form 3. A aplicação deixa passar e envia o comando SQL para o banco 4. O banco executa o comando contendo o ataque e envia os dados criptografados de volta para a aplicação 5. A aplicação descriptografa os dados e envia de volta para o hacker Account: SKU: Account: SKU:
  12. WEB APPS MAIS SEGURAS A1 - INJECTION - COMO PREVINIR

    ▸ Validação positiva (whitelist) é sempre o mais recomendado porém não garante 100%. Algumas aplicações precisam receber caracteres especiais ▸ Utilizar APIs parametrizáveis (Hibernate, Prepared Statement, etc) e/ou escapar os caracteres especiais ▸ https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
  13. HIBERNATE (JAVA) Query HQLQuery = session.createQuery(“FROM accounts WHERE custID='“ +

    request.getParameter("id") + "'"); RAILS 4 (RUBY) params[:name] = "' OR 1=1;" User.update_all("admin = 1 WHERE name LIKE '%#{params[:name]}%'") DB-API (PYTHON) cmd = "update people set name='%s' where id='%s'" % (name, id) curs.execute(cmd)
  14. WEB APPS MAIS SEGURAS A2 - BROKEN AUTHENTICATION AND SESSION

    MANAGEMENT ▸ Geralmente em função de má programação ou má configuração, os dados de login e sessão ficam expostos. Propiciando um cenário onde o hacker consegue roubar a conta ou sessão de um usuário. ▸ Impacto: Conta e sessão comprometidos ▸ Exemplo: www.meusite.com/teste?JSESSIONID=9AF1DB4EA9CC8...
  15. WEB APPS MAIS SEGURAS A2 - BROKEN AUTHENTICATION AND SESSION

    MANAGEMENT - COMO PREVINIR ▸ Arquitetura de autenticação deve ser sempre revista e padronizada ▸ Use sempre o session ID do seu container ▸ Certificado SSL ▸ Garantir que o logoff sempre invalide a sessão ▸ www.owasp.org/index.php/Authentication_Cheat_Sheet
  16. WEB APPS MAIS SEGURAS A3 - CROSS-SITE SCRIPTING (XSS) ▸

    Código malicioso é enviado para o browse de um usuário A. Persistido B. Refletido C. "Direto" ▸ Impacto: Roubo de sessão, phising, roubo de dados, botnet, etc ▸ Exemplo: javascript:alert(document.cookie)
  17. Application with stored XSS vulnerability 3 2 Attacker sets the

    trap – update my profile Attacker enters a malicious script into a web page that stores the data on the server 1 Victim views page – sees attacker profile Script silently sends attacker Victim’s session cookie Script runs inside victim’s browser with full access to the DOM and cookies Custom Code Accounts Finance Administration Transactions Communication Knowledge Mgmt E-Commerce Bus. Functions
  18. WEB APPS MAIS SEGURAS A3 - CROSS-SITE SCRIPTING (XSS) -

    COMO PREVINIR ▸ Não inclua nada que seja enviado pelo usuário no seu html (?!?!?!?!) ▸ Use políticas de conteúdo Use encoders para imprimir o conteúdo White-list AntiSamy ▸ www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
  19. WEB APPS MAIS SEGURAS A4 - INSECURE DIRECT OBJECT REFERENCES

    ▸ Assumir que determinada funcionalidade está garantida por fluxos de tela/api e não garantir a proteção dos dados também do lado do servidor ▸ Impacto: Acesso a dados não autorizados ▸ Exemplo: http://meusite.com/user?account=1010 E se eu tentar... http://meusite.com/user?account=1011..1012..1013
  20. WEB APPS MAIS SEGURAS A4 - INSECURE DIRECT OBJECT REFERENCES

    - COMO PREVENIR ▸ Utilizar mapeamento temporário se possível, o recurso na url não deve representar um "caminho" real no servidor ▸ Verificar a permissão do usuário para acessar determinado conteúdo ▸ Exemplo: http://meusite.com/user?account=XPTCA [(XPTCA=1010), (ASCVA=1011)...]
  21. WEB APPS MAIS SEGURAS A5 - SECURITY MISCONFIGURATION ▸ Toda

    a plataforma em que a aplicação se encontra precisa estar devidamente configurada e segura. ▸ Impacto: Acesso root a maquina, backdoor, contas default ▸ Frameworks de healthcheck como spring-actuator, etc ▸ Exemplo: Vunerabilidades de SO, Contas com senhas default (admin:admin, scott:tiger)
  22. Hardened OS Web Server App Server Framework App Configuration Custom

    Code Accounts Finance Administration Transactions Communication Knowledge Mgmt E-Commerce Bus. Functions Test Servers QA Servers Source Control Development Database Insider
  23. WEB APPS MAIS SEGURAS A5 - SECURITY MISCONFIGURATION - COMO

    PREVENIR ▸ Manter SO sempre atualizado ▸ Hardening guideline ▸ Automatização de configuração e ambiente ▸ Dump de configuração para análise ▸ Ferramentas de scan para busca de vulnerabilidades conhecida
  24. WEB APPS MAIS SEGURAS A6 - SENSITIVE DATA EXPOSURE ▸

    Armazenar ou transmitir de maneira insegura dado sensíveis sobre seus usuários e/ou aplicação ▸ Impacto: Vazamento de dados, informações para facilitar outros ataques, etc ▸ Exemplo: Storage com Criptografia insegura Camada de transporte não protegida
  25. Custom Code Employees Business Partners External Victim Backend Systems External

    Attacker 1 External attacker steals credentials and data off network 2 Internal attacker steals credentials and data from internal network Internal Attacker CAMADA DE TRANSPORTE DESPROTEGIDA
  26. WEB APPS MAIS SEGURAS A6 - SENSITIVE DATA EXPOSURE -

    COMO PREVENIR ▸ Armazene apenas dados que forem realmente necessários ▸ Criptografia de ponta a ponta ▸ Tenha uma alternativa para troca de chaves quando necessário ▸ Desabilite algoritmos antigos de SSL ▸ Usar TLS e HSTS por todo o fluxo de dados ▸ Ferramentas de scan para busca de vulnerabilidades conhecida
  27. WEB APPS MAIS SEGURAS A7 - MISSING FUNCTION LEVEL ACCESS

    CONTROL ▸ Exibir apenas links e menus autorizados. Utilizar o "controle de acesso pela camada de apresentação". ▸ Impacto: Hacker utiliza funções do sistema que inicialmente ele não era autorizado para. ▸ Exemplo: www.meusite.com/user/accounts O hacker tenta www.meusite.com/admin/accounts
  28. WEB APPS MAIS SEGURAS A7 - MISSING FUNCTION LEVEL ACCESS

    CONTROL - COMO PREVENIR ▸ Restringir acesso (login, token access, etc) ▸ Utilizar um modelo baseado em papeis (role-based) ▸ Desabilitar requests para paginas não autorizadas (config files, log files, etc) ▸ Verificação manual de cada URL
  29. WEB APPS MAIS SEGURAS A8 - CROSS SITE REQUEST FORGERY

    (CSRF) ▸ Neste ataque o browser da vitima é utilizado para enviar uma requisição para um site vulnerável a CSRF ▸ Impacto: Executar transações personificando a vitima (transferencia, solicitação de serviços, etc), roubo de conta, acesso a dados sensíveis. ▸ Exemplo: www.meusite.com/transferFundos.action?id=2134
  30. 3 2 Attacker sets the trap on some website on

    the internet
 (or simply via an e-mail) 1 While logged into vulnerable site,
 victim views attacker site Vulnerable site sees legitimate request from victim and performs the action requested <img> tag loaded by browser – sends GET request (including credentials) to vulnerable site Custom Code Accounts Finance Administration Transactions Communication Knowledge Mgmt E-Commerce Bus. Functions Hidden <img> tag contains attack against vulnerable site Application with CSRF vulnerability
  31. WEB APPS MAIS SEGURAS A8 - CROSS SITE REQUEST FORGERY

    (CSRF) - COMO PREVENIR ▸ Token secreto em todas as requisições importantes ▸ Esse token deve ser criptografado ou gerado de forma aleatoria ▸ O token pode ser único e ficar armazenado na sessão, e adicionado em todos os forms e links através de um campo hidden ▸ Segundo fator de autorização/autenticação também pode ser usado para transações importantes
  32. WEB APPS MAIS SEGURAS A9 - USING KNOWN VULNERABLE COMPONENTS

    ▸ Algumas vulnerabilidades são conhecidas (dbexploit, cve, irc, deep web, etc) e hackers criam ferramentas para explorar e rastrear sites vulneráveis. ▸ Impacto: Difícil prever, pois depende da vulnerabilidade exposta, pode ser mínimo como também pode ser catastrófico. ▸ Exemplo: demo
  33. WEB APPS MAIS SEGURAS A9 - USING KNOWN VULNERABLE COMPONENTS

    - COMO PREVENIR ▸ Automatização para identificar se as bibliotecas usadas estão atualizadas e/ou vulneráveis ▸ Pesquisar em foruns e até mesmo na página da lib para vulnerabilidades conhecidas ▸ Preocupação do time de desenvolvimento com a segurança
  34. WEB APPS MAIS SEGURAS A10 - UNVALIDATED REDIRECTS AND FORWARDS

    ▸ Sites geralmente redirecionam o usuário para algum site externo utilizando parâmetros, estes se não forem validados permitem com que o hacker envie a vitima para um site de sua escolha ▸ Impacto: Redireciona a vitima para um phising ou malware.
  35. 3 2 Attacker sends attack to victim via email or

    webpage From: Internal Revenue Service
 Subject: Your Unclaimed Tax Refund
 Our records show you have an unclaimed federal tax refund. Please click here to initiate your claim. 1 Application redirects victim to attacker’s site Request sent to vulnerable site, including attacker’s destination site as parameter. Redirect sends victim to attacker site Custom Code Accounts Finance Administration Transactions Communication Knowledge Mgmt E-Commerce Bus. Functions 4 Evil site installs malware on victim, or phish’s for private information Victim clicks link containing unvalidated parameter Evil Site http://www.irs.gov/taxrefund/claim.jsp?year=2006& … &dest=www.evilsite.com
  36. WEB APPS MAIS SEGURAS A10 - UNVALIDATED REDIRECTS AND FORWARDS

    - COMO PREVENIR ▸ Evite usar redirect e forward ao máximo ▸ Se usar, evite receber parâmetros na URL ▸ Se você precisar de parâmetros, valide-os individualmente ▸ Garante que o usuário tem acesso ao destino solicitado