Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en un ID de registro en la implementación del adaptador iOS en WatermelonDB (paquete NPM "@nozbe/watermelondb") (CVE-2020-4035)

Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-89 Neutralización incorrecta de elementos especiales usados en un comando SQL (Inyección SQL)
Fecha de publicación:
03/06/2020
Última modificación:
11/06/2020

Descripción

En WatermelonDB (paquete NPM "@nozbe/watermelondb") versiones anteriores a 0.15.1 y 0.16.2, un ID de registro diseñado con fines maliciosos puede explotar una vulnerabilidad de inyección SQL en la implementación del adaptador iOS y causar que la aplicación elimine todo o registros seleccionados de la base de datos, por lo general, la aplicación queda inutilizable. Esto puede suceder en aplicaciones que no comprueban los ID (los ID válidos son "/^[a-zA-Z0-9_-.]+$/") y usan Watermelon Sync o el método "database.adapter.destroyDeletedRecords" de bajo nivel . El riesgo de integridad es bajo debido al hecho de que los registros eliminados maliciosamente no se sincronizarán, por lo que el inicio de sesión cerrará todos los datos, aunque algunos cambios locales pueden perderse si la eliminación maliciosa causa que el proceso de sincronización no avance a la etapa de inserción. No se conoce ninguna manera de violar la confidencialidad con esta vulnerabilidad. Una explotación completa de la inyección SQL se mitiga, porque no es posible anidar una consulta de inserción/actualización dentro de una consulta de eliminación en SQLite, y no es posible pasar una segunda consulta separada por punto y coma. Tampoco se conoce una manera práctica de violar la confidencialidad mediante la eliminación selectiva de registros, porque esos registros no se sincronizarán. Teóricamente es posible que la eliminación de registros selectiva pueda hacer que una aplicación se comporte de forma no segura si la falta de un registro para tomar decisiones de seguridad es usada por la aplicación. Esto está parcheado en las versiones 0.15.1, 0.16.2 y 0.16.1-fix

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:nozbe:watermelondb:*:*:*:*:*:*:*:* 0.15.1 (excluyendo)
cpe:2.3:a:nozbe:watermelondb:0.16.0:*:*:*:*:*:*:*
cpe:2.3:a:nozbe:watermelondb:0.16.1:*:*:*:*:*:*:*