Descripción de la vulnerabilidad

Saltcorn presenta una vulnerabilidad crítica de inyección SQL en sus rutas de sincronización móvil (POST /sync/load_changes y POST /sync/deletes). El problema radica en que los valores controlados por el usuario se interpolan directamente en plantillas SQL sin parametrización, validación de tipos o sanitización adecuada.

Mecanismo de explotación

La vulnerabilidad se encuentra específicamente en la función getSyncRows() del archivo packages/server/routes/sync.js, donde el parámetro maxLoadedId proveniente de req.body.syncInfos[tableName] se inserta directamente en consultas SQL sin validación. Cualquier usuario autenticado con role_id ≥ 80 (rol de usuario por defecto) que tenga acceso de lectura a al menos una tabla puede explotar esta falla.

Impacto y consecuencias

El impacto es crítico en múltiples dimensiones: Confidencialidad - permite la exfiltración completa de la base de datos incluyendo hashes de contraseñas de administradores, secretos de configuración y todos los datos de usuario; Integridad - en instancias con PostgreSQL permite ejecutar operaciones de escritura y DDL; Disponibilidad - posibilita la eliminación de tablas o corrupción de la base de datos. La vulnerabilidad también facilita la escalada de privilegios mediante el acceso a credenciales administrativas.