Vulnerabilidade 'Session Fixation' - Como tratar?

5 respostas
N

Bom dia!!!

Pessoal, alguém poderia me ajudar a tratar “Session fixation”.

Desde já agradeço.

5 Respostas

S

O que é isso?

N

Vou tentar te explicar:
Session Fixation => quando um hacker invade uma máquina e fixa um session id na aplicação, antes que o mesma seja autenticada no servidor.

M

Não dá pra fazer session fixation em servidores Java, o sessionid não é recebido em lugar nenhum pela aplicação, ele é criado pelo próprio servidor.

T
R

Session fixation substituiu XSS como o grande bicho-papão do momento. O ataque básico é simples, uma variação dos ataques man-in-the-middle:

  1. O agressor inicia uma sessão no servidor-alvo e obtém um jsessionid válido

  2. (a parte complicada) O agressor faz com que o usuário-alvo use o session id que ele criou. Ele pode fazer isso por exemplo setando um cookie ou reescrevendo links.

  3. O usuário desavisado loga no servidor. A partir daí, o agressor pode usar esse session id para se passar pelo usuário.

[EDIT] Ou você pode seguir o link do thingol, que explica bem melhor. :slight_smile:

Para previnir isso, você pode destruir a sessão e criar uma nova. Algo assim deve ser o suficiente:

if(validaUsuario(usuario, senha)){ // depois de verificar usuário/senha, recria a session do zero HttpSession session = request.getSession(); session.invalidate(); session = request.getSession(); // seta valores na nova session indicando que o usuário logou com sucesso session.setAttribute("usuario", usuario); }

[EDIT 2] Por que isso funciona: Na chamada session.invalidate(), a sessão é destruída e o jsessionid usado se torna inválido. No segundo getSession, uma nova sessão (com um novo jsessionid) será criada. Se você estiver usando HTTPS, não há como interceptar esse novo ID.

Criado 26 de fevereiro de 2008
Ultima resposta 26 de fev. de 2008
Respostas 5
Participantes 5