Vulnerabilidades OAuth | Como implementar autorização segura em seu aplicativo da Web

Anonim
Vulnerabilidades OAuth | Como implementar autorização segura em seu aplicativo da Web 2740_1

Este artigo vai lidar com as conhecidas vulnerabilidades do OAuth. Os leitores também aprenderão a implementar a autorização segura e segura no aplicativo da Web.

Oauth é um protocolo confiável, mas seu grau de segurança depende em grande parte da consciência dos desenvolvedores da Web ao implementar a autorização. Isso torna este tópico extremamente importante para os profissionais de segurança da informação. Eles precisam fornecer um alto nível de proteção de contas de seus usuários. É hora de se familiarizar com profissionais eficazes que ajudarão a reduzir o perigo de venda ruim OAuth.

Introdução

O protocolo OAuth 2.0 é amplamente utilizado em várias aplicações. Usá-lo, uma interface de usuário conveniente fica disponível, autenticação e autorização mais fáceis em comparação com os métodos tradicionais para inserir o nome de usuário e a senha. Com implementação adequada e atenciosa, o protocolo OAuth será mais seguro do que a autorização tradicional, uma vez que os usuários não precisam compartilhar seus dados contábeis com um aplicativo de terceiros para acessar um recurso específico. Os usuários geralmente preferem efetuar login usando suas contas do Google, Facebook ou LinkedIn, em vez de criar uma nova conta toda vez que precisar se registrar em algum site. Assim, o protocolo OAuth simplifica muito nossas vidas.

Em geral, os populares provedores de serviços OAuth são muito confiáveis. Fazer login com o Google ou a Conta do Facebook inspira um certo senso de segurança, e está correto. O protocolo é cuidadosamente testado por especialistas. Todas as vulnerabilidades disponíveis são sempre rapidamente corrigidas pela equipe do desenvolvedor. No entanto, vale a pena notar que a sensação de segurança total pode ser falsa.

Os provedores de serviços do OAuth deixou os desenvolvedores de aplicativos, muitas razões para lidar com a segurança de seus programas. De fato, o serviço OAuth inicialmente protegido, implementado incorretamente no processo de sua instalação, pode se tornar um alvo fácil para intrusos. Essa preocupação levará ao roubo de dados pessoais dos usuários.

Em seguida, você deve considerar as vulnerabilidades mais comuns encontradas em aplicativos de terceiros que implementam o Protocolo OAuth para autorizar seus usuários. Deve ser lembrado que o próprio protocolo é seguro e confiável. Somente após a implementação incorreta, ela se torna vulnerável aos ataques de hackers.

OAuth Tockey roubo usando o cabeçalho do referente

Quando o aplicativo solicita autorização em nome do usuário no servidor OAuth, uma pessoa recebe o código para entrar e enviar de volta ao servidor para sua verificação subseqüente. Se durante o trabalho, o usuário será redirecionado para outra página, o código será visto no cabeçalho "Referidor" da solicitação HTTP. Assim, o código cairá no site externo, que ameaçará os dados do usuário registrados no servidor OAuth.

Nota: O cabeçalho referente é um cabeçalho de consulta HTTP, ele transmite o host URL a partir do qual a solicitação é enviada.

Para suavizar as conseqüências dessa vulnerabilidade, o desenvolvedor deve certificar-se de que seu aplicativo da Web não contenha nenhuma injeção de HTML. Se as injeções foram detectadas, o invasor pode facilmente definir a tag de imagem em seu servidor da Web e encontrar uma maneira de redirecionar o usuário nele. Assim, ele terá a oportunidade de roubar o código do cabeçalho "Referidor" da solicitação HTTP.

OAuth Tockey roubo usando o parâmetro redirect_uri

O aplicativo inicia o processo de autorização enviando uma solicitação para o servidor OAuth:

https://www.example.com/signin/authorize?[...]&redirect_uri=httpps://demo.example.com/loginsuccessful.

A consulta sempre contém o parâmetro "redirect_uri" usado pelo servidor OAuth para enviar tokens de volta para o aplicativo após o usuário deu seu consentimento. Se o valor desse parâmetro não for controlado ou não verificado, o invasor pode alterá-lo facilmente e redirecionar a solicitação para o site, onde ele usa um programa especial para processar o token e obter acesso a um recurso limitado.

https://www.example.com/signin/authorize?[...]&redirect_uri=httpps://localhost.evil.com.

Às vezes, URLs semelhantes estão bloqueados. O invasor pode redirecionar os dados recebidos no URL aberto, assim:

https://www.example.com/oauth20_authorize.srf?[...[&redirect_uri=httpps://accounts.google.com/backtoouthsubtarget?Next=httpset://evil.com.

Ou isto:

https://www.example.com/oauth2/authorize? [...]% IRET_URI = https% 3a% 2f% 2fapps.facebook.com% 2Fattacker% 2f.

Ao implementar OAuth, você nunca pode incluir domínios inteiros na lista branca. Apenas alguns URLs devem ser adicionados a "redirect_uri" não redirecionados uma solicitação para abrir o redirecionamento.

Falsificação de solicitações transversais

A falsificação de um pedido intersight pode ocorrer quando um invasor consegue tornar a vítima de clicar em seu link e, assim, gerar um pedido de que ele não iria gerar. A falsificação de solicitações transversais é geralmente suavizada com o token CSRF, que está associado à sessão do usuário. Ele ajuda o aplicativo a verificar a pessoa de uma pessoa que enviou o pedido. O parâmetro "State" no protocolo OAuth serve como token CSRF.

Vale a pena visualizar como o ataque do CSRF é realizado em OAuth e, como o parâmetro "State" pode ser usado para mitigar os efeitos da vulnerabilidade.

Hacker abre um aplicativo da Web e lança o processo de autorização para acessar o provedor de serviços usando o AAuth. O aplicativo solicita um provedor de serviços para acesso que precisa ser fornecido. O hacker será redirecionado para o site do provedor de serviços, onde você geralmente precisa digitar seu nome de usuário e senha para autorizar o acesso. Em vez disso, o hacker pega e impede esse pedido e economiza seu URL. Hacker de alguma forma faz com que a vítima abra este URL. Se a vítima inserir o sistema do provedor de serviços usando sua conta, suas credenciais serão usadas para emitir um código de autorização. O código de autorização troca o acesso ao token de acesso. Agora a conta do hacker no aplicativo é autorizada. Pode acessar a conta da vítima.

Então, como posso evitar essa situação usando o parâmetro "State"?

O aplicativo deve criar um valor de alguma forma com base na conta de origem (por exemplo, use a tecla Hash de sessão do usuário). Não é tão importante o que é, o principal é que o valor é único e gerado usando informações privadas sobre o usuário original. Ele é atribuído ao parâmetro "estado".

Este valor é transmitido ao provedor de serviços ao redirecionar. Agora, o hacker convida a vítima a abrir o URL, que ele retinha.

O código de autorização é emitido e enviado de volta para o cliente na sessão junto com o parâmetro "State".

O cliente gera um valor de parâmetro com base em informações de sessão e compara com o valor "estado", que foi enviado de volta da solicitação de autorização para o provedor de serviços. Esse valor não corresponde ao parâmetro "State" na consulta, uma vez que foi gerado apenas com base em informações sobre a sessão atual. Como resultado, o valor obtido não é aceito pelo sistema.

Outras vulnerabilidades detectadas ao implantar o OAuth incluem a capacidade de executar o XSS (scripts transversais) usando o parâmetro "redirect_uri", a configuração de chave do OAuth Private (a chave pode, às vezes, quando descompilam um aplicativo móvel) e a violação da regra do código de autorização (quando O código de autorização pode ser usado mais de uma vez para emitir vários tokens de acesso). Essas vulnerabilidades são menos comuns do que as descritas acima, mas não as torna menos perigosas. O desenvolvedor deve conhecer todas as práticas necessárias para garantir uma operação confiável de seu aplicativo da Web.

O autor do artigo traduzido: Simon Saliba.

Importante! Informações exclusivamente para fins acadêmicos. Por favor, cumpra a legislação e não aplique esta informação para fins ilegais.

Material mais interessante em cisoclub.ru. Inscreva-se: Facebook | Vk |.. Twitter | Instagram | Telegrama | Zen | Mensageiro | ICQ New | YouTube | Pulso.

Consulte Mais informação