Problema de deputado confuso - Confused deputy problem

Na segurança da informação , o problema do confuso deputado é freqüentemente citado como um exemplo de por que a segurança baseada em capacidade é importante. Um deputado confuso é um programa de computador legítimo e mais privilegiado que é enganado por outro programa para fazer uso indevido de sua autoridade no sistema. É um tipo específico de escalonamento de privilégios .

Os sistemas de capacidade protegem contra o problema confuso do deputado, ao passo que os sistemas baseados em lista de controle de acesso não o fazem.

Exemplo

No exemplo original de um deputado confuso, há um programa que fornece serviços de compilação para outros programas. Normalmente, o programa cliente especifica o nome dos arquivos de entrada e saída, e o servidor recebe o mesmo acesso a esses arquivos que o cliente possui.

O serviço do compilador é pago por uso e o serviço do compilador armazena suas informações de faturamento em um arquivo (denominado BILL ) ao qual apenas ele tem acesso.

Em uma situação em que um cliente chama o serviço e nomeia seu arquivo de saída BILL, ocorre o problema do confuso deputado: o serviço abre o arquivo de saída. Mesmo que o cliente não tenha acesso a esse arquivo, o serviço tem, então a abertura é bem-sucedida. O servidor grava a saída da compilação no arquivo (aqui BILL ) normalmente, sobrescrevendo-o, destruindo assim as informações de faturamento.

O deputado confuso

Neste exemplo, o serviço de compilação é o deputado porque está agindo a pedido do cliente. O serviço é visto como 'confuso' porque foi enganado para substituir seu arquivo de faturamento.

Sempre que um programa tenta acessar um arquivo, o sistema operacional precisa saber duas coisas: qual arquivo o programa está solicitando e se o programa tem permissão para acessar o arquivo. No exemplo, o arquivo é designado por seu nome, “BILL”. O servidor recebe o nome do arquivo do cliente, mas não sabe se o cliente tinha permissão para gravar o arquivo. Quando o servidor abre o arquivo, o sistema usa a permissão do servidor, não a do cliente. Quando o nome do arquivo foi passado do cliente para o servidor, a permissão não o acompanhou; a permissão foi aumentada pelo sistema silenciosa e automaticamente.

Não é essencial para o ataque que o arquivo de faturamento seja designado por um nome representado como uma string. Os pontos essenciais são:

  • o designador do arquivo não possui a autoridade completa necessária para acessar o arquivo;
  • a permissão do próprio servidor para acessar o arquivo é usada implicitamente.

Outros exemplos

Prototípico confuso deputado Barney Fife

Uma falsificação de solicitação entre sites (CSRF) é um exemplo de um ataque de deputado confuso que usa o navegador da web para executar ações confidenciais contra um aplicativo da web. Uma forma comum desse ataque ocorre quando um aplicativo da web usa um cookie para autenticar todas as solicitações transmitidas por um navegador. Usando JavaScript, um invasor pode forçar um navegador a transmitir solicitações HTTP autenticadas.

O worm de computador Samy usou cross-site scripting (XSS) para transformar a sessão do MySpace autenticada do navegador em um assistente confuso. Usando o XSS, o worm forçou o navegador a postar uma cópia executável do worm como uma mensagem do MySpace, que foi então visualizada e executada por amigos do usuário infectado.

Clickjacking é um ataque em que o usuário atua como um representante confuso. Neste ataque, o usuário pensa que está navegando inofensivamente em um site (um site controlado por um invasor), mas na verdade é induzido a executar ações confidenciais em outro site.

Um ataque de rejeição de FTP pode permitir que um invasor se conecte indiretamente a portas TCP às quais a máquina do invasor não tem acesso, usando um servidor FTP remoto como representante confuso.

Outro exemplo está relacionado ao software de firewall pessoal . Ele pode restringir o acesso à Internet para aplicativos específicos. Alguns aplicativos contornam isso iniciando um navegador com instruções para acessar um URL específico. O navegador tem autoridade para abrir uma conexão de rede, embora o aplicativo não tenha. O software de firewall pode tentar resolver isso avisando o usuário nos casos em que um programa inicia outro que acessa a rede. No entanto, o usuário frequentemente não tem informações suficientes para determinar se esse acesso é legítimo - falsos positivos são comuns e há um risco substancial de que até mesmo usuários sofisticados se habituem a clicar em "OK" para essas solicitações.

Nem todo programa que faz mau uso da autoridade é um deputado confuso. Às vezes, o uso indevido de autoridade é simplesmente o resultado de um erro do programa. O problema do confuso deputado ocorre quando a designação de um objeto é passada de um programa para outro e a permissão associada muda involuntariamente, sem qualquer ação explícita de qualquer uma das partes. É insidioso porque nenhuma das partes fez nada explícito para mudar a autoridade.

Soluções

Em alguns sistemas, é possível solicitar ao sistema operacional para abrir um arquivo usando as permissões de outro cliente. Esta solução tem algumas desvantagens:

  • Requer atenção explícita à segurança por parte do servidor. Um servidor ingênuo ou descuidado pode não realizar essa etapa extra.
  • Torna-se mais difícil identificar a permissão correta se o servidor for, por sua vez, o cliente de outro serviço e quiser passar adiante o acesso ao arquivo.
  • Exige que o cliente confie no servidor para não abusar das permissões emprestadas. Observe que cruzar as permissões do servidor e do cliente também não resolve o problema, porque o servidor pode então ter que receber permissões muito amplas (o tempo todo, ao invés das necessárias para uma determinada solicitação) para agir para clientes arbitrários.

A maneira mais simples de resolver o problema do confuso deputado é agrupar a designação de um objeto e a permissão para acessar esse objeto. Isso é exatamente o que é uma capacidade .

Usando a segurança de capacidade no exemplo do compilador, o cliente passaria ao servidor um recurso para o arquivo de saída, como um descritor de arquivo , em vez do nome do arquivo. Como não tem capacidade para o arquivo de faturamento, ele não pode designar esse arquivo para saída. No exemplo de falsificação de solicitação entre sites , um URL fornecido "cross" -site incluiria sua própria autoridade independente daquela do cliente do navegador da web.

Veja também

Referências

links externos