palestra - darkmira tour php 2016 - a ilusão das referências sobre desenvolvimento seguro

37
A ilusão das referências sobre desenvolvimento seguro @ThiagoDieb https://joind.in/talk/36594

Upload: thiago-dieb

Post on 17-Jan-2017

525 views

Category:

Technology


1 download

TRANSCRIPT

A ilusão das referências sobre

desenvolvimento seguro

@ThiagoDieb

https://joind.in/talk/36594

Thiago Dieb

Gerente de Desenvolvimento de Sistemas e consultor em Segurança da informação

http://dieb.com.brhttp://aszone.com.br /thiagodieb

1º REFLEXÃO

Autobahn

REALMENTE EXISTE CAMINHO SEGURO ?

Autobahn

CERTEZAS :

● NÃO EXISTE sistemas à prova de balas !● Sempre haverá FALHAS !

● Em algum momento seremos VÍTIMAS !

● A MORTE CHEGARÁ PRA TODOS !

Autobahn

2º REFLEXÃO

ESTAMOS CERTOS DE QUAL CAMINHO SEGUIR ?

INCERTEZAS:

● Como construir SISTEMAS SEGUROS ?● Meu sistema têm VULNERABILIDADES ?

● Como fui INVADIDO?● Como ele INVADIU novamente ?

● Extraterrestre EXISTE?

Realidade ?

Conhecem este senhor ?

Realidade ?

● Programador● Origem Alemã● Desenvolvedor do OpenSSL● Responsável por uma das maiores vulnerabilidades de 2014

“em uma das novas funcionalidades, infelizmente, eu me esqueci de validar uma variável contendo um comprimento”

Robin-Seggelmann

Responsável pelo HeartBleed, desde 2011.Revisor - Dr Stephen Henson, até então não deu sinal.

Realidade ?

Realidade ?

Desenvolvimento Seguro

Desenvolvimento Seguro

● Muitos desafios● Procedimentos complexos● Poucos conhecem● Não há garantia de 100% de segurança

OWASP - Top 10

● A1 - Injection

● A2 - Broken Authentication and Session Management

● A3 - Cross-Site Scripting (XSS)

● A4 - Insecure Direct Object References

● A5 - Security Misconfiguration

● A6 - Sensitive Data Exposure

● A7 - Missing Function Level Access Control

● A8 - Cross-Site Request Forgery (CSRF)

● A9 - Using Components with Known Vulnerabilities

● A10 - Unvalidated Redirects and Forwards

Vulnerabilidades

Sql Injection

Ataque que proporciona o invasor inserir ou manipular consultas SQL`s utilizadas por uma aplicação

Sql Injection

Como o problema pode ser resolvido ?

1º ilusão

"Confiar em todas as informações da internet"

Sql Injection

Resultado de uma simples busca no google :

http://www.vivaolinux.com.br/script/Funcao-Anti-MySQL-Injection-Proteja-sua-aplicacao

http://phpbrasil.com/artigo/v5Ejt4VOld2r/anti-sql-injection--solucao-global

Sql Injection

Bypass:

● “Sele*ct login,senha frofromm tabela_x”

● “Select login,senha from tabela_x

Onde está o erro?

Implementações sugeridas pelos artigos:

● “Select login,senha from tabela_x” => “login,senha tabela_x”

● preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"), "" ,$sql);

Sql Injection

Considerações:

● Sempre aplique validação nas entradas de dados, exemplo:

○ Inteiros - valide como inteiro

○ Strings - exclua as aspas

○ true, false - converta para bollean

● Utilize camada de abstração de dados (ORM).

● Recurso a Prepared Statements.

File Upload

Vulnerabilidade que permite efetuar upload de algum arquivo, no qual o sistema não está preparado.

2º ilusão

"Acreditar nas primeiras informações"

File Upload

Resultado de uma simples busca no google :

http://www.uolhost.com.br/faq/hospedagem/como-fazer-o-upload-de-arquivos-via-php.html#rmcl

http://wiki.locaweb.com/pt-br/PHP_-_Upload_de_arquivos

File Upload

Implementações sugeridas pelos artigos:

● Simplesmente não valida nada, e ainda diz pra usar 777 na pasta.

● if (!(eregi(".php$", $_FILES[arquivo][name]))) {● Esqueceu que apache interpreta, .php3, .php5

File Upload

Considerações:

● Ajustar as configurações dos serviços WEB;● IIS merece atenção;● Não confie apenas no mimetype ou extensão;● Atenção nas permissões de pastas, arquivos e usuários;● Monitoramento constante;● Trabalhe com aplicações em ambientes segregados;● Verifique todas possíbilidades do white ou blacklist da

função.

Local File Download / Disclosure

É a vulnerabilidade que possibilita a apresentação ou o download de arquivos, independente da linguagem: php, asp, java..

3º ilusão

"Copiar e colar, e nunca validar as informações"

https://www.developphp.com/video/PHP/Force-File-Download-Dialog-In-Browser-Tutorial

Local File Download / Disclosure

http://www.devmedia.com.br/forcar-download-de-arquivos-com-php/17097

Resultado de uma simples busca no google :

Local File Download / Disclosure

Implementações sugeridas pelos artigos:

● Inclusão das informações no lado do cliente.● input hidden inserindo “../” e o arquivo que queremos.

● Validação total dos arquivos php● Mas esquecem que existe arquivos de configurações em

ini,yml,inc.

Considerações:

● Validação do lado do Servidor● Crie filtros por "whitelist".● Defina previamente o caminho das pastas.● Não permita navegação - “../”● Validação por registro na base de dados.

Local File Download / Disclosure

Desenvolvimento Seguro

Microsoft SDL OpenSAMMOWASP

● Segurança não é uma "coisa" e sim um "estado".● Pense como hacker, pense diferente, ataque a si próprio;● Utilizer diretrizes de desenvolvimento seguro;● Monitore seus sistemas;● A equipe de Infraestrutura não é seu inimigo, confie neles.● Pratique "Code review" e "Par programming";● Pentest em cada ciclo de desenvolvimento;● Aplique infraestrutura voltada para segurança;● Analise logs e movimentações estranhas;● Mantenha informado e atualizado sempre sobre

segurança;

Desenvolvimento Seguro

Obrigado

@ThiagoDieb

https://joind.in/talk/36594