O que é o Meltdown e Spectre?
No dia 4 de janeiro de 2018, foram reveladas múltiplas vulnerabilidades no design de CPUs mais recentes. Estas vulnerabilidades aproveitam certas otimizações de desempenho do próprio processador e permitem aos atacantes forçar as aplicações a revelar conteúdo do sistema e também revelar a memória da aplicação quando este processo é manuseado corretamente. Estas vulnerabilidades são aclamadas de Meltdown e Spectre. Estes ataques funcionam porque no funcionamento do processador a verificação de privilégios é subvertida através da interação de recursos tais como a: execução especulativa, previsão de ramificação, execução fora de ordem e o armazenamento em cache.
Meltdown foi divulgado no CVE-2017-5754. O Specter foi divulgadono CVE-2017-5753 e CVE-2017-5715.
Para obter informações mais detalhadas : https://www.leak.pt/vulnerabilidades-meltdown-spectre-precisa-saber/
Será que estou afetado por as vulnerabilidades Meltdown e Specter?
Meltdown e Specter afetam a maioria dos processadores mais recentes. As otimizações do processador que são usadas nessas vulnerabilidades são uma caracterÃstica básica do design da maioria dos CPUs, o que significa que a maioria dos sistemas são vulneráveis ​​até serem corrigidas por patchs/updates posteriores. Isto inclui computadores desktop, servidores e também instâncias de computação que operam na cloud.
Os patchs/updates para proteger contra o Meltdown estão a ser publicados pelos fornecedores dos sistemas operativos atuais. Enquanto os patchs/updates também estão a ser lançados para o Specter, este exploit representa uma classe inteira de vulnerabilidades, portanto, provavelmente irá exigir uma correção contÃnua muito mais extensa por parte dos fornecedores de SO.
Nos ambientes da cloud e virtualização, os fornecedores necessitam de atualizar as suas infraestruturas subjacentes para proteger todos os seus clientes/utilizadores. Os utilizadores também irão necessitar de atualizar os seus servidores para mitigar o impacto nos sistemas operativos convidados.
Como posso proteger os meus servidores?
A proteção completa contra esta classe de vulnerabilidades provavelmente irá exigir mudanças no design do CPU.
Temporáriamente, as atualizações de software podem fornecer mitigações contra estes exploits incapacitando ou circulando em torno das capacidades de otimização do CPU que leva a estas vulnerabilidades.
Infelizmente, porque estes patches/updates conseguem afetar as rotinas de otimização dentro do próprio processador, os patches de mitigação podem diminuir o desempenho do servidor (Existem bastantes relatos relacionados com a quebra de performance em vários computadores derivado a este tipo de correções efetuadas pelos fornecedores dos Sistemas Operativos). A desaceleração é altamente dependente do tipo de trabalho que está a ser realizado, como processos intensivos de I/O (Input/Output) evidenciando um maior impacto no sistema.
Status atual dos Patches de Mitigação
As distribuições que disponibilizaram as atualizações do kernel (corrigidas para o Meltdown e a variante 1&2 do Specter) :
- CentOS 7: kernel 3.10.0-693.11.6
- CentOS 6: kernel 2.6.32-696.18.7
As distribuições que disponibilizaram atualizações do kernel (corrigidas para Meltdown) :
- Fedora 27: kernel 4.14.11-300
- Fedora 26: kernel 4.14.11-200
- Ubuntu 17.10: kernel 4.13.0-25-generic
- Ubuntu 16.04: kernel 4.4.0-109-generic
- Ubuntu 14.04: kernel 3.13.0-139-generic
- Debian 9: kernel 4.9.0-5-amd64
- Debian 8: kernel 3.16.0-5-amd64
- Debian 7: kernel 3.2.0-5-amd64
- Fedora 27 Atomic: kernel 4.14.11-300.fc27.x86_64
- CoreOS: kernel 4.14.11-coreos
Se o kernel for atualizado para pelo menos uma das versões acima , é sinal que algumas das atualizações foram aplicadas.
Os Sistemas Operativos que ainda não lançaram kernels de correção:
- FreeBSD 11.x
- FreeBSD 10.x
Nota: No dia 4 de Janeiro na página oficial do FreeBSD, foi referido que existiam trabalhos para a disponibilização de patches para corrigir estes problemas no SO FreeBSD, ainda sem data para a publicação dos mesmos.
Aviso: Aconselhamos que faça o update ou migração de uma release que já tenha chegado ao seu fim de vida, pois estas releases deixam de ter acesso a patches de segurança e outros updates critÃcos para o bom funcionamento de um SO .
O que fazer para aplicar estas atualizações?
Para atualizar os servidores, é necessário atualizar o software do SO uma vez que os patches estão disponÃveis para a distribuição em questão. Pode-se atualizar executando o gestor de pacotes ou descarregar a última versão do kernel e, em seguida, reiniciar o servidor para alternar para o código corrigido.
Para servidores Ubuntu e Debian, pode atualizar o software do sistema atualizando o local package index e próprio software do sistema:
- sudo apt-get update
- sudo apt-get dist-upgrade
Para servidores CentOS, pode descarregar e instalar o software atualizado :
- sudo yum update
Para servidores Fedora, utiliza-se a ferramenta dnf :
- sudo dnf update
Independentemente do Sistema Operativo, uma vez que as atualizações são aplicadas, é necessário reiniciar o servidor para alterar para o novo kernel:
- sudo reboot
Quando o servidor voltar a estar on-line, é aconselhável verificar o kernel ativo na lista acima para garantir que o kernel tenha sido atualizado.
Contexto Adicional
As vulnerabilidades Meltdown e Specter aproveitam os recursos que melhoram o desempenho em processadores modernos. Uma combinação de recursos do processador, como a execução especulativa, a verificação de privilégios, a execução fora de ordem e o armazenamento em cache do CPU que permitem o acesso de leitura a locais de memória que devem estar fora dos limites de acesso. O resultado é que os programas sem privilégios podem ser coagidos para revelar dados confidenciais da sua própria memória ou acessar á memória privilegiada do kernel ou de outras aplicações presentes no sistema.
Como funciona o Meltdown?
O Meltdown funciona ao tentar manipular o processador a ler um local de memória fora dos limites de leitura, aproveitando as falhas que estão presentes na otimização do CPU chamada de execução especulativa.
A ideia é :
- Um pedido é feito para um local de memória ilegal.
- Um segundo pedido é feito para ler condicionalmente uma localização de memória válida se a primeira solicitação contiver um determinado valor.
- Utilizando a execução especulativa, o processador completa o trabalho em segundo plano para ambos os pedidos antes de verificar se a solicitação inicial é inválida. Uma vez que o processador entende que os pedidos envolvem memória fora dos limites, ele recusa os dois pedidos. Embora os resultados não sejam retornados pelo processador após o código de verificação do privilégio identificar o acesso à memória como inválido, ambos os locais acedidos ​​permanecem na cache do processador.
- Um novo pedido agora é feito para o local de memória válido. Se ele retornar rapidamente, então a localização já estava no cache do CPU, indicando que a solicitação condicional anterior foi executada. O uso iterativo destes condicionamentos pode ser utilizado para entender o valor dos locais de memória fora de limites.
O Meltdown representa uma vulnerabilidade especÃfica que pode ser corrigida.
Como funciona o Spectre?
O Specter também funciona ao enganar o processador para abusar da execução especulativa para ler valores restritos. Os avisos de divulgação destas vulnerabilidades descrevem duas variantes com diferentes nÃveis de complexidade e impacto.
Para a Variante 1 do Specter, o processador é enganado para executar especulativamente uma leitura antes de uma verificação de limites ser aplicada. Primeiro, o atacante encoraja o processador a atingir especulativamente uma localização de memória além dos seus limites válidos. Então, como o Meltdown, uma instrução adicional carrega condicionalmente um endereço válido na cache com base no valor fora dos limites. O tempo que demora para recuperar o endereço válido revela se este foi carregado na cache. Isto, por sua vez, pode revelar o valor da localização da memória fora dos limites.
A Variante 2 do Specter é a mais complicada tanto para explorar quanto para mitigar. Os processadores muitas vezes executam especificamente instruções mesmo quando encontram uma declaração condicional que ainda não pode ser validada nem revista. Eles fazem isso ao adivinhar o resultado mais provável do condicionamento utilizando um mecanismo chamado de previsão de ramificação.
A previsão de ramificação utiliza o histórico de idas anteriores através de um caminho de código para escolher um caminho para executar especulativamente. Isto pode ser utilizado por atacantes para criar um processador que possa tomar uma decisão especulativa incorreta. Como o histórico de seleção do ramo não armazena referências absolutas à decisão, um processador pode ser enganado na escolha de um ramo numa parte do código. Isto pode ser explorado para revelar valores da memória fora do intervalo aceitável.
Conclusão
O Specter e o Meltdown representam várias vulnerabilidades de segurança. O potêncial total do seu possÃvel impacto ainda está em estudo .
Para se proteger, é necessário tomar atenção relativamente ás atualizações de software do Sistema Operacional, pois estas atualizações são disponibilizadas pelos fornecedores de SO’s que continuam a monitorizar as vulnerabilidades Meltdown e Specter.
Receba as notÃcias Leak no seu e-mail. Carregue aqui para se registar. É grátis!