Reverb · Reverb · CVE-2024-8375
Nome do software vulnerável e versões afetadas:
Versões do Reverb anteriores àquela que inclui o commit git 6a0dcf4c9e842b7f999912f792aaa6f6bd261a25
Descrição:
Existe uma vulnerabilidade do tipo “use after free” no Reverb. O Reverb suporta o tipo de dados VARIANT, que deve representar um objeto arbitrário em C++. Quando um tensor proto do tipo VARIANT é descompactado, a memória é primeiro alocada para armazenar o tensor inteiro, e um construtor é chamado para cada instância. Posteriormente, o Reverb copia o conteúdo em `tensor content` para a memória pré-alocada mencionada anteriormente, o que faz com que os bytes em `tensor content` sobrescrevam os ponteiros vtable de todos os objetos que foram alocados anteriormente. O Reverb expõe dois endpoints gRPC relevantes: “InsertStream” e “SampleStream”. O invasor pode inserir esse fluxo no banco de dados do servidor; então, quando o cliente chamar “SampleStream” na próxima vez, ele descompactará o tensor na RAM e, quando qualquer método desse objeto for chamado (incluindo seu destrutor), o invasor ganhará controle do contador de programa.
Recomendações:
Atualize para uma versão posterior ao commit git 6a0dcf4c9e842b7f999912f792aaa6f6bd261a25 para resolver o problema. Como solução temporária, considere restringir o acesso aos endpoints “InsertStream” e “SampleStream” até que a atualização seja aplicada. Evite usar a variável `tensor content` nos pontos de extremidade da API afetados até que o problema seja resolvido.