2018/11/05

Novo bug no hyperthreading deixa CPUs em risco

Quando se pensava que o Spectre e Meltdown já seriam um problema do passado, eis que surge nova técnica que se aproveita o hyperthreading nos CPUs Skylake e Kaby Lake da Intel, para poder roubar dados.

O Spectre e Meltdown vieram abalar a indústria dos CPUs, revelando falhas intrínsecas à sua arquitectura, e que foram dando lugar a inúmeras variantes e ataques neles inspirados, como o BranchScope, TLBleed, e Foreshadow. Agora, temos mais uma a juntar ao grupo.

O PortSmash é um novo ataque que tira partido do hyperthreading nos CPUs da Intel (e possivelmente também podendo afectar CPUs de outros fabricantes), para conseguir roubar informação que esteja a ser executada no núcleo de processamento que está a ser partilhado. O hyperthreading é uma tecnologia que maximiza o desempenho de um núcleo do CPU, reorganizando várias tarefas de modo a que esse núcleo possa trabalhar ao máximo das suas capacidades, em vez de ficar com "tempos mortos" durante o processo de espera de instruções. As vantagens em termos de desempenho são notórias - praticamente duplicando o desempenho que se poderia ter sem ele - mas infelizmente tem também tido o efeito secundário de proporcionar várias vertentes para este tipo de ataques especializados.


[Hyperthreading: os blocos em branco seriam momentos em que um núcleo não teria nada para fazer mas que com o Hyperthreading podem ser usados para processar outras threads]


No caso do PortSmash, os investigadores conseguiram demonstrar como obter uma chave privada de um servidor Ubuntu a correr OpenSSL, com CPUs Intel Skylake e Kaby Lake, através da medição do tempo que um dos núcleos demorava a executar cada instrução - e daí inferindo os dados que estariam a ser processados pelo outro processo.

Se compararmos o hyperthreading a uma pessoa que tem que cozinhar diversos pratos, mas que também atende o telefone enquanto espera pelo tempo que a comida está no forno, este ataque será o equivalente a tentar adivinhar qual o prato que ele está a confeccionar com base no tempo que ele demora a atender o telefone durante telefonemas sucessivos.


Entretanto o OpenSSL já foi actualizado para ser imune a este tipo de ataque, mas facilmente se percebe porque motivo a Intel optou por remover o hyperthreading da maioria dos seus novos CPUs. É complicado quando se tem que desenvolver hardware assumindo que tudo poderá ser abusado e explorado... até mesmo quando se tratam de tecnologias que visavam maximizar o desempenho.

3 comentários:

  1. A Intel anda mesmo numa maré de azar...mas também foram muitos anos a explorarem o ppl...

    ResponderEliminar
  2. "hyperthreading é uma tecnologia que maximiza o desempenho de um núcleo do CPU ... As vantagens em termos de desempenho são notórias - praticamente duplicando o desempenho que se poderia ter sem ele"

    "Intel optou por remover o hyperthreading da maioria dos seus novos CPUs"

    ???

    estou espantado com estas afirmações...
    agradecia evidencias a justificá-las.

    ResponderEliminar
    Respostas
    1. Bastará olhares para os novos CPUs de 9ª geração da Intel:
      Core i7-9700K - 8 cores / 8 threads
      Core i5-9600K - 6 cores / 6 threads
      Só o Core i9-9900K é que escapa: 8 cores / 16 threads

      (O mesmo já acontecia nalguns CPUs de 8ª geração, como o Core i5-8600K, e Core i3-8350K, pelo que não é uma novidade recente)

      Eliminar