Pelo que aprendi até agora, o objetivo dos tokens é impedir que um invasor forje um envio de formulário.
Por exemplo, se um site tiver um formulário que insira itens adicionados ao seu carrinho de compras, e um invasor poderá enviar spam ao seu carrinho de compras com itens que você não deseja.
Isso faz sentido, pois pode haver várias entradas válidas para o formulário do carrinho de compras, tudo o que o invasor precisa fazer é conhecer um item que o site está vendendo.
Entendo como os tokens funcionam e adiciono segurança neste caso, porque eles garantem que o usuário realmente preencheu e pressionou o botão "Enviar" do formulário para cada item adicionado ao carrinho.
No entanto, os tokens adicionam segurança a um formulário de login do usuário, o que requer um nome de usuário e senha?
Como o nome de usuário e a senha são muito exclusivos, o invasor precisará conhecer ambos para que a falsificação de login funcione (mesmo que você não tenha a configuração de tokens) e, se um invasor já souber disso, poderá acessar o site. ele mesmo. Sem mencionar, um ataque de CSRF que faça o usuário se autenticar não teria nenhum propósito prático de qualquer maneira.
Meu entendimento dos ataques e tokens de CSRF está correto? E eles são inúteis para os formulários de login do usuário, como suspeito?
Respostas:
Sim. Em geral, você precisa proteger seus formulários de login dos ataques CSRF, como qualquer outro.
Caso contrário, seu site estará vulnerável a uma espécie de ataque de "phishing de domínio confiável". Em resumo, uma página de login vulnerável ao CSRF permite que um invasor compartilhe uma conta de usuário com a vítima.
A vulnerabilidade ocorre assim:
Como um exemplo pertinente, considere o YouTube . O YouTube permitiu que os usuários vissem um registro do "próprio" histórico de visualizações, e seu formulário de login era vulnerável a CSRF! Assim, como resultado, um invasor pode configurar uma conta com uma senha que eles conhecem, fazer o login da vítima no YouTube usando essa conta - perseguindo os vídeos que a vítima estava assistindo.
Há alguma discussão neste tópico de comentário que implica que "somente" poderia ser usado para violações de privacidade como essa. Talvez, mas para citar a seção no artigo da Wikipedia sobre CSRF :
Ênfase em "novos ataques". Imagine o impacto de um ataque de phishing contra seus usuários e, em seguida, imagine o referido ataque de phishing trabalhando através do marcador de confiança do usuário em seu site! O artigo vinculado no tópico de comentários acima mencionado fornece vários exemplos que vão além de simples ataques de privacidade.
fonte
http://good.com/login.html
um cliente, analisar o token CSRF aninhado e depois publicarhttp://bad.com/login.html
que contém um formulário modificado que envia seu nome de usuário, senha e token, independentemente do que a vítima digita. O CORS não se aplica porque você ' Temos dois clientes separados: o atacante e a vítima. Então, para reiterar a pergunta: a proteção CSRF realmente funciona para formulários de login?Seu entendimento está correto - o ponto principal do CSRF é que o invasor pode forjar uma solicitação de aparência legítima de antemão. Mas isso não pode ser feito com um formulário de login, a menos que o invasor saiba o nome de usuário e a senha da vítima; nesse caso, existem maneiras mais eficientes de atacar (faça o login).
Em última análise, a única coisa que um invasor pode fazer é incomodar seus usuários ao enviar spam para logins com falha, quando o sistema de segurança pode bloquear o usuário por um período de tempo.
fonte
Sim , outros sites não podem imitar seu formulário de login! Tão simples como isso.
O que eles podem conseguir fazendo isso?
n
no. vezes, pode ser evitado.fonte
Pré-login de validação de CSRF não faz muito sentido IMHO.
Graças a @squiddle pelo link: seclab.stanford.edu/websec/csrf/csrf.pdf , podemos ler na primeira página:
Se você tentar o pré-login da validação do CSRF, poderá dar a um invasor em potencial a oportunidade de raspar um código válido do seu site! Ele / ela seria capaz de postar novamente o token derrotando o objetivo.
Talvez um invasor possa tentar adivinhar o nome de usuário do seu site. O que eu fiz, se o endereço IP tentar adivinhar, digamos, 10 nomes de usuários sem sucesso, eu simplesmente o incluo na lista negra.
fonte