Skip to main content

eScriptorium EUVDEUVD-2026-54090

| CVE-2026-18275 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-08-06 GitLab GHSA-4mrh-554p-w3v7
6.5
CVSS 3.1 · Vendor: GitLab
Share

Severity by source

Vendor (GitLab) PRIMARY
6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
vuln.today AI
6.5 MEDIUM

Low-privilege account required (PR:L); high integrity impact from content overwrite (I:H); no data read (C:N) and no denial of service (A:N).

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitLab).

CVSS VectorVendor: GitLab

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None

Lifecycle Timeline

1
Analysis Generated
Aug 06, 2026 - 16:20 vuln.today

DescriptionCVE.org

Authorization bypass in the process and annotation taxonomy serializers in Scripta eScriptorium through 26.04.1 allows a remote authenticated user to run segmentation and transcription against other users' document parts, overwriting their content, via part primary keys supplied to a many=True related field whose queryset restriction was applied to the ManyRelatedField instead of its child_relation and therefore had no effect

AnalysisAI

Authorization bypass in eScriptorium through version 26.04.1 enables any authenticated remote user to overwrite other users' document parts by supplying arbitrary part primary keys to misconfigured serializer endpoints. The flaw is a Django REST Framework IDOR (CWE-639): queryset access restrictions were applied to the ManyRelatedField wrapper instead of its child_relation, rendering them completely inoperative. No public exploit code or active exploitation (CISA KEV) has been identified at time of analysis; the integrity impact is high in collaborative archival workflows where document content corruption is irreversible without backup.

Technical ContextAI

eScriptorium is a Django-based collaborative document transcription platform. The vulnerability resides in the Django REST Framework serializers for the process and annotation taxonomy subsystems, specifically in fields declared with many=True. In DRF, a many=True relational field wraps a child_relation in a ManyRelatedField; queryset restrictions intended to scope accessible object IDs must be applied to child_relation. Here, the restriction was mistakenly applied to the outer ManyRelatedField, which never enforces it, leaving the child_relation unrestricted. This is a textbook CWE-639 (Authorization Bypass Through User-Controlled Key / IDOR): an authenticated user can supply arbitrary integer primary keys of document parts owned by other users, and the server processes them without authorization checks. Affected CPE: cpe:2.3:a:scripta:escriptorium:*:*:*:*:*:*:*:* covering all versions through 26.04.1.

RemediationAI

Users should monitor the eScriptorium GitLab repository (https://gitlab.com/scripta/escriptorium/-/work_items/1228) for a release that supersedes 26.04.1 addressing this flaw - no exact patched version is confirmed in the available data. Until a patched release is available, the most effective compensating control is restricting platform registration to fully trusted users only, since exploitation requires an authenticated low-privilege account; removing untrusted or shared accounts eliminates the attack surface entirely. Administrators may also consider operating in single-user or closed-group mode, disabling public registration if enabled, though this trades multi-user collaboration for security. Monitoring API logs for cross-user primary key patterns (a user submitting PKs outside their own document namespace) can provide detective coverage. No side-effect-free technical workaround at the serializer level is available without a code patch.

Share

EUVD-2026-54090 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy