Ataques de execução remota de código (RCE) explicados
A execução remota de código (RCE) é mais uma categoria de ataques do que um único ataque definido. A execução remota de código pode ter muitas faces, pois o termo se aplica a muitos tipos diferentes de ataques. No entanto, num nível básico, todos os ataques que podem ser incluídos no âmbito do RCE partilham um ponto em comum: os ataques RCE são todos conseguidos através da exploração de vulnerabilidades na configuração de computadores/servidores remotos, a fim de executar código arbitrário no sistema alvo.
Se um invasor conseguir fazer isso, as consequências podem ser mais do que significativas. Fazer com que o servidor execute código arbitrário (ou seja, código fornecido pelo invasor) pode permitir que o invasor roube informações confidenciais, modifique ou destrua arquivos, execute um ataque ataque distribuído de negação de serviço (DDoS) , ou pior ainda, assumir o controle de todo o sistema.
Portanto, a questão claramente merece alguma atenção.
Vulnerabilidades necessárias
Para que um invasor realize um ataque de execução remota de código, o sistema alvo deve ter uma vulnerabilidade pré-existente para o invasor explorar. Várias vulnerabilidades podem abrir a porta para um ataque RCE – muitas para citar. No entanto, os seguintes tipos de vulnerabilidades são os mais comumente usados para perpetrar ataques RCE.
Entrada de usuário não higienizada
Se o seu site/aplicativo permite a entrada do usuário sem ter medidas de higienização adequadas em vigor, você está abrindo a porta para todos os tipos de comportamento não intencional em nome do seu servidor, como execução arbitrária de código. Não confie na entrada do usuário – nunca. Este ponto também está relacionado à confusão de tipos, explicada abaixo.
Autenticação quebrada
Esta primeira vulnerabilidade é um pouco óbvia, mas se não se tomar cuidado para configurar corretamente os mecanismos de autenticação, as consequências podem ser desastrosas. Na verdade, esta vulnerabilidade ocupa o segundo lugar na lista das dez principais vulnerabilidades do OWASP – é uma loucura.
Se as funções de autenticação e gerenciamento de sessão do seu site/aplicativo forem implementadas incorretamente, os invasores poderão comprometer senhas, chaves ou tokens de sessão. Eles também poderiam tentar explorar outras vulnerabilidades no aplicativo para assumir a identidade de outros usuários com permissões potencialmente confidenciais. Assim que o invasor entrar, ele poderá executar código arbitrário e possivelmente assumir o controle do seu servidor com as permissões adequadas.
Controle de acesso deficiente
As listas de controle de acesso (ACL) limitam as permissões dos seus usuários apenas àquelas que são necessárias para que eles concluam seu trabalho. Sem permissões devidamente segmentadas, se um invasor sequestrar uma conta de usuário que tenha privilégios de root devido a um controle de acesso mal implementado, o dano que o invasor poderá causar será considerável. Por outro lado, se um invasor comprometer uma conta de usuário com permissões limitadas, o dano que o invasor poderá causar será limitado às permissões que ele possui. Eles ainda podem causar problemas, mas muito menos do que se tivessem escalado ou privilégios de root.
Estouros de buffer
O software normalmente é programado para usar buffers. No mundo da programação, um buffer é uma quantidade fixa de memória física (RAM) usada para armazenar informações temporárias até que sejam necessárias ou movidas para outro local. Como o buffer constitui uma quantidade fixa de RAM, medidas de verificação de limites precisam ser escritas no código para garantir que a capacidade do buffer não seja excedida. Se nenhuma medida de verificação de limites estiver presente (essa é a vulnerabilidade), a quantidade de dados gravados no buffer poderá exceder sua capacidade. Quando isso acontecer, os dados transbordados substituirão os dados legítimos dos buffers vizinhos. Estouros de buffer pode destruir dados essenciais, travar o sistema e substituir locais de memória com código arbitrário (malware) que o sistema executa posteriormente.
Confusão de tipos
Outra vulnerabilidade comumente explorada é a confusão de tipos. No software, sempre que parte do programa passa um objeto (um arquivo, uma string, um link, etc.) para outra parte do programa, o tipo do objeto precisa ser verificado, para que o programa saiba o que fazer com ele e como. No entanto, se essa verificação não estiver escrita no código, será possível aproveitar esse descuido para explorar o sistema. Ao escrever um objeto na memória como um ‘ponteiro de tipo’ (digamos A) e depois lê-lo como outro ‘ponteiro de tipo’ (digamos B), um invasor pode enganar o sistema para que ele execute código arbitrário. Se as verificações adequadas fossem realizadas, o ponteiro tipo A não poderia ser lido como ponteiro tipo B e o código malicioso não seria executado.
Manipulação de desserialização
Sempre que um objeto é passado de uma parte do programa para outra, esse objeto deve primeiro ser serializado (ou seja, convertido em binário). Assim que o objeto serializado chegar ao seu destino, ele precisará ser desserializado (convertido novamente no objeto original). Os invasores podem explorar o processo de desserialização para produzir objetos anômalos que podem manipular o sistema para executar comandos não intencionais.
Como funcionam os ataques de execução remota de código?
Qualquer ataque online em que um invasor execute código remotamente em seu sistema pode ser considerado um ataque de execução remota de código. Portanto, não há exemplo de manual. E embora as vulnerabilidades comuns listadas acima sejam as mais frequentemente exploradas para entrada, qualquer ataque que execute remotamente código em um sistema pode ser considerado um ataque de execução remota, independentemente de como o invasor entrou.
No entanto, as etapas gerais são assim:
- O invasor verifica as máquinas na Internet em busca de vulnerabilidades conhecidas que possam abrir a porta para um ataque.
- Uma vez encontrada uma vulnerabilidade adequada, o invasor a explora para entrada e acesso.
- Depois que o invasor entra, ele executa código malicioso no sistema para causar o caos típico: roubar informações, criptografar ou destruir arquivos, alterar permissões, baixar mais malware, etc., com base nas vulnerabilidades encontradas, no estado da máquina comprometida ( patches de segurança aplicados ou não, por exemplo) e as ferramentas disponíveis ao invasor.
A execução de código malicioso normalmente é obtida por meio do uso de scripts bash e comandos de terminal. O invasor alimenta o código em um aplicativo vulnerável que o executa (ou faz uma chamada ao kernel para executá-lo).
Exemplos de ataques de execução remota de código
Alguns dos ataques online mais conhecidos vêm na forma de ataques RCE. Vejamos alguns exemplos.
Quero chorar
Em 12 de maio de 2017, foi revelado que centenas de milhares de computadores em todo o mundo foram infectados pelo ransomware WannaCry. O ransomware normalmente criptografa os arquivos no computador infectado, bloqueando os usuários e exige o pagamento de um resgate em troca da descriptografia dos arquivos.
O próprio WannaCry permite a execução remota de código. Um invasor precisa enviar uma mensagem especialmente criada para um servidor Samba (SMB) – um protocolo usado para compartilhar acesso a arquivos, impressoras e outros recursos em uma rede. Se o servidor Samba estiver vulnerável, o invasor obtém acesso ao sistema.
O invasor verifica a Internet em busca de portas SMB vulneráveis e usa uma das supostas ferramentas de espionagem da Agência de Segurança Nacional dos EUA (NSA), chamada “EternalBlue”, que pode detectar a vulnerabilidade no protocolo SMB da Microsoft. Assim que a vulnerabilidade SMB for confirmada, o invasor usará outra ferramenta de espionagem da NSA chamada DoublePulsar para instalar o ransomware WannaCry na máquina comprometida.
EternalBlue e DoublePulsar foram vazados em abril de 2017 por um grupo de hackers chamado Shadow Brokers. A Microsoft corrigiu as vulnerabilidades de segurança expostas pelos Shadow Brokers em março de 2017. No entanto, foi relatado que entre o final de abril e o início de maio de 2017, EternalBlue e DoublePulsar infectaram mais de 148.000 computadores. E muitas das máquinas comprometidas eram servidores que, uma vez infectados, poderiam infectar as máquinas clientes conectadas aos servidores infectados.
Um ataque desastroso, com certeza.
Algumas organizações notáveis que foram infectadas com o malware WannaCry incluem Serviço Nacional de Saúde da Grã-Bretanha (NHS) , gigante das telecomunicações da Espanha, Telefônica e a rede ferroviária da Alemanha, Deutsche Bahn .
Vulnerabilidades do Western Digital My Cloud NAS
As vulnerabilidades do Western Digital My Cloud NAS permitiriam que um invasor realizasse vários ataques de execução remota de código, como comprometer os dados armazenados no sistema ou permitir que um invasor baixasse malware no dispositivo, como ransomware, criptomineradores ou botnets. Revelamos mais sobre as cinco vulnerabilidades críticas que afetam NAS My Cloud da Western Digital dispositivos em nosso artigo completo.
Vulnerabilidade do HtmlHelper do Windows 10
Os arquivos de Ajuda do Windows possuem a extensão .chm. Sempre que você clica em um arquivo .chm, um pequeno programa chamado HtmlHelper abre o arquivo .chm e o exibe em uma janela para você ler. Acontece que pesquisadores da Comparitech descobriram que HtmlHelper contém múltiplas vulnerabilidades e até ignora muitas das políticas de segurança do Windows10. Isso significa que o HtmlHelper pode ser induzido a abrir arquivos .chm comprometidos, o que pode levar a um ataque RCE.
Vulnerabilidades do Zoom RCE
Mais recentemente, o Zoom, o popular serviço de videoconferência, foi considerado vulnerável a um ataque de execução remota de código . O ataque foi demonstrado no evento Pwn2Own deste ano, uma competição de caça a insetos de dia zero de chapéu branco organizada pela Zero Day Initiative. O objetivo do evento é tornar o mundo do software mais seguro, encontrando bugs de forma proativa e divulgando-os aos fornecedores para serem corrigidos.
Este ataque específico supostamente explora três vulnerabilidades para perpetrar o ataque RCE. Mas os detalhes do funcionamento interno do ataque não foram divulgados. Na demonstração, o invasor liga para a vítima, espera um pouco e então consegue executar código arbitrário, conforme evidenciado pelo invasor iniciando o aplicativo de calculadora da vítima. Se o invasor conseguisse iniciar a calculadora, provavelmente poderia ter iniciado qualquer outro aplicativo, como um shell, e emitido comandos arbitrários.
Como se proteger contra ataques RCE
Os ataques de execução remota de código são complexos porque o modo de entrada não é fixo. Os ataques RCE são uma categoria de ataques, em vez de ataques específicos que seguem um manual. E novas vulnerabilidades e explorações surgem todos os dias. Portanto, a defesa contra ataques RCE é um pouco como um jogo de gato e rato.
No entanto, existem duas medidas que toda organização deve seguir para oferecer melhores chances de evitar ataques RCE.
Sempre mantenha seu sistema operacional e software de terceiros atualizados
Como mencionado acima, vulnerabilidades surgem todos os dias – conte com isso. A melhor maneira de minimizar suas chances de ser vítima de um ataque RCE é atualizar todo o seu software assim que os fornecedores disponibilizarem os patches. Manter seu software atualizado pode salvá-lo de um ataque RCE. Vulnerabilidades antigas e corrigidas ainda são usadas por anos após a emissão dos patches. Isso ocorre porque os hackers sabem que a correção oportuna de software é difícil para organizações comerciais e que, por causa disso, muitas organizações têm práticas de atualização “preguiçosas”. Portanto, os invasores ainda tentarão ataques com vulnerabilidades desatualizadas, apenas para garantir. Se o seu software não tiver sido corrigido, você rapidamente desejará ter feito isso.
Por que a correção oportuna é difícil para organizações comerciais? Por um lado, consome muitos recursos. Às vezes, aplicar patches no software significa que certas funções estão obsoletas, portanto, você precisa de uma solução alternativa antes de atualizar. A atualização de um software pode interromper a interoperabilidade com outros softwares críticos, o que também exigirá soluções alternativas. Muitas organizações esperarão o máximo possível antes de corrigir seus sistemas para evitar a interrupção de seus pipelines.
Outra razão para a dificuldade é que a atualização de um sistema normalmente requer uma reinicialização do sistema, o que leva a tempo de inatividade e perda de dinheiro. Ainda assim, não é a primeira medida da nossa lista à toa, e um ataque RCE provavelmente custará mais de uma ou duas horas de inatividade. Manter seu software atualizado, embora não seja uma garantia de que você estará livre de RCE, é a etapa mais importante que você pode realizar em termos de defesa.
Use proteção contra estouro de buffer
A proteção contra estouro de buffer consiste em múltiplas medidas escritas no software do servidor para detectar estouros de buffer e evitar que se tornem vulnerabilidades de segurança graves. A proteção contra estouro de buffer normalmente adiciona um valor canário (um número inteiro conhecido, mas aleatório) aos dados alocados na pilha. Se o valor canário for substituído, significa que um buffer que o precede na memória foi estourado. Ao verificar o valor canário, você pode detectar buffer overflows, encerrar o programa afetado e impedir que um invasor o explore.
Limpe a entrada do usuário
Considere todas as entradas do usuário como não confiáveis. A entrada não higienizada do usuário pode levar a ataques RCE. Trate as informações de usuários autenticados, internos e públicos da mesma maneira: não confie, limpe-as.
Configure adequadamente seus mecanismos de autenticação de usuário
Você pode ter inúmeras câmeras de segurança e detectores de movimento em sua casa. Mas se a porta da frente estiver destrancada, os bandidos ainda poderão entrar. Os mecanismos de autenticação do usuário são sua primeira linha de defesa para manter os bandidos afastados. Aproveite o tempo para configurá-los corretamente.
Use um firewall
Assim como seu computador pessoal deveria estar executando um firewall, considere instalar um firewall de aplicativo de site (WAF) para seu site/aplicativo. Pode ajudá-lo a prevenir ataques automatizados comuns.
Use listas de controle de acesso (ACL)
As listas de controle de acesso limitam as permissões dos seus usuários. Os limites nas permissões dos seus usuários podem limitar o que um invasor pode fazer se conseguir comprometer as contas de um dos seus usuários. Reserve um tempo para configurar ACLs adequadamente para sua organização e usá-las.
Use software adequado de detecção de ameaças/intrusões
Além de manter seu software atualizado, você também deve usar um software de detecção de ameaças. Um bom aplicativo de detecção de ameaças pode fazer toda a diferença no mundo. O software de detecção de ameaças pode verificar o tráfego de entrada, detectar comportamentos suspeitos e tentativas de invasão, entre outras coisas. Ele também pode bloquear imediatamente um host suspeito após a detecção – o que pode ser um verdadeiro salva-vidas.
Um aplicativo de detecção de ameaças não irá necessariamente salvá-lo de todas as tentativas de ataque RCE. No entanto, esses aplicativos irão alertá-lo de que algo pode acontecer muito mais cedo do que se você não estivesse usando um. Quanto mais rápido você entrar no modo de controle de danos, melhor será para sua organização.
Existem muitos aplicativos diferentes de detecção de ameaças. Alguns são proprietários, enquanto outros são de código aberto. Há muitos para listar, mas duas opções de código aberto bem conhecidas são Snort e Suricata. Mas independentemente do aplicativo de detecção de ameaças que você escolher, ele aumentará a segurança do seu site/aplicativo – especialmente se você tiver muito tráfego entrando e saindo.
Tenha um plano de resposta
Prepare-se para tal eventualidade. Caso sua organização seja atingida por um ataque RCE, estar preparado pode reduzir significativamente o escopo do ataque, encerrá-lo mais cedo e reduzir o tempo de recuperação.
Conclusão
Esse foi nosso curso intensivo sobre ataques de execução remota de código (RCE). Não há um conjunto fixo de instruções para se defender contra esses tipos de ataques além do que você deveria fazer de qualquer maneira. Os pontos de entrada podem ser quase qualquer coisa. E, à medida que novas vulnerabilidades e ferramentas de hackers surgem, você precisará se adaptar. A proteção contra ataques RCE é um processo contínuo e em evolução.
O que mais posso fazer para proteger minha privacidade e segurança?
Se você está preocupado com sua segurança geral e privacidade on-line, nossa lista de ferramentas recomendadas abaixo pode ser útil.
- Melhores VPNs
- Melhor antivírus
- Melhores gerenciadores de senhas
- Melhor proteção contra roubo de identidade