Pesquisador quebra isolamento de memória ao manipular registradores do controlador dram

7 min
Pesquisador quebra isolamento de memória ao manipular registradores do controlador dram

O pesquisador de segurança Christopher Domas revelou o skitter-creek-bath-salts, um projeto open-source que manipula registradores de tradução do controlador de memória para acessar regiões protegidas do hardware, incluindo SMM RAM e firmware PSP, em processadores AMD das famílias 14h, 15h e 16h.

O pesquisador de segurança Christopher Domas revelou o Repositório skitter-creek-bath-salts no GitHub (github.com), um projeto open-source de segurança de hardware que desmantela as fronteiras tradicionais de privilégio da CPU ao atingir a camada mais baixa da hierarquia de memória física. Ao manipular registradores de tradução do controlador de memória, a ferramenta altera dinamicamente os mapeamentos de endereços físicos para DRAM no nível da lógica de hardware, permitindo que software não privilegiado acesse regiões de memória isoladas da plataforma sem acionar fences de memória arquiteturais ou exceções de falha.

  • Christopher Domas revelou o skitter-creek-bath-salts, um projeto open-source que quebra o isolamento de memória da CPU manipulando registradores de tradução do controlador DRAM.
  • O exploit permite acessar regiões protegidas como SMM RAM, firmware do PSP, áreas de sleep CC6 e buffers de microcódigo em processadores AMD das famílias 14h, 15h e 16h.
  • As cercas de segurança tradicionais (EPT, TSEG, PSP) operam acima do controlador de memória, deixando um ponto cego explorável.
  • A mitigação recomendada é bloquear estritamente os registradores de tradução durante o boot, elevando a configuração de segurança acima do privilégio de CPU.
  • A descoberta expõe a distinção entre privilégio de CPU e privilégio de plataforma, com riscos para nuvem bare-metal e computação confidencial.

Como a manipulação de registradores do controlador de memória quebra o isolamento

A arquitetura de segurança dos processadores modernos parte do pressuposto de que endereços físicos mapeiam deterministicamente para locais específicos de armazenamento de silício. As fronteiras de segurança padrão, como Extended Page Tables de hipervisores, limites de faixa TSEG do System Management Mode e carveouts privados do Platform Security Processor (PSP), operam na camada de núcleo e interconexão do sistema, antes que o tráfego de memória alcance o controlador.

Domas descobriu que os registradores de tradução do controlador de memória ficam abaixo dessas cercas de controle de acesso. A manipulação de bits de configuração, como o BankSwizzleMode, muda fundamentalmente a forma como o controlador calcula as coordenadas de banco, linha e coluna da DRAM. Como os filtros de segurança a montante validam apenas o endereço físico não traduzido, esses bit-flips permitem que acessos padrão à memória alcancem silenciosamente enclaves de hardware protegidas.

Para extrair dados de memória embaralhada sem desestabilizar o sistema operacional hospedeiro, o exploit utiliza um pipeline de software em múltiplas etapas. Um módulo de kernel Linux personalizado desativa núcleos de CPU não utilizados para boot, limpa caches do sistema, pré-aquece buffers de tradução e desativa interrupções para garantir estabilidade de memória durante o re-cabeamento.

Scripts de sondagem automatizados usam uma heurística de coupon-collector, combinada com leituras direcionadas no espaço do usuário, para catalogar colisões de bits de endereço. A toolchain acompanhante modela a permutação de endereços físicos usando aritmética de campo de Galois e emprega um solver SMT para derivar o mapeamento bit a bit exato.

# publicidade

Mas o que isso significa para a segurança prática de sistemas em produção? A resposta é que a confiança na integridade da memória depende de todos os níveis da hierarquia, desde o núcleo até o controlador, e qualquer brecha nessa cadeia compromete as garantias de isolamento.

Os alvos: smm RAM, firmware psp e outras enclaves protegidas

Uma vez resolvido o mapa, o exploit executa rajadas direcionadas de leitura/escrita contra enclaves anteriormente impenetráveis, incluindo RAM do System Management Mode (SMM), tabelas de firmware do PSP, áreas de save de sleep CC6 do processador e buffers de patch de microcódigo. Esses componentes são considerados parte do chamado 'trusted computing base' das plataformas modernas.

O pesquisador destaca que essa vulnerabilidade expõe um ponto cego arquitetônico crítico: verificações de segurança a montante não podem garantir integridade se a lógica do controlador de memória a jusante permitir swizzling dinâmico de endereços. Isso representa riscos especialmente para ambientes de nuvem bare-metal e computação confidencial, onde a separação física e lógica da memória é um pilar de segurança.

A descoberta também evidencia a distinção vital entre privilégio de CPU e privilégio de plataforma. Enquanto processadores AMD das famílias 14h, 15h e 16h permitem que software Ring 0 manipule essas configurações, esse nível de acesso é fundamentalmente insuficiente, pois trata o kernel como inerentemente confiável.

Qual a implicação prática disso para equipes de segurança? A resposta está na necessidade de reavaliar o modelo de confiança: o kernel, mesmo rodando em Ring 0, não deve ser capaz de alterar configurações críticas da plataforma sem que isso seja detectado ou bloqueado.

A resposta da comunidade e as recomendações para sistemas futuros

A comunidade de segurança de hardware e engenharia reversa no Reddit, em subreddits como r/asm e r/blueteamsec, e podcasts como SANS ISC Stormcast responderam ao projeto com interesse significativo. As discussões centram-se nas implicações arquitetônicas da descoberta, observando que, como as cercas de segurança de plataforma existem acima do controlador de memória, elas permanecem alheias ao embaralhamento das coordenadas físicas brutas.

Especialistas também enfatizam as limitações práticas do exploit: exige privilégios Ring 0 e tem como alvo registradores primariamente acessíveis em processadores AMD mais antigos das famílias 15h e 16h. Isso reduz o impacto em sistemas modernos, mas não elimina o risco para ambientes legados.

Para proteger sistemas futuros, as equipes de hardware devem garantir que os registradores de tradução do controlador de memória sejam estritamente bloqueados durante o boot, elevando a configuração crítico de segurança da plataforma para fronteiras acima do privilégio de nível de CPU. A realidade de kernels adversários exige essa mudança de paradigma.

Enquanto isso, pesquisadores e profissionais de segurança podem acompanhar o repositório no GitHub e as discussões técnicas nos canais da comunidade para entender melhor o alcance da técnica e desenvolver contramedidas.

Comparativo das camadas de segurança de memória e como o skitter-creek-bath-salts explora o ponto cego abaixo do controlador
Camada de segurançaFuncionamentoLimitaçãoRisco explorado
Extended Page Tables (EPT)Tradução de endereços virtuais do hipervisorOpera acima do controlador de memóriaNão detecta swizzling de coordenadas físicas
TSEG range limitsLimita o acesso à RAM do SMMValida apenas o endereço físico não traduzidoPermite acesso direto a SMM RAM via mapeamento alterado
PSP private carveoutsIsola firmware do Platform Security ProcessorConfia na tradução determinística de endereçosExposição de tabelas de firmware via leitura/escrita
Controlador de memóriaCalcula coordenadas de banco, linha e coluna da DRAMRegistradores de tradução abaixo das cercasBit-flips em bits como BankSwizzleMode

Arraste para o lado para ver toda a tabela.

O que falta para que essas recomendações virem prática? A adoção exigirá mudanças nos firmwares, nos hipervisores e nos designs de próxima geração de processadores, mas o primeiro passo já foi dado com a divulgação da técnica.

COMPARTILHAR