Remote-Timer-as-a-Service: Efficient Microarchitectural Leakage in the Cloud with Remote Timers
Este artigo demonstra que as contramedidas existentes do Cloudflare Workers contra ataques Spectre, incluindo o Isolamento Dinâmico de Processos (DyPrIs), são insuficientes contra vazamentos microarquiteturais remotos, uma vez que os autores exploraram com sucesso temporizadores remotos e técnicas de amplificação para exfiltrar um token JWT em velocidades significativamente maiores, levando a Cloudflare a implementar isolamento de memória assistido por hardware e sandboxing de V8 para mitigar a vulnerabilidade.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
No cenário digital moderno, uma vasta quantidade de nossa atividade online acontece não em centros de dados distantes e centralizados, mas em servidores localizados muito mais próximos de nós. Essa abordagem, conhecida como computação de borda (edge computing), permite que sites e aplicativos respondam quase instantaneamente ao processar dados por perto. Para tornar essa velocidade possível, empresas como a Cloudflare executam milhares de diferentes programas de clientes no mesmo computador físico ao mesmo tempo. Elas fazem isso compartilhando um único ambiente de software grande, em vez de dar a cada cliente seu próprio computador isolado. Esse design é incrivelmente eficiente, mas cria uma vulnerabilidade única. Se um programa puder espiar a memória de outro, ele poderia roubar informações sensíveis, como senhas ou chaves secretas. Durante anos, especialistas em segurança se preocuparam com um tipo específico de truque chamado ataque Spectre, onde um programa usa atrasos minúsculos e invisíveis na forma como um computador processa informações para adivinhar quais dados outro programa está segurando.
Pesquisadores da Cloudflare e da Universidade de Edimburgo demonstraram recentemente que esse risco teórico é um perigo prático e real. Eles mostraram que, mesmo com as rigorosas regras de segurança que a Cloudflare implementou para impedir tais truques, um programa malicioso ainda poderia ouvir o tempo de eventos através da internet para roubar segredos. A equipe provou que, ao usar uma combinação inteligente de técnicas, um atacante poderia medir o tempo com precisidade suficiente para contornar as defesas do sistema. Eles conseguiram extrair um token digital secreto de um programa vítima rodando na mesma máquina, fazendo isso centenas de vezes mais rápido do que qualquer tentativa anterior. Essa descoberta forçou a empresa a reformular sua arquitetura de segurança, passando de avisos baseados em software para barreiras reforçadas por hardware para proteger seus usuários.
A história começa com a forma como esses computadores de borda são construídos. Para lidar com milhões de solicitações a cada segundo, a Cloudflare executa muitos scripts de clientes dentro de um único processo, que é um grande contêiner contendo todos os programas ativos. Isso é diferente de sistemas antigos, onde cada programa rodava em sua própria caixa separada. Embora essa abordagem compartilhada torne tudo mais rápido, significa que, se um script encontrar uma maneira de ler a memória de seu vizinho, ele pode ver tudo o que esse vizinho está fazendo. Para evitar isso, a Cloudflare introduziu várias medidas de segurança. Eles congelaram os relógios que os programas podiam ler, impedindo-os de medir o tempo com precisão. Eles também removeram a capacidade de programas compartilharem memória ou executarem múltiplas threads simultaneamente. Além disso, instalaram um sistema de monitoramento chamado Isolamento Dinâmico de Processo, que monitora o comportamento de um script. Se um script começar a agir de forma suspeita, como tentar medir o tempo com muita frequência, o sistema o expulsa do processo compartilhado e o coloca em sua própria caixa isolada.
Os pesquisadores partiram para testar se essas defesas eram realmente suficientes. Eles começaram abordando o problema do tempo. Como o sistema congelava os relógios durante o trabalho normal, os atacantes precisavam de uma maneira de medir o tempo pelo lado de fora. Eles descobriram que poderiam usar um recurso chamado WebSockets, que permite que um programa mantenha uma conexão de longa duração com um servidor. Ao enviar mensagens de ida e volta através dessa conexão, eles podiam criar um temporizador remoto que funcionava mesmo enquanto o programa principal estava ocupado. Eles testaram isso no ambiente de produção real, não apenas em um laboratório, e descobriram que podiam medir o tempo com uma resolução de cerca de um milissegundo. Embora isso possa parecer lento, era o suficiente para iniciar o ataque.
O próximo desafio era tornar o sinal alto o suficiente para ser ouvido sobre o ruído da internet movimentada. Um único bit de informação secreta poderia causar apenas um atraso de alguns nanossegundos, o que é pequeno demais para ser medido com seu temporizador remoto. A equipe usou uma técnica chamada amplificação. Imagine tentar ouvir um sussurro em uma sala barulhenta; você pode pedir à pessoa para sussurrar a mesma coisa repetidamente, ou pode usar um dispositivo que faz o som ecoar. Os pesquisadores construíram um dispositivo que repetia o pequeno atraso milhares de vezes, acumulando o efeito até que o atraso total crescesse para alguns milissegundos. Isso fez com que a diferença entre uma resposta "sim" e "não" fosse grande o suficiente para ser detectada pelo temporizador remoto, mesmo com o jitter e o ruído de uma rede do mundo real.
Com um temporizador confiável e uma maneira de amplificar o sinal, a equipe voltou-se para o roubo real de dados. Eles precisavam de uma maneira de enganar o computador para revelar um segredo sem que o computador percebesse que isso estava acontecendo. Eles usaram um método chamado execução especulativa, onde o computador adivinha o que deve fazer a seguir e começa a trabalhar nisso antes de ter certeza de que está correto. Se a suposição estiver errada, o computador geralmente descarta o trabalho. No entanto, os pesquisadores descobriram uma maneira de fazer o computador deixar um rastro desse trabalho em seu cache, uma área de memória pequena e rápida. Ao organizar cuidadosamente seu código, eles puderam forçar o computador a adivinhar que deveria ler um dado secreto específico. Mesmo que o computador depois percebesse que estava errado e parasse, o ato de ler o dado deixou uma marca no cache que levava mais tempo para ser acessado posteriormente. Ao medir quanto tempo levava para acessar aquele ponto, eles podiam dizer se o dado secreto havia sido lido.
Os pesquisadores combinaram esses elementos em uma cadeia de ataque completa. Primeiro, usaram um recurso especial do sistema da Cloudflare chamado Durable Objects para manter seu script malicioso rodando por horas sem ser interrompido, contornando os limites de tempo usuais. Isso permitiu que permanecessem no mesmo processo compartilhado que sua vítima. Em seguida, usaram seus dispositivos de temporizador remoto e de amplificação para vazar o endereço de memória dos dados da vítima. Uma vez que sabiam onde os dados estavam, usaram um segundo dispositivo para ler o segredo real, que em seu teste era um token digital usado para autenticação. Eles repetiram esse processo bit a bit, reconstruindo todo o segredo.
Os resultados foram impressionantes. No ambiente de produção real, a equipe conseguiu roubar dados a uma taxa de até 12 bits por segundo. Este é um avanço massivo em relação às tentativas anteriores, que conseguiam apenas cerca de 120 bits por hora. O ataque foi preciso, identificando corretamente os bits secretos mais de 99 por cento das vezes. Crucialmente, o ataque teve sucesso em evitar o sistema de monitoramento (watchdog). Os pesquisadores descobriram que a maneira como usaram o temporizador remoto e a conexão de longa duração confundiu o sistema de detecção. O sistema analisava a frequência com que o script acessava certos contadores internos para decidir se era malicioso, mas o tempo do ataque deles fazia com que esses contadores parecessem normais. Como o script nunca terminava seu trabalho enquanto estava rodando, o sistema nunca teve a chance de isolá-lo antes que os dados fossem roubados.
Essa descoberta destacou uma falha fundamental em confiar apenas em software para deter truques de nível de hardware. As medidas de segurança que a Cloudflare tinha em vigor, como congelar relógios e monitorar o comportamento, não foram suficientes para deter um atacante determinado com as ferramentas certas. Em resposta a essa demonstração, a Cloudflare implementou uma série de novas defesas. Eles introduziram um sandbox que limita como os programas podem acessar a memória, efetivamente colocando uma cerca ao redor dos dados para que, mesmo que um programa tente olhar fora de sua própria área, ele não consiga alcançar os segredos do vizinho. Eles também melhoraram seus métodos de detecção para procurar os padrões específicos do ataque, em vez de apenas comportamentos gerais. Finalmente, e talvez o mais importante, eles implantaram um sistema de isolamento baseado em hardware. Este sistema utiliza as próprias capacidades físicas do computador para trancar os dados de cada cliente em uma sala separada, garantindo que, mesmo que um programa tente invadir, o próprio hardware bloqueará a tentativa.
O trabalho serve como um lembrete poderoso de que, no mundo da computação de alta velocidade, eficiência e segurança estão frequentemente em tensão. Ao empurrar os limites de quão rápidos e flexíveis esses sistemas podem ser, novas vulnerabilidades inevitavelmente aparecem. Os pesquisadores não apenas encontraram um erro; eles mostraram que toda a estratégia de proteger sistemas compartilhados com verificações de software era insuficiente contra ataques modernos e sofisticados. A solução exigiu uma mudança para limites reforçados por hardware, provando que, às vezes, a única maneira de manter os segredos seguros é construir paredes que o software não consiga escalar. Este estudo confirma que, embora a computação de borda ofereça velocidade e conveniência incríveis, ela exige um nível mais alto de segurança física para proteger as vastas quantidades de dados sensíveis que fluem através dela a cada segundo.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.