Como desativar a proteção do Spectre: um novo parâmetro foi adicionado ao kernel do Linux

Um sinalizador apareceu no kernel do Linux que desativa a proteção contra vulnerabilidades do Spectre v4 em todos os processos filhos em execução no servidor. Mais sobre o novo parâmetro - sob o corte.


/ Flickr / Rie H / CC BY / Foto alterada

Por que você precisou desativar a proteção


O grupo de vulnerabilidades do processador Spectre ficou conhecido no início de 2018 e, nos meses seguintes, essa família foi reabastecida com novas “brechas de segurança”. As vulnerabilidades estão associadas à operação de sistemas que aumentam o desempenho do processador - gravação, leitura e previsão de transições especulativas - e permitem que os invasores ignorem os mecanismos de isolamento de memória nos processadores Intel e AMD.

Para fechar as vulnerabilidades, os desenvolvedores de sistemas operacionais emitem patches, mas sua instalação geralmente leva a uma diminuição na velocidade dos servidores. Por exemplo, em máquinas Linux, alguns patches do Spectre reduzem o desempenho em 30 a 50%.

Os administradores do sistema estavam insatisfeitos com o problema, especialmente em grandes data centers. Eles começaram a pedir aos desenvolvedores de kernel do Linux que desativassem seletivamente a proteção Spectre. Algumas das vulnerabilidades descobertas são apenas de natureza teórica e, em vários sistemas, elas basicamente não podem causar danos. Por exemplo, farms de renderização e supercomputadores offline são desconectados da Internet, para que não tenham medo de injeções de código malicioso.

A equipe do Linux encontrou usuários e introduziu várias funções que desabilitam a proteção contra vulnerabilidades Specter v1, v2 (falaremos mais sobre eles mais tarde) e v4. O último deles foi introduzido no início de fevereiro para todas as versões atuais do kernel - este é o novo sinalizador PR_SPEC_DISABLE_NOEXEC.

O que e por que desativa a função


A vulnerabilidade do Spectre v4 é chamada de desvio de armazenamento especulativo. Ele permite que o malware acesse resultados de computação especulativos que o processador descartou anteriormente como desnecessário.

Essa situação ocorre quando a CPU se revezam na leitura e gravação usando endereçamento indireto. A leitura ocorre com mais frequência do que a gravação, e o processador pode usar dados da memória para determinar o endereço de leitura sem aguardar o cálculo do deslocamento do endereçamento indireto. Se, após o cálculo do deslocamento, for detectada uma interseção das áreas de memória para escrita e leitura (ou seja, a leitura foi realizada da área errada), a segunda operação será executada novamente e o resultado especulativo será descartado.

Em teoria, verifica-se que, se um invasor conhece os endereços e a estrutura das células da memória, pode extrair dados deles, como chaves de criptografia.

O patch para o Spectre v4 apareceu no kernel do Linux alguns dias após a publicação de informações sobre a vulnerabilidade - por padrão, desativou a função de desambiguação de memória , que permitiu a execução extraordinária de comandos. Mas isso diminuiu as operações de E / S do processador em 10 a 40%.


/ Flickr / Rie H / CC BY-SA

E no início de junho de 2018, a versão 4.17 do kernel tornou possível desativar essa proteção. Havia um problema: o parâmetro não foi passado do processo pai para o filho. Para eles, a proteção precisava ser desativada manualmente, o que causava transtornos aos administradores do sistema. Porém, no início de fevereiro, os desenvolvedores do kernel implementaram o sinalizador PR_SPEC_DISABLE_NOEXEC . Ele complementa a função anterior e copia o modo operacional do patch do Spectre v4 do processo pai para os filhos. PR_SPEC_DISABLE_NOEXEC faz parte do prctl e você pode habilitá-lo ao iniciar qualquer novo processo.

O que dizem os especialistas


Na lista de discussão dos desenvolvedores do kernel Linux, a introdução da nova flag foi escrita por Waiman Long, da Red Hat. Segundo ele, a proteção do Spectre v4 afeta significativamente o desempenho de aplicativos que executam muitas operações de gravação, como bancos de dados. PR_SPEC_DISABLE_NOEXEC ajudará a automatizar a verificação para desativar o patch e acelerar os servidores com um grande número de processos em execução simultaneamente.

Ao mesmo tempo, os participantes da comunidade de TI observam que, em certas situações, o tratamento descuidado de uma nova bandeira pode levar a conseqüências desagradáveis.

"Vale a pena notar que em alguns ambientes não é seguro desativar a proteção do Spectre v4", diz Sergey Belkin, chefe do departamento de desenvolvimento do provedor de IaaS 1cloud.ru . - Eles incluem, por exemplo, serviços da web usando Java e JavaScript. A divulgação do conteúdo do processo de controle por código gerenciado pode ser fatal para a segurança do aplicativo. ”

Sobre outros patches do Spectre no kernel do Linux


Além do sinalizador PR_SPEC_DISABLE_NOEXEC, o kernel do Linux possui outros parâmetros que desabilitam a proteção do Spectre.

O primeiro é nospectre_v2 . A função desativa a proteção do Spectre v2, que permite que os atacantes usem o bloco de previsão de transição para "forçar" o processador a executar especulativamente uma operação em um módulo de memória específico. Para proteção, o patch desativa a função de prever indiretamente transições e impede a transferência de informações recebidas entre threads no mesmo núcleo da CPU.

Desativar a proteção leva a um aumento no desempenho do processador em 30% - foi assim que ocorreu após a instalação de um patch do Spectre v2. Até o criador do Linux, Linus Torvalds, apoiou o novo recurso. Segundo ele, a vulnerabilidade ameaça apenas processadores com a função SMT ; nesse caso em particular, será mais rentável desativá-la.

O segundo parâmetro - nospectre_v1 - desativa a proteção da primeira opção Spectre. Com a ajuda de malware, os hackers podem fazer com que o processador preveja incorretamente o resultado de uma transição condicional e descarte os resultados de cálculos especulativos na área de memória que os hackers precisam. Embora o patch da v1 não afete significativamente o desempenho (de acordo com alguns relatórios , a redução da velocidade do processador pode ser negligenciada), os desenvolvedores pediram para adicionar a capacidade de desativar essa proteção no kernel. Isso nos permitiu simplificar a estrutura de redes isoladas de acesso externo.

A comunidade de kernel Linux permanece fiel à idéia de livre escolha que Linus Torvalds estabeleceu desde o início: os próprios usuários são responsáveis ​​por equilibrar a segurança e o desempenho dos sistemas Linux. Portanto, vale a pena esperar que, após a detecção de novas vulnerabilidades semelhantes ao Spectre no kernel, um patch e a capacidade de desativá-lo apareçam.

Publicações do nosso blog corporativo:

Source: https://habr.com/ru/post/pt442140/


All Articles