CVE-2026-50636

The RemoteControl API methods invite_participants and remind_participants pass a caller-supplied token-ID array into TokenDynamic::findUninvited(), which concatenates the values directly into a tid IN ('...') SQL clause without parameterization or input validation. A remote, authenticated attacker holding the tokens/update permission on a survey can inject a crafted array element to perform SQL injection. Because LimeSurvey configures its PDO connection with emulated prepared statements (emulatePrepare = true) and does not disable MySQL multi-statements, the injection supports stacked queries: the attacker can append arbitrary additional statements (INSERT/UPDATE/DELETE/DROP/CREATE) after the original SELECT. This permits both arbitrary read of any data in the database, such as administrator bcrypt password hashes (lime_users), survey response PII, session records, and global settings, all recoverable via a SLEEP() time-based blind oracle, and arbitrary write/destruction of that data, including directly overwriting the administrator password hash for immediate account takeover or dropping/truncating tables. Reads and writes extend to any schema the application's database user can access. The RemoteControl interface (RPCInterface = json/xml) must be enabled, which is not the default.
Configurations

No configuration.

History

23 Jul 2026, 08:10

Type Values Removed Values Added
Summary
  • (es) Los métodos de la API RemoteControl invite_participants y remind_participants pasan un array de ID de token proporcionado por el llamador a TokenDynamic::findUninvited(), que concatena los valores directamente en una cláusula SQL tid IN ('...') sin parametrización o validación de entrada. Un atacante remoto y autenticado que posee el permiso tokens/update en una encuesta puede inyectar un elemento de array manipulado para realizar una inyección SQL. Debido a que LimeSurvey configura su conexión PDO con sentencias preparadas emuladas (emulatePrepare = true) y no deshabilita las multi-sentencias de MySQL, la inyección soporta consultas apiladas: el atacante puede añadir sentencias adicionales arbitrarias (INSERT/UPDATE/DELETE/DROP/CREATE) después del SELECT original. Esto permite tanto la lectura arbitraria de cualquier dato en la base de datos, como hashes de contraseña bcrypt de administrador (lime_users), PII de respuestas de encuestas, registros de sesión y configuraciones globales, todo recuperable a través de un oráculo ciego basado en tiempo SLEEP(), como la escritura/destrucción arbitraria de esos datos, incluyendo la sobrescritura directa del hash de contraseña del administrador para una toma de control de cuenta inmediata o la eliminación/truncamiento de tablas. Las lecturas y escrituras se extienden a cualquier esquema al que el usuario de la base de datos de la aplicación pueda acceder. La interfaz RemoteControl (RPCInterface = json/xml) debe estar habilitada, lo cual no es la configuración predeterminada.

09 Jun 2026, 18:17

Type Values Removed Values Added
New CVE

Information

Published : 2026-06-09 18:17

Updated : 2026-07-23 08:10


NVD link : CVE-2026-50636

Mitre link : CVE-2026-50636

CVE.ORG link : CVE-2026-50636


JSON object : View

Products Affected

No product.

CWE
CWE-89

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')