Volker Schönefeld

Researcher fromMachine Spirits UG
#3598of 56,335
76.3Total CVSS
Vulnerabilities · 9
Medium
1
High
4
Critical
4
PT-2026-82209
9.8
2026-08-26
Unknown · Senaite.Core · CVE-2026-54569
**Name of the Vulnerable Software and Affected Versions** SENAITE.CORE versions 2.0.0 through 2.6.0 **Description** An unauthenticated remote code execution issue exists in the SENAITE JSON API due to a chain of missing authorization and unsafe evaluation of input. The state-changing routes in `src/bika/lims/jsonapi/update.py`, including `update`, `update many`, `remove`, `doActionFor`, `doActionFor many`, and `getusers`, do not enforce the `senaite.core: Access JSON API` permission. Additionally, the `set fields from request` function in `src/bika/lims/jsonapi/init.py` passes raw request values for `RecordsField` and `RecordField` instances to the `eval()` function before write-permission checks are performed. An anonymous attacker can discover the `bika setup` object identifier via the `@@uuid` view and send a malicious payload to the `/@@API/update` endpoint. This allows the execution of arbitrary Python code within the Zope worker process. The same unsafe evaluation pattern is also present in `src/senaite/core/browser/fields/record.py` and `src/senaite/core/browser/fields/records.py`. Successful exploitation can lead to the exposure or modification of laboratory data, files, and accounts, or complete service disruption. **Recommendations** For versions 2.0.0 through 2.6.0: - Add the `AccessJSONAPI` permission check to every state-changing route in `src/bika/lims/jsonapi/` to ensure authorization is verified before processing requests. - Replace the `eval()` function with `json.loads()` in `src/bika/lims/jsonapi/ init .py`, `src/senaite/core/browser/fields/record.py`, and `src/senaite/core/browser/fields/records.py` to prevent arbitrary code execution. - Remove the `IDisableCSRFProtection` inheritance from `class ISenaiteCore` in `src/senaite/core/interfaces/ init .py` to re-enable automatic CSRF write-detection.