O que é ASLR e como ele mantém seu computador seguro?

aslr_cpu

O Address Space Layout Randomization (ASLR) é uma técnica de segurança usada em sistemas operacionais, implementada pela primeira vez em 2001. As versões atuais de todos os principais sistemas operacionais (iOS, Android, Windows, macOS e Linux) oferecem proteção ASLR. Mas na semana passada, um novo método de contornar o ASLR foi encontrado . Então, você deve se preocupar?

Para quem não tem um histórico de programação de baixo nível, o ASLR pode ser confuso. Para entendê-lo, você deve primeiro entender a memória virtual.

Índice

O que é memória virtual?

A 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ê tem 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 do que 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 RAM suficiente para armazenar todas as páginas de uma vez, as páginas com menor probabilidade de serem necessárias são armazenadas no disco rígido mais lento (porém mais espaçoso). Quando as páginas armazenadas são necessárias, eles trocam os espaços com menos páginas necessárias atualmente na RAM. Esse processo é chamado de paginação e empresta seu nome ao arquivo pagefile.sys no Windows .

A memória virtual torna mais fácil para os programas gerenciarem sua própria memória e também os torna mais seguros. Os programas não precisam se preocupar com onde os outros programas estão armazenando dados ou com a quantidade de RAM restante. Eles podem simplesmente solicitar ao sistema operacional memória adicional (ou devolver a memória não utilizada) conforme necessário. Tudo o que o programa vê é um único bloco 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 consultar a memória de outro programa.

Recomendado:  Os carros autônomos da Waymo agora levarão você ao aeroporto (em Phoenix)

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). O MMU traduz entre endereços virtuais e físicos, retornando essas informações ao sistema operacional. Em nenhum momento o programa interage diretamente com a RAM.

O que é ASLR?

O ASLR (Address Space Layout Randomization) é usado principalmente para proteger contra ataques de estouro de buffer. Em um estouro de buffer, os invasores alimentam uma função com a quantidade de dados inúteis que ela pode manipular, seguidos por uma carga maliciosa. A carga útil sobrescreverá os dados que o programa pretende acessar. As instruções para pular para outro ponto do código são uma carga útil comum. O famoso método JailbreakMe de jailbreak do iOS 4 , por exemplo, usou um ataque de estouro de buffer, levando a Apple a adicionar ASLR ao iOS 4.3.

Os estouros 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 souber 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 randomizar as localizações de diferentes partes do programa na memória. Cada vez que o programa é executado, os componentes (incluindo pilha, heap e bibliotecas) são movidos para um endereço diferente na memória virtual. Os atacantes não podem mais saber onde está seu alvo por tentativa e erro, porque o endereço será diferente a cada vez. Geralmente, os aplicativos precisam ser compilados com suporte ASLR, mas isso está se tornando o padrão e é necessário até mesmo no Android 5.0 e posterior.

Recomendado:  A linha de comando padrão do Windows 11 alcança Mac e Linux

O ASLR ainda protege você?

Na última terça-feira, pesquisadores da SUNY Binghamton e da University of California, Riverside, apresentaram um artigo chamado Jump Over ASLR: Atacando Preditores de Filiais para Contornar ASLR . O documento detalha uma maneira de atacar o Branch Target Buffer (BTB). O BTB é parte do processador que acelera as declarações if ao prever o resultado. Usando o método dos autores, é possível determinar a localização 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 (lançado pela primeira vez em 2013), mas provavelmente poderia ser aplicado a qualquer sistema operacional e processador moderno.

Dito isso, você não deve necessariamente se desesperar. O documento ofereceu algumas maneiras pelas quais os desenvolvedores de hardware e sistema operacional podem mitigar essa ameaça. Técnicas de ASLR mais novas e refinadas exigiriam mais esforço do invasor, e aumentar a quantidade de entropia (aleatoriedade) pode tornar o ataque Jump Over inviável. Muito provavelmente, os sistemas operacionais e processadores mais recentes serão imunes a esse ataque.

Então, o que resta para você fazer? O atalho Jump Over é novo e ainda não foi descoberto. Quando os invasores o exploram, a falha aumenta o dano potencial que um invasor pode causar ao seu dispositivo. Este nível de acesso não é sem precedentes; A Microsoft e a Apple implementaram o ASLR apenas em seus sistemas operacionais lançados em 2007 e posteriores. Mesmo que esse estilo de ataque se torne comum, você não estará em pior situação do que na época do Windows XP.

Lembre-se de que os invasores ainda precisam colocar o código no seu dispositivo para causar danos. Essa falha não fornece nenhuma maneira adicional de infectá-lo. Como sempre, você deve seguir as práticas recomendadas de segurança . Use antivírus, fique longe de sites e programas incompletos e mantenha seu software atualizado. Seguindo essas etapas e mantendo os agentes mal-intencionados longe do seu computador, você estará mais seguro do que nunca.

Recomendado:  Como fazer uma chamada de áudio Facetime

Crédito da imagem: Steve / Flickr