Zola Bridges da empresa Google para a coleção de compiladores LLVM, um patch com a implementação de proteção SESES (Supressão de Efeitos Colaterais de Execução Especulativa), que ajuda a bloquear ataques ao mecanismo de execução especulativa em CPUs Intel, como . O método de proteção é implementado no nível do compilador e baseia-se na adição de instruções , que são inseridas antes de cada instrução de leitura ou gravação na memória, bem como antes da primeira instrução de desvio em um grupo de instruções que finalize um bloco.
A instrução LFENCE aguarda a finalização de todas as operações de leitura da memória anteriores e proíbe a execução antecipada das instruções seguintes a LFENCE até que essa finalização esteja completa. O uso de LFENCE resulta em uma redução significativa no desempenho, portanto, a proteção é recomendada para ser aplicada em casos extremos para código especialmente crítico. Além disso, o patch oferece três flags que permitem desativar seletivamente determinados níveis de proteção para reduzir o impacto negativo no desempenho.
Nos testes realizados, a aplicação da proteção SESES para o pacote BoringSSL resultou em uma redução do número de operações executadas pela biblioteca por segundo em 14 vezes – o desempenho da variante da biblioteca compilada com proteção foi, em média, apenas 7,1% do desempenho da variante não protegida (variando de 4% a 23% dependendo do teste).
Para comparação, anteriormente para o GNU Assembler, o mecanismo que insere LFENCE após cada operação de carregamento da memória e antes de algumas instruções de desvio mostrou uma redução de desempenho de aproximadamente 5 vezes (22% do código sem proteção). O método de proteção também e foi desenvolvido por engenheiros da Intel, mas os resultados dos testes de desempenho para ele ainda não foram publicados. Inicialmente, os pesquisadores que identificaram o ataque LVI previram uma redução de desempenho ao aplicar proteção total de 2 a 19 vezes.
Fonte: opennet.ru
