Domoticz: Missing authorization and path traversal in the udevices Lua parser handler
Domoticz is a free, open source home automation system for Linux, Windows, macOS, and Raspberry Pi. Prior to 2026.3, the `udevices` JSON command handler, `Cmd_UpdateDevices` in `main/WebServerCmds.cpp`, performed no `session.rights` check before invoking a Lua parser script, while its sibling command handlers gate access by role. A low-privilege authenticated user could trigger execution of an existing operator-installed Lua parser script with attacker-controlled input through the `GET /json.htm` endpoint with `type=command` and `param=udevices`. The `script` parameter also lacked a `..` path-traversal guard: `CLuaHandler::executeLuaScript` in `main/LuaHandler.cpp` constructed the filename from the parser directory and the supplied script name before passing it to `luaL_loadfile`. Execution is limited to already-installed valid Lua files; this is not arbitrary code execution, and the advisory states that file-write and upload paths require administrator privileges. This issue is addressed in version 2026.3.
- Products
- domoticz
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-75520
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 08:40 UTC · Revision 1
Source evidence
Domoticz: Missing authorization and path traversal in the udevices Lua parser handler
core-cve · Original sourcePublished 28 Oct 2026, 22:30 UTC
Domoticz is a free, open source home automation system for Linux, Windows, macOS, and Raspberry Pi. Prior to 2026.3, the `udevices` JSON command handler, `Cmd_UpdateDevices` in `main/WebServerCmds.cpp`, performed no `session.rights` check before invoking a Lua parser script, while its sibling command handlers gate access by role. A low-privilege authenticated user could trigger execution of an existing operator-installed Lua parser script with attacker-controlled input through the `GET /json.htm` endpoint with `type=command` and `param=udevices`. The `script` parameter also lacked a `..` path-traversal guard: `CLuaHandler::executeLuaScript` in `main/LuaHandler.cpp` constructed the filename from the parser directory and the supplied script name before passing it to `luaL_loadfile`. Execution is limited to already-installed valid Lua files; this is not arbitrary code execution, and the advisory states that file-write and upload paths require administrator privileges. This issue is addressed in version 2026.3.
cve:CVE-2026-75520
domoticz
Fixed versions: Not specified
Complete source record
{
"id": "2a5cb4cdb92c7e90edaa076936ae04fcd2676ad95a99d3e462be8463343bd5a1",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-75520",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Domoticz: Missing authorization and path traversal in the udevices Lua parser handler",
"summary": "Domoticz is a free, open source home automation system for Linux, Windows, macOS, and Raspberry Pi. Prior to 2026.3, the `udevices` JSON command handler, `Cmd_UpdateDevices` in `main/WebServerCmds.cpp`, performed no `session.rights` check before invoking a Lua parser script, while its sibling command handlers gate access by role. A low-privilege authenticated user could trigger execution of an existing operator-installed Lua parser script with attacker-controlled input through the `GET /json.htm` endpoint with `type=command` and `param=udevices`. The `script` parameter also lacked a `..` path-traversal guard: `CLuaHandler::executeLuaScript` in `main/LuaHandler.cpp` constructed the filename from the parser directory and the supplied script name before passing it to `luaL_loadfile`. Execution is limited to already-installed valid Lua files; this is not arbitrary code execution, and the advisory states that file-write and upload paths require administrator privileges. This issue is addressed in version 2026.3.",
"evidence": "cve:CVE-2026-75520",
"products": [
{
"name": {
"value": "domoticz",
"evidence": "/containers/cna/affected/0/product"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": []
}
],
"severity": "medium",
"structured": {
"id": "CVE-2026-75520",
"aliases": [
"CVE-2026-75520"
],
"metrics": [
{
"cvssV3_1": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 5.4,
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N",
"integrityImpact": "LOW",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "NONE",
"privilegesRequired": "LOW",
"confidentialityImpact": "LOW"
}
}
],
"affected": [
{
"vendor": "domoticz",
"product": "domoticz",
"versions": [
{
"status": "affected",
"version": "<= 2026.2"
}
]
}
],
"modified": "2026-10-28T22:30:59.693Z",
"provider": "cve",
"references": [
"https://github.com/domoticz/domoticz/security/advisories/GHSA-8rv5-x8wv-c5c4",
"https://github.com/domoticz/domoticz/commit/73ed0495af6de3309f27cfc0091e803300ab5ccd",
"https://github.com/domoticz/domoticz/blob/2026.3/main/WebServerCmds.cpp#L3445-L3451",
"https://github.com/domoticz/domoticz/releases/tag/2026.3",
"https://github.com/domoticz/libwebem/blob/dfe946fa32f4c211662e47ef55b8cedfc50a6a76/include/libwebem/session.h#L10-L17"
],
"provider_metadata": {
"cna": {
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M",
"dateUpdated": "2026-10-28T22:30:59.693Z"
}
}
},
"related_cves": [
{
"value": "CVE-2026-75520",
"evidence": "/cveMetadata/cveId"
}
],
"security_relevant": true,
"severity_evidence": "/containers/cna/metrics"
},
"source_id": "core-cve",
"document_id": 501195,
"published_at": "2026-10-28T22:30:59.693+00:00"
}