CSRF
4
0

CSRF

Fala galera, beleza? Essa semana fiz um artigo sobre a vulnerabilidade de CSRF em colaboração com o Gr4yt3x e resolvi compartilhar com vocês um resumo rápido da falha e como podemos mitiga-la.

Uchi
2 min
4
0
Email image

Fala galera, beleza? Essa semana fiz um artigo sobre a vulnerabilidade de CSRF em colaboração com o Gr4yt3x e resolvi compartilhar com vocês um resumo rápido da falha e como podemos mitiga-la.

O ataque

Em suma, o ataque CSRF (acrônimo em inglês para falsificação de requisição entre sites) é uma vulnerabilidade web na qual a vítima é enganada para que uma requisição maliciosa seja submetida sem que ela perceba. Ela aproveita os privilégios e a identidade da vítima para realizar algo em seu nome, podendo por exemplo: alterar os dados do usuário, roubar a sessão e até mesmo fazer transações fraudulentas.

Beleza, mas como funciona?

O CSRF ocorre quando uma requisição HTTP é feita entre sites na tentativa de se passar pelo usuário legítimo. Essa vulnerabilidade se aproveita do mecanismo de autenticação da aplicação que após logado guarda nos cookies do navegador, como na maioria dos sites nas requisições essas credenciais que estão associadas armazenadas são incluídas, o site não consegue diferenciar se a requisição foi forjada ou é legítima e acaba a executando.

Um exemplo 'real' num cenário de exploração

Vamos supor que vamos entrar no site do banco para conferir o nosso saldo, primeiramente iremos logar no site, mas o que acontece por baixo dos panos quando logamos? o site do banco nos envia um token de autenticação que fica salvo no nosso navegador para que quando for necessário verificar nossa identidade (como quando ativarmos alguma funcionalidade) basta checar nos cookies que lá estará.

Beleza, agora que já estamos logados vemos o saldo e pronto esquecemos o site aberto em uma aba e vamos checar nossos e-mails, em um deles o atacante com alguma técnica de phishing nos convence a entrar em um site X, ao criar o site o atacante insere um código que se aproveita da nossa sessão autenticada no banco para fazer algo em nosso nome.

Veja aqui um exemplo de código que possa estar nessa página maliciosa:

<form id="transferencia" action="example.com/tranferir.php" method="POST">
<input type="hidden" name="para" value="invasor">
<input type="hidden" name="valor" value="R$5000">
</form>

Com esse código sendo executado assim que entramos na página, o atacante consegue realizar uma transferência se passando por nós se aproveitando da falha de segurança no banco.

Soluções de mitigação

Essa é uma falha bem comum de se ver por aí porém temos várias técnicas que podem ser usadas para mitigar a falha, vou citar aqui duas soluções simples de serem implementadas:

- CSRF Tokens.

Um token CSRF é um valor secreto, único e imprevisível que um aplicativo do lado do servidor gera para proteger os recursos vulneráveis do CSRF. Esses tokens são gerados e enviados pelo servidor em uma solicitação HTTP feita pelo cliente.Depois que a solicitação é feita, o servidor compara os dois tokens encontrados na sessão do usuário e na solicitação. Se o token estiver ausente ou não corresponder ao valor na sessão do usuário, a solicitação é rejeitada.

- Atributo de cookie same-site

O chamado atributo de cookie do mesmo site instrui os navegadores a controlar se os cookies são enviados junto com a solicitação iniciada por sites de terceiros, se isso ocorrer a solicitação não é concluída.

Espero que tenham aprendido um pouco mais sobre essa vulnerabilidade.

Até mais.