PT-2020-17844 · Nozbe · @Nozbe/Watermelondb

Radexpublished

·

Publicado

2020-06-03

·

Atualizado

2020-06-11

·

CVE-2020-4035

CVSS v3.1

5.9

Média

VetorAV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:H
Nome do software vulnerável e versões afetadas
Versões do @nozbe/watermelondb anteriores à 0.15.1
Versões do @nozbe/watermelondb anteriores à 0.16.2
Descrição
Um ID de registro criado de forma maliciosa pode explorar uma vulnerabilidade de injeção de SQL na implementação do adaptador iOS, fazendo com que o aplicativo exclua todos os registros ou registros selecionados do banco de dados. Isso pode ocorrer em aplicativos que não validam IDs e utilizam o Watermelon Sync ou o método de baixo nível database.adapter.destroyDeletedRecords. O risco à integridade é baixo, pois os registros excluídos de forma maliciosa não serão sincronizados; portanto, o logout e o login restaurarão todos os dados. Não há conhecimento de nenhuma forma de violar a confidencialidade por meio dessa vulnerabilidade. A exploração completa da injeção de SQL é mitigada porque não é possível aninhar uma consulta de inserção/atualização dentro de uma consulta de exclusão no SQLite.
Recomendações
Para versões anteriores à 0.15.1, atualize para a versão 0.15.1 ou posterior.
Para versões anteriores à 0.16.2, atualize para a versão 0.16.2 ou posterior.
Como solução temporária, certifique-se de que seu serviço de back-end sanitize os IDs de registros enviados no endpoint “pull sync”, de modo que apenas IDs que correspondam a /^[a-zA-Z0-9 -.]+$/ sejam retornados.
Se você usar destroyDeletedRecords diretamente, valide todos os IDs passados da mesma forma.

Correção

SQL injection

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

Enumeração de Fraquezas

Identificadores relacionados

CVE-2020-4035
GHSA-38F9-M297-6Q9G

Produtos afetados

@Nozbe/Watermelondb