30 de novembro de 2008

Palestra - Tratando as vulnerabilidades do Top10 da OWASP

Nesta sexta-feira dia 28/11 eu palestrei na Php Conference! Obrigado pela presença de todos e estou disponibilizando os slides da palestra.

26 de novembro de 2008

Pen-test by Adobe or Office

Uma prática horrível invadiu o mercado de pen-test, se é que podemos chamar isso de prática. A técnica consiste no envio de arquivos do office ou arquivos pdf com algum tipo de backdoor. Utilizando pura e simplesmente de engenharia social a empresa contratada para testar os controles de segurança envia um arquivo malicioso que, pode ser um currículo em pdf para o RH. Naturalmente alguém irá abrir o arquivo, e após isso é "OWNADO" e o FUD começa, direito a filme e tudo.

Pergunta: que controle você testou com isso? Você apenas irá saber que precisa de uma campanha de conscientização, não terá nenhum tipo de validação dos controles de perímetro da sua rede.



Testes como esse podem ser usados para testar o nível de conscientização de seus usuários, mas nunca como ferramenta de avaliação de controles técnicos. E lamentavelmente muitos acham isso a última maravilha do mercado de segurança, pois, saibam todos que a técnica já não tinha nada complicado e agora ficou mais prático e banal com a implementação desta feature no metasploit 3.2. vejam os exemplos a seguir:

Criando um pdf com backdoor

Criando um arquivo do word com backdoor

Agora faça o seguinte, procure profissionais sérios e competentes para testar seus controles de segurança, não aceite qualquer coisa.

11 de novembro de 2008

Palestra H2HC 2008

Estou disponibilizando os slides da minha palestra na H2HC deste ano. No site do evento em breve estará disponível os slides de outros palestrantes.


Extreme Web Hacking - h2hc 2008
View SlideShare presentation or Upload your own. (tags: h2hc)

1 de novembro de 2008

Hardening de sessão no PHP

Php é criticado, muitas vezes pwned, mas eu gosto. Acho uma linguagem que lhe dá muitas opções, tem uma grande comunidade, possui vasta documentação (ok, eu sei que a maioria das pessoas nem sabe que isso existe) e a maioria dos projetos open source tem algo em php. O meu envolvimento com php veio fuçando em projetos open source.

Lógicamente que devido a sua popularidade e a possibilidade de fazer qualquer coisa, o php acaba protagonizando coisas horríveis. Já ouviram a expressão: "Arma na mão de macaco"? Isso também acontece com php!

Bom, já dei muita desculpa, gosto de php e pronto!

Eu, tenho lidado com sistemas que possuem muitas falhas de segurança devido a problemas de gestão de sessão, por isso decidi escrever algo sobre as sessões do php.

Até um macaco autista consegue trabalhar com sessões no php, basta olhar o manual: Funções para sessão.

Mas como qualquer função ela merece alguns cuidados, um simples session_start e um session_unset não é suficiente caso você queira garantir a integridade dos dados da aplicação.

A primeira coisa que deve ser feita é realizar algumas configurações que irão aumentar a segurança da gestão de sessão do php. Os seguintes itens devem ser alterados no php.ini:

O nome da sessão

default: session.name = PHPSESSID
hardening: session.name = Uma string que você determinar

Path onde será armazenado a sessão no servidor
default: session.save_path = Diretório de armazenamento Temporário da Máquina(tmp)
hardening: session.save_path = Defina um diretório onde as configurações de permissão foram alteradas e somente o acesso pela aplicação é permitido.

Cookies mais seguros

Apesar da possibilidade de desenvolver algo "cookieless" é mais prático e eficaz fazer algumas configurações para aumentar a segurança dos cookies.

Uma boa prática é você não permitir que seja acessada por javascript o cookie de sessão, ataques de XSS podem ser evitados. Para isso determine que o cookie será acessado apenas por HTTP.
default: session.cookie_httponly = 0
hardening: session.cookie_httponly = 1

Se você possui o recurso de HTTPS, force o envio apenas por HTTPS.
default: session.cookie_secure = 0
hardening: session.cookie_secure = 1

A gestão de sessão usa algoritmos de hash para gerar os IDs de sessão. Por default o php usa o algoritmo md5 (128 bits), mas como já deve ser conhecimento de todos, ele já não é o mais confiável. Então altere o algoritmo de hash para SHA-1 (160 bits).
default: session.hash_fuction = 0
hardening: session.hash_fuction = 1

Com estas configurações você já vai ter mais segurança nas sessões do php, existe outras functions que podem ser alteradas, consulte o manual.

Você já garantiu um pouco mais de confiança as sessões, mas também é necessário cuidado ao manipular/usar os recursos de sessão. algumas dicas são:

  • Se possível determine o tempo que o cookie de sessão expira o mais baixo possível;

  • Use a seguinte sequência sempre que iniciar uma sessão:


session_destroy();
session_regenerate_id();
session_start();

Isso irá garantir que a sessão será destruída e um novo id será gerado sempre que você iniciar uma sessão.

Não seja um macaco com uma arma na mão, use os recursos da linguagem.