Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Unauthenticated network access with no interaction (AV:N/AC:L/PR:N/UI:N); full read plus create/update/delete of usergroup data gives C:H and I:H, with no DoS impact so A:N.
Primary rating from Vendor (TuranSec).
CVSS VectorVendor: TuranSec
Lifecycle Timeline
2DescriptionCVE.org
An improper authorization vulnerability in daptin through v0.12.34 allows unauthenticated remote attackers to read, create, update, and delete usergroup records. The permission check functions (CanRead, CanPeek, CanCreate, CanUpdate, CanDelete, CanRefer) in server/permission/permission.go return true whenever p.UserId equals the requesting userId, but fail to reject the null/zero reference - unlike CanExecute, which explicitly guards it. Since usergroup table rows have no user_account_id and are loaded with a null owner, an unauthenticated guest whose session UserId is null gains full CRUD access to all usergroup objects.
AnalysisAI
Improper authorization in Daptin through v0.12.34 lets unauthenticated remote guests perform full CRUD (read, create, update, delete) on all usergroup records, effectively bypassing access control on the platform's group and permission objects. The flaw arises because permission checks treat a null/zero UserId as a valid ownership match, so a guest whose session UserId is null is granted owner-level rights over ownerless usergroup rows. No public exploit identified at time of analysis, but the CVSS of 9.1 (network, no auth, no interaction) reflects that manipulating usergroups can be leveraged to escalate privileges and corrupt the platform's authorization model.
Technical ContextAI
Daptin is an open-source, Go-based headless backend/BaaS that auto-generates REST/GraphQL APIs and enforces per-record access through a permission layer in server/permission/permission.go. This is a CWE-284 (Improper Access Control) root cause: the check functions CanRead, CanPeek, CanCreate, CanUpdate, CanDelete, and CanRefer return true whenever the record owner p.UserId equals the requesting userId. Unlike CanExecute, which explicitly rejects the null/zero reference, these functions omit that guard. Because usergroup table rows carry no user_account_id and are loaded with a null owner, the comparison null-owner == null-session-user evaluates as a legitimate ownership match, collapsing the intended authorization boundary. The affected component is identified by CPE cpe:2.3:a:daptin:daptin:*.
RemediationAI
No vendor-released patch identified at time of analysis; the references point only to the Daptin repository and the affected permission.go source file, not to a tagged patched release, so no exact fix version can be cited from the input. The correct code-level fix mirrors CanExecute: update CanRead, CanPeek, CanCreate, CanUpdate, CanDelete, and CanRefer in server/permission/permission.go to explicitly reject the null/zero UserId reference before treating an owner match as valid, then rebuild and redeploy. Until an upstream release is available, apply compensating controls: place the Daptin API behind an authenticating reverse proxy or gateway so anonymous/guest sessions cannot reach usergroup endpoints (trade-off: breaks any intended public/guest API access); restrict network exposure to trusted internal networks or VPN instead of the public internet; and monitor for unexpected create/update/delete operations against usergroup records. Track https://github.com/daptin/daptin for a patched release and upgrade immediately once published.
Same weakness CWE-284 – Improper Access Control
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-55231
GHSA-w34h-746p-3wp3