ASP NET - Ameaças aos sites Web

É praticamente impossível listar as classes das ameaças aos sites da Internet de hoje porque todo dia aparece uma novidade. É só ver o seu anti-vírus que verá que todo dia tem ameaça nova que é corrigida por uma atualização da lista de ameaças ou mesmo da aplicação anti-vírus. Contudo as principais ameaças de hoje são :

Ataques Clássicos

São chamados de ataques clássicos porque podem ocorrer em praticamente qualquer plataforma web, independente do tipo de servidor, serviço web ou linguagem de programação.

1-File Upload : Este ataque consiste em subir um arquivo com uma extensão que não condiz com o seu conteúdo.
Por exemplo, podemos fazer um vírus, provavemente um arquivo .exe, e renomear o arquivo para .txt.
O site servidor que define quais tipos de arquivos podem subir define que os arquivos .txt são confiáveis e deixa o arquivo subir.
Contudo se o usuário tem a permissão de executar script no servidor ou se alguém abrir o arquivo o sistema operacional tenta abrir com o utilitário casado com a extensão, por exemplo, o bloco de notas. O bloco de notas, por sua vez, nota que o arquivo não tem nada haver com ele e faz uma análise de seu conteúdo e verifica que é um arquivo .exe e chama um 'shell' para executar o programa.
Este ataque foi muito comum mas ainda consegue fazer vítimas até hoje.

2-SQL Injection : Consiste em agregar cláusulas SQL dentro de uma informação que o usuário digita de maneira a causar danos no banco de dados. Por exemplo, num campo texto o usuário deveria digitar seu nome e digita joao;drop table a*;jose e, se o string for concatenado na montagem do sql sem proteção poderá dropar as tabelas que comecem com a no servidor sql.

3-Alterações em campos Hidden : Este ataque se baseia na alteração das informações que serão enviadas ao servidor web.
Em asp clássico a gente fazia muito isso...quando é preciso de enviar informações 'extras' para a página asp ou html normalmente para evitar uma futura e dispendiosa pesquisa no banco de dados. Sendo assim quando damos um submit ( envio dos dados do form ) não seria necessário fazer uma nova e pesada busca para complementar as informações, elas já estariam no formulário, é só usar.
Essas informações eram eviadas em campos hidden que antigamente não eram criptografados. Note que esta técnica só era usada em intranets ou sites corporativos com segurança bem restrita mas era usado.
Normalmente nenhum dado importante era enviado através de campos hidden mas era um risco que não poderia ser aceito se fosse uma Internet.

Spoofing

É uma tentativa de obter acesso a um aplicativo usando identidades ou credenciais roubadas. Acontece quando um usuário rouba um cookie armazenado localmente e tem a sorte que dentro desse cookie contém a senha em texto não criptografado. Ou ainda pior é quando um usuário é capaz de monitorar os pacotes sendo trocados entre o cliente e o servidor e nenhum SSL está configurado e portanto, neste caso, as credenciais trocadas podem ser facilmente recuperadas e usadas para realizar vários ataques ao aplicativo. Claro, prevenir esta ameaça pode ser feito usando senhas fortes e autenticação restrita. Por não salvar credenciais em texto não criptografado dentro dos cookies e, o mais importante, não utilizar o protocolo SSL na comunicação, pelo menos nos estágios em que as credenciais estão sendo trocadas.

Tampering

Adulteração ou Tampering : É o processo de modificação dos dados que estão sendo trocados via redes de modo a fraudar o seu conteúdo. Também pode ser quando um usuário tem acesso a um aplicativo fingindo ser outra pessoa e começa a causar danos como excluir ou modificar recursos no servidor web de forma não autorizada, neste caso, modificando dados e recursos. A proteção contra essa ameaça pode ser feita usando hash de dados e assinatura, assinaturas digitais e verificação de autorização mais forte.

Divulgação de informações

Divulgação de informações ou Information disclosure: trata-se da exposição de informações e dados privados de empresas que não deveriam ser públicos mas estão a venda na Internet por pessoas inescrupulosas. São os famosos vazamento de informações de grandes empresas (como o facebook, vivo, Banco deo Brasil, etc.). Esse tipo de ameaça à segurança pode assumir várias formas.

O exemplo mais comum é quando uma empresa terceiriza uma atividade e para que a empresa terceirizada opere no serviço é obrigada a dar acesso a empresa terceirizada de seus sistemas ou de seus bancos de dados.

O sequestro as credenciais de um usuário ocorre quando um usuário consegue as credenciais de outro usuário com maiores privilégios no sistema. Uma vez conseguindo o acesso ele altera seu próprio perfil ganhando acesso ao que não devia ter. Este ataque visa obter acesso a um aplicativo, serviço, servidor, etc. O usuário que furtou a credencial poderá então navegar por dados privados que originalmente não tinham permissão para ver.

O spoofing de pacotes de dados durante sua transmissão de um lugar para outro na rede é outra forma de divulgação de informações. Neste caso, o usuário poderá visualizar e até mesmo modificar dados que eles controlaram de forma ilegal. Uma forma de divulgação de informações ocorre quando colocamos informações sensíveis ( como credenciais, servidores-Strings de conexão) dentro do arquivo de configuração web.config em texto não criptografado. Deixando alguns dados 'sensíveis' dentro de comentários dentro da marcação HTML também é uma falha de segurança. Às vezes, os desenvolvedores fazem testes em algum código dentro a página html e, em seguida, eles decidem comentá-la para tentar outra coisa. A aplicação entra em produção e as linhas de comentário aparecem quando a página é solicitada e em execução.

A prevenção de tais ameaças pode ser feita por meio de técnicas de autorização mais fortes, armazenando dados confidenciais em cookies, criptografando variáveis ​​de aplicativo, variáveis ​​de sessão e outros contêineres, e fazer uso de SSL para proteger os dados que estão sendo movidos de um local no rede para outra.

Denial of service

A Negação de serviço ou Denial of service : esse tipo de ameaça é causado por invasores que bombardeiam seu aplicativo com muitas solicitações ao mesmo tempo que interrompe seu aplicativo e o torna indisponível para outros. Uma maneira de se proteger contra essa ameaça é desenvolver um módulo que pode monitorar o número de solicitações provenientes de um único endereço IP em um determinado período de tempo e, em seguida, negar solicitações de IPs que estão solicitando mais do que as solicitações normais. Além disso, o IIS 7.0 ajuda na limitação um aplicativo, limitando o número de solicitações provenientes de um endereço IP específico.

Elevação de privilégio

Elevação de privilégio: Esta ameaça baseia na possibilidade que um usuário pode ser capaz de sequestrar o credenciais de outro usuário e obter acesso a recursos e áreas em um aplicativo para o qual eles não deveriam ter acesso.

É aquele famoso 'empresta sua senha'...depois vai ver a merda que dá. Lembre-se que ao te dar uma senha a empresa depositou confiança em você e caso você não corresponda a essa confiança não poderá culpar o atacante pelo fato.

Depois que um invasor entra no aplicativo com o identidade e privilégios de outro usuário mais privilegiado, o invasor pode elevar os privilégios já atuais da sua conta. Com isso o invasor terá acesso a recursos e até mesmo a segurança em áreas que ele não deveria ter.

Além disso, existe uma ameaça conhecida como repúdio - Ocorre quando usuários (legais, autenticados e autorizados) negam que tenham realizado certas ações específicas numa tarefa que tipicamente seriam de incumbência deles. Eles afirmam que não foram eles que fizeram a atividade e não tem como comprovar se foi ou não, só temos o problema como testemunha do fato.
Isso pode acontecer e se não for implementada uma auditoria adequada fica difícil dizer quem realmente executou a atividade.
Em outras palavras, registrar eventos de auditoria em seu aplicativo pode ajudar na defesa contra tal ameaça. Hoje em dia com a introdução da Web 2.0 e a demanda por um usuário mais ágil e interativo experiências em aplicativos, a tendência é passar a utilizar mais técnicas AJAX em aplicativos da web. É verdade que AJAX pode melhorar a usabilidade e interatividade de um aplicativo, mas ao mesmo vez, pode abrir mais áreas para invasores explorarem um aplicativo se o aplicativo habilitado para AJAX for não desenvolvido e projetado com segurança em mente.

Principais ameaças que são causados ​​por aplicativos habilitados para AJAX

Ataque pelo Serviço: Em um aplicativo da web tradicional, um invasor pode sequestrar informações confidenciais explorando um aplicativo ou, se tiver sorte o suficiente para obter acesso à web próprio servidor e, portanto, obter acesso físico aos arquivos e recursos do aplicativo da web. Contudo, com um aplicativo da web habilitado para AJAX que abrange o cliente e o servidor, AJAX o ataque envia continuamente pequenas solicitações da web para o servidor, obtendo praticamente todas as informações do serviço ou, com as informações, cria a oportunidade de uma área de ataque de serviço maior facilitando futuros ataques. Sabe aquele ditado : conheça seu inimigo ? É mais ou menos isso.

Funções de exposição: uma solicitação AJAX geralmente coleta a entrada dos elementos localizados no página e, em seguida, envia chamadas para funções definidas no lado do servidor. Todas essas chamadas são enviadas em texto simples, não criptografados. Assim, os nomes das funções, parâmetros e tipos de dados são todos expostos e quaisquer invasores pode 'ouvir' a rede pode obter acesso a todos esses métodos. Isso dá a eles a oportunidade de saiber ainda mais sobre as funções implementadas no servidor e, portanto, abra uma brecha para o vazamento de informações que atacantes mal-intencionados podem usar.

Amplificação de ataques: normalmente, uma solicitação AJAX é enviada de forma assíncrona em segundo plano para o servidor. O servidor não pode dizer a diferença entre uma solicitação feita por meio de AJAX (JavaScript) ou quando no envio de um formulário. Do ponto de vista do servidor, a solicitação é a mesma. Isso abre uma porta muito ampla para amplificar todas as ameaças acima e torná-las mais prejudiciais. O primeiro efeito que você notará é a amplificação da ameaça de repúdio. AJAX estará enviando mais e mais solicitações em segundo plano, permitindo diferentes tipos de ataque e cada usuário do aplicativo terá a capacidade de negar seu conhecimento de tais ataques. Tantos pedidos agora pode ser enviado do lado do cliente em segundo plano, o que abre o caminho para receber mais resposta do servidor; uma resposta que pode estar cheia de scripts prontos para serem injetados em do lado do cliente e amplificando a ameaça XSS. Outra ameaça que pode ser ampliada é a negação de ataque de serviço (DDOS). Esse tipo de ameaça pode ser amplificado facilmente sem que ninguém perceba. Desde o as solicitações do cliente que executam a negação de serviço são solicitações JavaScript enviadas em segundo plano, o usuário que abre a página não percebe.