2018-1-07
A falha "genética" dos processadores vai afetar o mundo do IT por muito tempo. Saiba como mitigar o problema e quais os riscos envolvidos
O Meltdown e o Spectre vieram para ficar.
Existem mais de quatro mil milhões de dispositivos no mundo e a maioria padecem de um erro fundamental de nascença: estão todos vulneráveis a ciberataques, e o mundo não o soube até ao passado dia 3 de janeiro. Sumariamente, a arquitetura da maioria dos processadores permite o acesso indevido à memória do kernel (o núcleo de qualquer sistema operativo) e consequentemente o acesso a toda a informação processada, seja no seu smartphone, no PC ou num data center. Todos estes dispositivos padecem do mesmo defeito na origem da arquitetura dos processadores de alta-performance.
Um pouco de contextoEm 1995 a internet estava a experienciar um boom; o PC chegava a quase todas as casas do mundo desenvolvido. Foram anos de glória para a indústria. Para oferecer maior velocidade de processamento aos consumidores e empresas, já não chegava simplesmente esperar que a lei de Moore trabalhasse. A resposta da Intel chegou com o mítico processador Pentium Pro que introduziu nos PCs a Execução Especulativa. Para quem não sabe o que é a Execução Especulativa, uma analogia possível é aquela relação que temos com um empregado de café que nos conhece bem demais – ainda não terminamos de dizer o que queremos e já temos o pedido habitual sobre o balcão. Assim, a Execução Especulativa aumenta a velocidade de processamento ao operar múltiplas instruções de uma só vez, possivelmente numa ordem diferente daquela que entrou no CPU. Para o fazer, prevê qual o caminho mais provável que a instrução vai tomar, executando-a mesmo antes que ela acabe de entrar no processador, e fá-lo de uma forma "especulativa". Se a instrução não levar esse caminho, o processador faz roll back e executa novamente a instrução sem que isso afete a aplicação. É esta a razão da vulnerabilidade agora descoberta: esta capacidade preditiva dos processadores x86 e de todos os inspirados na mesma arquitetura, sejam AMD ou ARM, abre o acesso ao data cache do processador destinado ao kernel, e a partir daí é possível monitorizar todas as cadeias de pedidos ao processador.
A descobertaEsta vulnerabilidade permaneceu 22 anos adormecida; desconhecida por todos, incluindo os fabricantes. Um grupo de investigadores do Zero Project da Google (na maioria investigadores universitários), fez aquilo para que são patrocionados – encontrar vulnerabilidades de segurança desconhecidas ou Zero-Day Attacks – e descobriram no núcleo fundamental da computação o data cache timing do processador x86, e de todos as arquiteturas posteriores de todos os fabricantes que usem a Execução Especulativa. Os investigadores analisaram inicialmente processadores para servidores como o Intel Xeon E5-1650 v3, o processador da AMD de alto desempenho para desktop PC FX(tm)-8320 Eight-Core, o AMD PRO A8-9600 R7 para laptop, e o ARM Cortex A57 para mobile e que é usado inclusive pelos próprios smartphones Nexus da Google. Todos registaram vulnerabilidades (embora com nuances e de forma mais grave com a Intel) em dois grupos diferentes de problemas, a que chamaram de Spectre variante 1 e 2 e Meltdown variante 3. (papers científicos aqui: Spectre, Meltdown)
O SpectreO Spectre quebra o isolamento entre diferentes aplicações. Permite que um invasor engane programas, mesmo os que seguem as melhores práticas. Na verdade, as verificações de segurança das referidas melhores práticas aumentam a superfície de ataque e podem tornar as aplicações mais suscetíveis ao Spectre. Esta vulnerabilidade é difícil de explorar a partir das aplicações instaladas – pode ser explorada através de um código nativo desenhado para o efeito, mas existe uma forma mais simples de um atacante entrar no processador: usando JavaScript, que é uma linguagem quase sempre presente nos websites. Para além de violar os limites de isolamento da memória de processamento usando o código nativo, o Spectre também podem ser usado para violar o sandboxing do navegador, montando-os através do código JavaScript "móvel".
O MeltdownO Meltdown quebra o isolamento mais fundamental entre as aplicações do user e o sistema operativo. A segurança baseia-se fundamentalmente no isolamento da memória. Por exemplo, os intervalos de endereços do kernel são marcados como não acessíveis e estão protegidos do acesso do utilizador. Este ataque permite que um programa aceda à memória e, assim, à informação de outros programas e do sistema operativo. O Meltdown explora os efeitos colaterais da execução fora de ordem nos processadores modernos para ler locais arbitrários de memória do núcleo, incluindo dados pessoais e senhas.
Um segredo (quase) bem guardadoNão é claro o momento em que os investigadores encontraram esta falha fundamental de segurança, mas alguns PDF de papers científicos do grupo referem acontecimentos com data de 2016. O certo é que a Intel foi avisada, e por sua vez (em data também não determinada) comunicou aos fabricantes de sistema operativos, que reuniram equipas gigantescas de programadores para reescrever o kernel de modo a criar um isolamento. No caso do Linux sabe-se que o trabalho foi iniciado no final de setembro passado, no sentido de separar a memória do kernel dos processos do utilizador (Kernel Page Table Isolation). A Apple, a Microsoft, e claro que a própria Google, estão a trabalhar para mitigar o problema, e os primeiros patches estão disponíveis. Se a ideia era manter total segredo até ter uma solução para o problema de modo a que os cibercriminosos não tirassem vantagem da vulnerabilidade, então falhou já perto do final desta gigantesca taskforce, porque alguém informou o site inglês The Register do que estava a acontecer. A partir de dia 3 é uma corrida, entre os fabricantes que tentam lançar as defesas e os hackers que desenvolverão código para explorar o problema.
Mitigando o problemaÉ preciso ser claro: este problema vai atormentar a comunidade de IT durante muito tempo. Novos processadores terão arquiteturas acompanhadas de orientações claras sobre as propriedades de segurança do processador. A segurança do software depende fundamentalmente de haver uma clara compreensão conjunta entre as equipas de desenvolvimento do hardware e do software quanto às informações que o CPU pode ou não expor ao software no processo de cálculo. Até lá, temos de viver com o parque instalado de processadores, e o menos mau deste problema é que as vulnerabilidades podem violar o isolamento dos dados, mas não os podem comprometer.
SpectreO problema do Spectre, que permite que uma app possa vigiar outra durante a execução, não tem por enquanto uma solução de fundo – mas também dos dois tipos de ameaças é a menos provável. Aqui, todas as atenções se voltam para o motor de JavaScript nos browsers. Apple, Microsoft, Google e Mozilla – todos já lançaram na passada semana novas versões (Explorer e Edge Mozilla Chrome) dos seus navegadores, prevenindo que JavaScript malicioso possa ser lido em websites. Mas como diz a própria Mozilla Project, este é um processo que exige tempo, pelo que novas versões devem agora sair regularmente num processo de aperfeiçoamento. Até lá, e dependendo dos browsers, há opções para ou desligar o motor de JavaScript ou instalar extensões no browser para o mesmo efeito. Muitos sites vão ficar "estranhos” ou inavegáveis, mas o positivo é que possivelmente deixará de ver publicidade.
MeltdownA técnica de isolamento Kernel Page Table usada em Linux parece mitigar fortemente o problema. A questão é que existe uma enorme quantidade de processadores no ativo, o que conjugado com os 7 principais sistemas operativos dá uma imensidão de trabalho a fazer por parte dos fabricantes. No Linux 4.15, no Windows 17035 (RS4) lançado na passada semana, e no Mac OSX 10.13.2 lançado no final de dezembro, foram implementadas técnicas de isolamento do kernel, e é agora absolutamente mandatório aos responsáveis pelos sistemas fazerem estas primeiras atualizações, sendo certo que virão outras mais eficientes. Isto é especialmente importante no caso de processadores Intel, embora os vários tipos de processadores não se comportem de forma igual perante a ameaça. Nos testes realizados pelo Zero Project, processadores Skylake e Haswell tinham diferentes respostas ao ataques, sendo o Skylake mais vulnerável. A AMD só tem razão em parte quando diz que está menos exposta. Os seus processadores Ryzen têm o que afirma ser "rede neural de inteligência artificial que aprende a prever o futuro caminho que uma aplicação irá tomar com base em chamadas passadas” – o que resulta num pesadelo, porque atualmente não há como saber se uma construção de código específico é ou não segura.
Velocidade de processamento comprometida?A questão mais falada nos últimos dias é se as novas versões dos kernel vão tornar o processamento até 30% mais lento, como referiam as notícias iniciais. A Intel desmente, e diz que os efeitos são marginais para uma utilização típica de um processador. Este artigo está a ser escrito com recurso a um Intel Core i7 com o Mac OS 10.13.2 (já corrigido para o Meltdown), e para o utilizador está tudo igual em termos de velocidade, incluindo apps pesadas como as da Adobe.
Mas o que acontece no data center ? A Red Hat fez um exaustivo benchmark a cargas de trabalho em Linux, e tudo depende da intensidade com que é usado o kernel:
|