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 alteradaPor 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-SAE 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: