PT-2021-18548 · Rocket · Rocket
Publicado
2021-02-09
·
Atualizado
2021-08-25
·
CVE-2021-29935
CVSS v2.0
7.5
Alta
| Vetor | AV: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
Produtos afetados
Rocket