Derretemos ou não? Crise nos CPU's!
Antes que comecem todos a correr de um lado para o outro feito baratas tontas, deixem que vos tranquilize. Encontraram um buraco fundo e não se sabe ao certo o que lá está dentro, OK? A probabilidade de haver uma exploração (exploit para os prós) através destas vulnerabilidades é uma probabilidade ao nível das teorias da conspiração :) Sim, estou a falar dos nossos amigos da NSA e da pandilha do batata.
Posto isto, o que é que está a acontecer?
O Meltdown e o Spectre são duas falhas de segurança relacionadas que potenciam ou possibilitam (depende da forma de como gostam de olhar para as coisas) a fuga ou a perda de um sem número de informações e dados através de um possível ataque ao processador. Aliás, o jovem Daniel Gruss, que deu com este problema, disse que ficou em choque quando viu o conteúdo do browser no decorrer da sua investigação. Ó Daniel, já eu fico chocado quando no meu browser vejo o conteúdo da verborreia coletiva que anda já aí pela net e pelos canais de notícias nacionais, relativo a esta questão.
Do ponto de vista mais técnico, este é um problema descoberto em sede de investigação de acesso à memória de um dispositivo. Sendo na sua génese um subproduto dessa investigação, é notoriamente sério. Aqui posso imaginar que na criação da ferramenta KAIZER, os investigadores tenham contactado a Intel, ARM e AMD e estes, por sua vez, apressaram-se a comunicar aos fabricantes de sistemas operativos e de serviços de cloud, ficando combinado que só algum tempo depois é que iriam dar a conhecer o problema, permitindo que estes aparecessem logo com meias ou completas medidas.
Se procura uma ajuda com esta questão e quer evitar ler este texto, então olhe para este documento e para esta publicação da Microsoft.
O que se sabe neste momento?
Hoje estava a navegar pela net e li em vários locais que no caso da falha nos processadores da Intel (1995 up), a questão já tinha dado origem a vários patches e que nenhum deles tinha tido efeito e que provavelmente criariam problemas de performance e que não se compreende ao certo a questão! Perceberam? Anda tudo sem respirar a dizer que há soluções para um problema que não percebem... Façam como eu e fujam desta gente. Segundo as revistas da especialidade, já tinham sido testados vários patches para o kernel do Linux e para o Windows e que provavelmente, e no caso da Microsoft, o próximo Patch Tuesday já trará novidades.
Os alvos são o Windows, Linux, Android, Chrome, iOS, MacOS e outros que tal.
De uma forma sintética, o processamento atual baseia-se na especulação, tentando antecipar um conjunto de instruções mesmo antes destas serem necessárias, num típico jogo de "adivinha quem veio para jantar" e assim escolhendo o melhor caminho para executar um conjunto de instruções e regozijando-se caso acerte pois com este método acabou por antecipar corretamente a instrução sem esperar que um típico ramo de processamento ficasse disponível para uso. Complexo? É, mas a parte porreira é que isto passa ao lado dos utilizadores... Chamei a isto na minha Ted Talk de transparência. Concretamente isto não é um problema mas sim business as usual, mas o que a malta descobriu é que esta operação, este processo, esta geringonça acaba por criar algum stress no funcionamento do processador e é passível de ser detetada com um cálculo de performance de operações, que, com recurso a estas medições, é possível manobrar propriedades que pertencem a outras operações para interferir em processos paralelos e distintos ou até mesmo no kernel de um sistema operativo (aqui aparece o Linux e o Windows), permitindo em última instância a execução do JavaScript num browser e subtrair uma password armazenada na memória intermédia do mesmo. Ufa...!
Agora que perdi metade da minha audiência com este refluxo geek, vou expandir a minha verborreia técnica a ver se vos confundo ainda mais.
Num hipotético cenário de catástrofe informática, o ASLR pode deixar de ser eficaz O.O e resultar num fulminante buffer overflow que atinge quase tudo o que é processador da Intel que tenha saído desde o tempo dos Afonsinhos (1995) em diante. Nesta nova geração de processadores, e em particular nos da ARM, o dano é vasto e veloz pois nestas unidades de processamento a fuga de informação através do kernel é simplesmente dramática.
Mas claro que nem tudo é um drama, esta poderia ser uma vulnerabilidade mais complexa de "encapsular" compreendendo que parte significativa do tema é a forma como os sistemas operativos partilham recursos de memória entre programas e o kernel, e para grandes males, grandes remédios. Pergunto eu: não será que parte da solução passará por controlar ou até isolar esta partilha? Logicamente perderíamos algum poder de processamento, mas nos dias de hoje creio que conseguiríamos criar mecanismos de isolamento de funções e operações para evitar promiscuidades ou quiçá um método que ampute ramificações absurdas no processamento.
Já o Spectre (porque nóia é que todos os temas que eu decido falar acabam por ter nomes ou associações a filmes do 007?) possui outras características e são transversais à Intel, ARM, AMD e, segundo verifiquei, a quase a todo o tipo de processador de execução especulativa (vejam acima o "Adivinhem quem veio para jantar"). Senão vejamos:
Num cenário de uso de máquinas virtuais ou de sandbox's existe a necessidade de testar os limites de um array de forma a ler a memória de um determinado processo. Ora, isto permite um ataque de integridade e de cross-process com recurso ao sistema de previsão dinâmica (BhT, BtB, Pipeline etc.). Sorte a nossa pois aparentemente há um mecanismo de correção para o problema Spectre. Mas vamos com calma... Este exemplo acima é apenas um e são vários os problemas a resolver nesta questão da partilha de recursos; existe um de maior dimensão, a recompilação do software produzido, e que assenta nesta arquitetura.
Em suma, poderia estar aqui como Pôncio Pilatos relativamente a esta questão mas não o vou fazer, não quero causar aneurismas desnecessários a mim e aos outros.
Prometo que voltarei com mais coisas boas e únicas a cada fabricante (Intel, AMD e ARM).
Vemo-nos por aí & Live long and prosper \\||/