PT-2026-51087 · Ohler55+3 · Oj+1
CVSS v4.0
8.7
Alta
| Vetor | AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
Nome do Software Vulnerável e Versões Afetadas
Oj versões anteriores a 3.17.2
Descrição
O Oj::Parser no modo usual não marca as referências
array class e hash class durante a coleta de lixo (GC), resultando em uma condição de Use-After-Free. Se o GC for executado após a classe ser atribuída, mas antes de uma operação de análise, o objeto da classe é recuperado, deixando o parser com um VALUE pendente. Uma chamada subsequente à função parse() desreferencia esse objeto liberado, levando a um erro de segmentação (segfault). Isso ocorre porque a função parser mark() em ext/oj/parser.c não passa o array class para rb gc mark(), fazendo com que o GC colete a classe referenciada. A falha ocorre especificamente quando close array class() chama rb funcallv() no VALUE da classe coletada.Recomendações
Atualize para a versão 3.17.2.
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
Oj
Ruby-Oj