O que é fixação de sessão?

click fraud protection

Existem muitos tipos diferentes de vulnerabilidades de segurança encontrados em sites, um interessante é chamado de “Fixação de sessão”. A fixação de sessão é um problema em que um invasor pode influenciar o identificador de sessão, também conhecido como o id de sessão de um usuário e, em seguida, usá-lo para obter acesso à sua conta. Esse tipo de vulnerabilidade pode funcionar de duas maneiras: ela pode permitir que o invasor encontre ou defina a id de sessão de outro usuário.

Como um ataque de fixação de sessão é executado

A id de sessão de um usuário costuma ser uma parte fundamental da autenticação do site e, em muitos casos, os únicos dados que identificam o usuário específico conectado. O problema com isso é que, se um invasor puder definir ou aprender a id de sessão de outro usuário, ele poderá usar o token de sessão e, então, agir como o usuário.

Normalmente, isso é feito enganando o usuário, fazendo-o clicar em um tipo de link de phishing. O link em si é totalmente legítimo, mas inclui uma variável que define um id de sessão especificado. Se o usuário fizer login com o ID de sessão e o servidor não atribuir a ele um novo ID de sessão no login, o invasor pode simplesmente definir seu id de sessão para ser o mesmo e ter acesso ao da vítima conta.

Outra maneira de o invasor descobrir a id de sessão da vítima é se ela aparecer em um URL. Por exemplo, se o invasor pode induzir a vítima a enviar um link e inclui o ID de sessão da vítima, o invasor pode usar o ID de sessão para acessar a conta da vítima. Em alguns casos, isso pode acontecer completamente por acidente. Por exemplo, se o usuário copiar o URL com o id de sessão e colá-lo para um amigo ou em um fórum, qualquer usuário que seguir o link fará login com a conta do usuário.

Correções de fixação de sessão

Existem algumas soluções para esse problema e, como sempre, a melhor solução é implementar o máximo possível de correções como parte de uma estratégia de defesa em profundidade. A primeira solução é alterar a id de sessão do usuário quando ele faz login. Isso evita que um invasor seja capaz de influenciar a id de sessão de um usuário conectado. Você também pode configurar o servidor para aceitar apenas IDs de sessão que ele gerou e rejeitar explicitamente quaisquer IDs de sessão fornecidos pelo usuário.

O site deve ser configurado para nunca colocar detalhes confidenciais do usuário, como id de sessão no URL, e deve colocá-lo em um parâmetro de solicitação GET ou POST. Isso evita que o usuário comprometa acidentalmente seu próprio id de sessão. Usando um id de sessão e um token de autenticação separado, você dobra a quantidade de informações que o invasor precisa para obter e impede que eles acessem sessões com ids de sessão conhecidos.

É vital que todos os ids de sessão válidos para um usuário sejam invalidados quando o botão de logout for clicado. É possível regenerar o id de sessão em cada solicitação, se os ids de sessão anteriores forem invalidados, isso também impede que os invasores usem o id de sessão conhecido. Essa abordagem também reduz significativamente a janela de ameaça se um usuário revelar sua própria id de sessão.

Ao habilitar várias dessas abordagens, uma estratégia de defesa em profundidade pode eliminar esse problema como um risco à segurança.