PT-2021-18548 · Rocket · Rocket

Publicado

2021-02-09

·

Atualizado

2021-08-25

·

CVE-2021-29935

CVSS v2.0

7.5

Alta

VetorAV:N/AC:L/Au:N/C:P/I:P/A:P
Nome do software vulnerável e versões afetadas
Versões do rocket crate anteriores à 0.4.7
Descrição
O problema surge quando uma função fornecida pelo usuário entra em pânico, causando um uso após liberação (use-after-free) em uri::Formatter. Isso ocorre porque um &str é convertido em um &'static str antes de ser inserido em um StackVec e, posteriormente, retirado na mesma função. Se a função fornecida pelo usuário entrar em pânico, a suposição de que a referência é válida enquanto a pilha do método está ativa deixa de ser verdadeira, resultando em uma referência estática ilegal à string. Isso pode levar ao uso de uma string liberada durante ou após o desenrolamento do pânico, como em uma implementação de Drop ou por meio de catch unwind.
Recomendações
Para versões anteriores à 0.4.7, atualize para a versão 0.4.7 ou posterior para resolver o problema. Como solução alternativa temporária, considere usar um objeto guard para garantir que o &'static str seja descartado dentro da função, semelhante à correção feita no commit e325e2f. Evite usar a função uri::Formatter com funções fornecidas pelo usuário que possam entrar em pânico até que o problema seja resolvido.

Exploit

Correção

Use After Free

Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾

Enumeração de Fraquezas

Identificadores relacionados

CVE-2021-29935
GHSA-VCW4-8PH6-7VW8
RUSTSEC-2021-0044

Produtos afetados

Rocket