15Sep
Address Space Layout Randomization( ASLR) é uma técnica de segurança usada nos sistemas operacionais, implementada pela primeira vez em 2001. As versões atuais de todos os principais sistemas operacionais( iOS, Android, Windows, MacOS e Linux) possuem proteção ASLR.Mas na semana passada, um novo método de ignorar o ASLR foi encontrado. Então, você deveria estar preocupado?
Para aqueles sem um fundo de programação de baixo nível, o ASLR pode ser confuso. Para entender isso, você deve primeiro entender a memória virtual.
O que é memória virtual?
Memória virtual é uma técnica de gerenciamento de memória com muitos benefícios, mas foi criada principalmente para tornar a programação mais fácil. Imagine que você tenha o Google Chrome, o Microsoft Word e vários outros programas abertos em um computador com 4 GB de RAM.Como um todo, os programas neste computador usam muito mais de 4 GB de RAM.No entanto, nem todos os programas estarão ativos o tempo todo, ou precisam de acesso simultâneo a essa RAM.
O sistema operacional aloca pedaços de memória para programas chamados páginas .Se não houver memória RAM suficiente para armazenar todas as páginas de uma só vez, as páginas menos prováveis serão armazenadas no disco rígido mais lento( mas mais espaçoso).Quando as páginas armazenadas são necessárias, eles mudarão os espaços com menos páginas necessárias atualmente na RAM.Esse processo é chamado de paginação e empresta seu nome para o arquivo de arquivo de página no Windows.
A memória virtual torna mais fácil para os programas gerenciar sua própria memória e também os torna mais seguros. Os programas não precisam se preocupar sobre onde outros programas estão armazenando dados, ou a quantidade de RAM restante. Eles podem apenas pedir ao sistema operacional memória adicional( ou retornar a memória não utilizada) conforme necessário. Todo o programa vê é um único pedaço contínuo de endereços de memória para seu uso exclusivo, chamado de endereços virtuais. O programa não tem permissão para visualizar a memória de outro programa.
Quando um programa precisa acessar a memória, ele fornece ao sistema operacional um endereço virtual. O sistema operacional entra em contato com a unidade de gerenciamento de memória da CPU( MMU).A MMU traduz-se entre endereços físicos e virtuais, devolvendo essa informação ao sistema operacional. Em nenhum momento o programa interage diretamente com a RAM.
O que é ASLR?
Address Layout Randomization( ASLR) é usado principalmente para proteger contra ataques de estouro de buffer. Em um estouro de buffer, os atacantes alimentam uma função de dados de lixo que podem ser manipulados, seguida de uma carga útil mal-intencionada. A carga útil substituirá os dados que o programa pretende acessar. As instruções para saltar para outro ponto no código são uma carga útil comum. O famoso método JailbreakMe de jailbreak iOS 4, por exemplo, usou um ataque de estouro de buffer, o que levou a Apple a adicionar ASLR ao iOS 4.3.
Os transbordamentos de buffer exigem que um invasor saiba onde cada parte do programa está localizada na memória. Descobrir isso geralmente é um processo difícil de tentativa e erro. Depois de determinar isso, eles devem criar uma carga útil e encontrar um local adequado para injetá-la. Se o invasor não sabe onde seu código alvo está localizado, pode ser difícil ou impossível explorá-lo.
ASLR trabalha junto com o gerenciamento de memória virtual para aleatorizar as posições de diferentes partes do programa na memória. Toda vez que o programa é executado, os componentes( incluindo pilha, pilha e bibliotecas) são movidos para um endereço diferente na memória virtual. Os atacantes não podem mais aprender onde seu alvo é por meio de tentativa e erro, pois o endereço será diferente sempre. Geralmente, os aplicativos precisam ser compilados com suporte ASLR, mas isso está se tornando o padrão, e é necessário mesmo no Android 5.0 e posterior.
Então o ASLR ainda o protege?
Na última terça-feira, pesquisadores da SUNY Binghamton e da Universidade da Califórnia, Riverside, apresentaram um artigo chamado Jump Over ASLR: Preditores de raças de ataque para ignorar o ASLR.O documento detalha uma maneira de atacar o buffer de destino de filial( BTB).O BTB faz parte do processador que acelera as afirmações ao prever o resultado. Usando o método dos autores, é possível determinar locais de instruções de ramificação conhecidas em um programa em execução. O ataque em questão foi realizado em uma máquina Linux com um processador Intel Haswell( primeiro lançado em 2013), mas provavelmente poderia ser aplicado a qualquer sistema operacional e processador moderno.
Dito isto, você não deve necessariamente desesperar. O documento ofereceu algumas maneiras pelas quais o hardware e os desenvolvedores de sistemas operacionais podem mitigar essa ameaça. Técnicas de ASLR mais recentes e de grão fino exigiriam mais esforço do atacante, e aumentar a quantidade de entropia( aleatoriedade) pode tornar o ataque de salto excessivo inviável. Muito provavelmente, sistemas operacionais e processadores mais novos serão imunes a este ataque.
Então, o que resta para você para fazer? O Jump Over bypass é novo, e ainda não foi manchado na natureza. Quando os atacantes o exploram, a falha aumentará o potencial dano que um invasor pode causar no seu dispositivo. Esse nível de acesso não é sem precedentes;A Microsoft e a Apple apenas implementaram o ASLR em seus sistemas operacionais lançados em 2007 e depois. Mesmo que esse estilo de ataque se torne comum, você não ficará pior do que estava nos dias do Windows XP.
Tenha em mente que os atacantes ainda precisam obter seu código no seu dispositivo para causar qualquer dano. Esta falha não fornece-lhes quaisquer formas adicionais de infectá-lo. Como sempre, você deve seguir as melhores práticas de segurança. Use antivírus, fique longe de sites e programas esboçados e mantenha seu software atualizado. Ao seguir estas etapas e manter os atores maliciosos fora do seu computador, você será tão seguro como você já esteve. Crédito da imagem
: Steve / Flickr