AMDNotícias

O problema com os Processadores Intel (AMD e ARM) é mais importante e perigoso do que você imagina!

Nem só de boas notícias vive o blog e como segurança é a pauta da semana graças aos problemas de design com os processadores (especialmente Intel) colocando em risco os dados de praticamente todos os usuários, vamos olhar profundamente para o caso e analisar até onde esse erro pode nos afetar.

Como o assunto é extremamente complexo, eu chamei o meu amigo e especialista em segurança, Alberto Azevedo, para poder contar para você o tamanho do drama.

Se quiser conhecer um pouco melhor, confira o vídeo que fizemos na Campus Party de Pato Branco – PR no final do ano passo:

O mundo entrou em pânico nesta semana. A razão é simples, vieram à público duas vulnerabilidades extremamente graves que afetam virtualmente (praticamente) todos os processadores em uso no mundo! 

Logo que as informações foram divulgadas, chegaram outros ainda mais “desconcertantes”. A primeira era de que a falha já havia sido comunicada aos fabricantes a nada menos do que SEIS meses e a segunda de que Brian Krzanich, CEO da Intel, “malandramente” vendeu nada menos que METADE de suas ações, ficando com o mínimo que ele legalmente poderia ficar quando soube das falhas há alguns meses atrás. 

A razão para as fabricantes estarem sabendo disso há tanto tempo e não terem feito nada (e Brian Krzanich ter feito o que fez) é simples: As falhas, e principalmente seus impactos e dificuldades no processo de correção, são muito mais graves do que você pode imaginar.

Começando pelo começo

O ano era 1946 e um matemático húngaro de nome John von Neumann, com sua equipe de pesquisadores no IAS (Princeton Institute for Advanced Studies), desenvolveu um novo modelo computacional onde uma máquina digital conseguia armazenar seus programas no mesmo espaço de memória que os dados, podendo assim manipular tais programas. Isso resolvia uma série de limitações que o modelo fixo, adotado até então, possuía. Isso porque até então os computadores não eram tão ‘programáveis” até então, mas praticamente “desenhados” para a função para que eram designados. Eram concebidos os desenhos esquemáticos de como ele faria aquilo, isso era escrito, e pronto.

Seria como se você criasse um computador “capaz de fazer bolo de chocolate”, ele teria a única e exclusiva capacidade de fazer bolo de chocolate pro resto da vida. Caso você quisesse mudar isso, ou “ensinar” ele a fazer um novo tipo de cobertura, você enfrentaria um processo extremamente penoso, em que seria preciso reprojetar a máquina como um todo, podendo levar semanas para criar um novo programa no ENIAC e voltar a trabalhar.

Diagrama computacional

O modelo de Von Neumann era revolucionário, mudava radicalmente a forma de como as coisas eram feitas e criava inúmeras novas possibilidades para a computação. Ele possibilita que a máquina tratasse as instruções recebidas e essa a capacidade de tratar as instruções como os dados é o que faz montadores, compiladores e outras ferramentas de programação automatizada possíveis. 

Era sensacional!

No entanto, haviam problemas e críticas, a primeira e mais óbvia mesmo à época era o gargalo. O canal de transmissão de dados entre a CPU e a memória leva ao que ficou conhecido como “gargalo de von Neumann”. A troca de dados limitada (taxa de transferência) entre a CPU e a memória em relação à quantidade de memória era problemática desde aquela época. 

Na maioria dos computadores modernos, a troca de dados entre o processador e a memória é muito menor do que a taxa com que o processador pode trabalhar. Isso limita seriamente a velocidade de processamento, que poderia ser muito mais eficiente, principalmente quando o processador é exigido para realizar o processamento de grandes quantidades de dados. A CPU é constantemente forçada a esperar por dados que precisam ser transferidos para, ou a partir da, memória. Como a velocidade da CPU e o tamanho da memória têm aumentado muito mais rapidamente que a taxa de transferência entre eles, o gargalo se tornou mais um problema, um problema cuja gravidade aumenta com cada geração de CPU.

Uma vez que os programas estão sendo armazenados no mesmo espaço que os dados, alterar o programa pode ser extremamente prejudicial, quer por acidente ou uma falha no design, um programa com defeito pode alterar outros programas ou até mesmo o sistema operacional. Vários matemáticos, dentre eles Alan Turing, se opunham ao modelo de Von Neumann apontando as falhas matemáticas no processo e escreveram artigos propondo outros modelos, mas o envolvimento de Neumann no projeto Manhattan e projeto ENIAC, fez com que sua concepção para o EDVAC alcançasse maior circulação, e o resto é história.

Voltando ao problema atual dos processadores

Essa limitação na arquitetura que já causou inúmeros problemas que foram sendo mitigados/resolvidos ao longo do tempo, por exemplo, praticamente todas as vulnerabilidades de memória que tivemos nos últimos anos tiram proveito dessa escolha de design, hoje mostrou seu verdadeiro potencial destrutivo. 

Não estou culpando Von Neumann pela falha de hoje, os culpados são as centenas de engenheiros que vieram posteriormente e não tiveram peito para fazer o que vão ter que fazer agora. Um completo redesign e reestruturação da arquitetura face aos novos desafios e realidade da computação atual.

Isso porque (spoiler alert!), a vulnerabilidade que foi nomeada Spectre, a principio, simplesmente não pode ser corrigida com um patch!!!

Ela vai exigir um redesign dos processadores. Você está entendendo, caro leitor?

Virtualmente todos, eu repito, TODOS os processadores em uso no mundo hoje precisarão ser TROCADOS!!!! Está entendendo porque a toca do coelho é mais profunda? Esta entendendo porque os fabricantes não fizeram nada até agora, mesmo tendo tido seis meses para fazer? Bom, o Brian fez, vendeu todas as ações que ele podia, porque ele sabia há meses o que o mundo ficou sabendo agora. Veja, não existe nem capacidade de produção para realizar as trocas que precisam ser feitas. O assunto é muito sério.

Antes de continuarmos, vamos explorar e explicar rapidamente os problemas.

Os problemas

Meses atrás alguns pesquisadores de segurança independentes e outros dentro do projeto “Google Project Zero” descobriram duas vulnerabilidades nos processadores que foram chamadas de Meltdown e Spectre. Elas permitem que atacantes maliciosos roubem/acessem todo o conteúdo de memória de computadores, celulares, e servidores. A primeira, chamada de Meltdown, está limitada à processadores Intel e quebra o isolamento existente entre as aplicações do usuário e o sistema operacional. Você pode achar mais informações aqui, além de ver uma PoC aqui e aqui.

Para essa vulnerabilidade existem alguns patchs de correção que já estão sendo disponibilizados, porém elas causarão uma redução na capacidade de processamento que pode variar entre 5% e 30%. Ao passo que será um certo incomodo para o usuário final perder cerca de 30% da capacidade de processamento de sua estação, você, caro leitor, faz alguma ideia do impacto financeiro que isso significa para uma Amazon por exemplo? 

Amazon, Microsoft, Google, entre outros grandes players do mercado de cloud, terão prejuízos astronômicos porque de uma hora pra outra seu parque computacional simplesmente não acomodará mais o uso que vem sendo feito dele. Note que enquanto em seu computador, um atacante pode roubar informações suas, em um servidor virtualizado ele pode roubar informações de todas as pessoas/empresas que estão acomodadas naquele virtualizador. Estamos falando de senhas, dados, chaves de criptografia, qualquer coisa.

Agora veja que o patch de correção, embora exista para o caso do Meltdown, precisa ser aplicado por cada administrador de sistemas da terra em seu sistema operacional. Lembram do WannaCry? Aquela vulnerabilidade foi descoberta e já havia uma correção disponível há meses no Windows. 

Está entendendo o problema? 

Pior é que o Meltdown pode ser explorado por qualquer script-kiddie com acesso a um computador e dois neurônios funcionais.

Sobre a Spectre…

Já por sorte a exploração da Spectre é mais complexa de ser realizada, e digo sorte, porque como foi dito, teoricamente simplesmente não existe correção possível para a vulnerabilidade. Será necessário um redesign completo dos processadores e Intel, AMD e ARM teriam de fazer um recall completo de todos os processadores já fabricados, na pratica, os problemas serão resolvidos somente no próximo ciclo de vida dos hardwares, ou seja, sentiremos os efeitos pela próxima década.

Basicamente o que ocorreu é que na ânsia e guerra pela performance e capacidade, as fabricantes se tornaram desleixadas com a segurança. Não é de hoje que isso é questionado por pesquisadores de segurança no mundo inteiro. Tanto que muitos equipamentos de missão crítica são equipados com os chamados processadores seguros. Processadores feitos por empresas como a Kryptus, empresa estratégica de defesa nacional pertencente aos amigos Gallo e Henrique e o seu Secure Crypto-processor (SCuP) ou os Secure Processors, fabricados pela Broadcom por exemplo.

A Spectre foi chamada dessa maneira pois explora o que chamamos de “capacidade de execução especulativa dos processadores”. 

Processadores modernos usam técnicas como branch prediction e speculative execution para maximizar a performance. Lembram do gargalo do Von Neumann? Essas são algumas das técnicas adotadas pra tentar mitigar esse problema. Na prática se o destino dos dados de um branch dependem de dados que ainda estão sendo lidos na memória, a CPU vai tentar “especular” (adivinhar/prever) qual é esse destino e executar na frente.

Quando os dados de fato chegarem, ela irá confirmar ou descartar essa previsão. O ataque consiste em abusar dessa capacidade especulativa dos processadores e induzir a vítima a realizar operações que não iriam ocorrer normalmente, o que leva ao vazamento de informações via side-channel. 

Você pode ver um exemplo de implementação aqui. Embora seja possível mitigar os efeitos da Spectre via micro-code, a solução só vai ocorrer através de um redesign dos processadores, o que absolutamente não ocorrerá de forma rápida. 

O problema é que na guerra entre segurança e velocidade, foram sendo feitas concessões em nome da performance. A conta está chegando agora.

A solução é trocar os CPUs

Finalizando

No fim das contas esse incidente pode trazer resultados positivos. O primeiro deve ser uma profunda reflexão por parte do mercado e do perigo em se ficar dependente de tão poucos fornecedores de hardware, veja, o mercado de processadores está literalmente nas mãos de três empresas. Somos totalmente dependentes delas, de suas vontades e de suas decisões. Outro benefício será uma maior atenção e importância a ser dada às questões de segurança. Esse dilema já é antigo, Segurança x Velocidade. 

“Se você tem um baú, colocar um cadeado nele o deixará mais seguro, mas vai levar mais tempo para abri-lo e fecha-lo todas as vezes que você precisar fazer isso durante o dia.”

E nessa discussão até hoje a performance tem sempre vencido a segurança, pode ser que isso mude um pouco agora. Outra vantagem vai ser o fato de que tecnologias como Field-Programmable Gate Array (FPGA) e Complex Programmable Logic Device(CPLD) devem ganhar mais relevância, uma vez que apresentam muito mais recursos e possibilidades de personalização do que as tecnologias em uso hoje.

Resumindo, a solução não vai ser simples a Intel está claramente tentando acalmar os animos, mas a questão é muito séria. Como foi dito, a Meltdown pode ser explorada até pela minha filha de cinco anos, já a Spectre pode ser explorada por pessoal mais qualificado, por agentes do estado, ou patrocinados por ele. O que levanta a pergunta: Há quanto tempo você acha que a NSA, por exemplo, pode estar explorando essas falhas secretamente? Agora pense. 

Ambas as vulnerabilidades podem ser exploradas até mesmo via browser, como a Mozilla publicou e a correção de uma delas implica na perda de até 30% de performance e a outra não tem correção definitiva possível, a não ser a troca do processador, o que implicaria em um recall completo de todos os processadores já fabricados em uso e a sua substituição por novos com um redesign que nem existe ainda. 

Mesmo que as fabricantes estivessem dispostas a ir a falência para tentar fazer isso em tempo record, esse tecnologia ainda não foi criada, visto que um projeto completo de um novo processador pode levar anos, além disso, não temos capacidade de produção para esse volume. 

Consegue entender agora porque as fabricantes elas não fizeram nada de muito concreto nesses seis meses em que sabem das falhas? Consegue entender as implicações disso tudo?

Bem-vindo ao Cybergeddon!

Agradecimentos

Gostaria de deixar os meus cumprimentos e agradecimentos ao Alberto J. Azevedo pela abordagem clara e consiga, você pode ler alguns artigos que ele publica eventualmente no Medium, de hoje em diante, espere ver alguns conteúdos dele aqui no blog também, sejam autorais ou co-escritos.

Até a próxima!

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!