Vulnerabilidade em chips Qualcomm que permite extrair chaves privadas do armazenamento TrustZone

Pesquisadores do Grupo NCC descoberto detalhes vulnerabilidades (CVE-2018-11976) em chips Qualcomm, que permite determinar o conteúdo de chaves de criptografia privadas localizadas em um enclave isolado Qualcomm QSEE (Qualcomm Secure Execution Environment), baseado na tecnologia ARM TrustZone. O problema se manifesta em mais Snapdragon SoC, que se difundiu em smartphones baseados na plataforma Android. As correções que resolvem o problema já estão incluído na atualização de abril do Android e novos lançamentos de firmware para chips Qualcomm. A Qualcomm levou mais de um ano para preparar uma correção; as informações sobre a vulnerabilidade foram enviadas inicialmente à Qualcomm em 19 de março de 2018.

Lembremos que a tecnologia ARM TrustZone permite criar ambientes protegidos isolados por hardware que são completamente separados do sistema principal e executados em um processador virtual separado usando um sistema operacional especializado separado. O principal objetivo do TrustZone é fornecer execução isolada de processadores para chaves de criptografia, autenticação biométrica, dados de pagamento e outras informações confidenciais. A interação com o SO principal é realizada indiretamente através da interface de despacho. As chaves de criptografia privadas são armazenadas em um armazenamento de chaves isolado por hardware, que, se implementado corretamente, pode evitar seu vazamento se o sistema subjacente for comprometido.

A vulnerabilidade se deve a uma falha na implementação do algoritmo de processamento de curva elíptica, que levou ao vazamento de informações sobre o andamento do processamento dos dados. Os pesquisadores desenvolveram uma técnica de ataque de canal lateral que permite usar vazamentos indiretos existentes para recuperar o conteúdo de chaves privadas localizadas em um local isolado por hardware. Armazenamento de chaves do Android. Os vazamentos são determinados com base na análise da atividade do bloco de previsão de ramificação e nas alterações no tempo de acesso aos dados na memória. No experimento, os pesquisadores demonstraram com sucesso a recuperação de chaves ECDSA de 224 e 256 bits do armazenamento de chaves isolado por hardware usado no smartphone Nexus 5X. A recuperação da chave exigiu a geração de cerca de 12 mil assinaturas digitais, o que demorou mais de 14 horas. Ferramentas usadas para realizar o ataque Captura de cache.

A principal causa do problema é o compartilhamento de componentes de hardware comuns e cache para cálculos no TrustZone e no sistema principal – o isolamento é realizado em nível de separação lógica, mas utilizando unidades computacionais comuns e com rastros de cálculos e informações sobre ramificação endereços sendo depositados no cache comum do processador. Utilizando o método Prime+Probe, baseado na avaliação de alterações no tempo de acesso à informação cache, é possível, através da verificação da presença de determinados padrões na cache, monitorizar fluxos de dados e sinais de execução de código associados aos cálculos de assinaturas digitais em TrustZone com precisão bastante alta.

A maior parte do tempo para gerar uma assinatura digital usando chaves ECDSA em chips Qualcomm é gasto realizando operações de multiplicação em um loop usando um vetor de inicialização que permanece inalterado para cada assinatura (nonce). Se o invasor conseguir recuperar pelo menos alguns bits com informações sobre esse vetor, torna-se possível realizar um ataque para recuperar sequencialmente toda a chave privada.

No caso da Qualcomm, foram identificados dois locais onde tais informações vazaram no algoritmo de multiplicação: ao realizar operações de pesquisa em tabelas e no código de recuperação de dados condicional com base no valor do último bit do vetor “nonce”. Apesar de o código da Qualcomm conter medidas para neutralizar o vazamento de informações por meio de canais de terceiros, o método de ataque desenvolvido permite contornar essas medidas e determinar vários bits do valor “nonce”, que são suficientes para recuperar chaves ECDSA de 256 bits.

Fonte: opennet.ru

Adicionar um comentário