Skip to main content
VulnerabilityPublished Updated

CVE-2026-41422: Daptin · SQL injection via unvalidated goqu.L() calls in aggregate API

Affects github.com/daptin/daptinSource GCVE Database

0
Authoritative record:CVE-2026-41422· High 8.3

Not known to be exploited · CVSS 8.3 High : upgrade to 0.11.4 soon.

Data as of 27 Oct 2026, 00:07 UTC

CVSS 3.1 base score
8.3High
How severe the flaw is on the 0–10 CVSS scale.
Patch
Available – fixed in 0.11.4
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 7 May 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponised: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 26 Oct 2026.

What to do

Upgrade github.com/daptin/daptin to 0.11.4.

Affected software

ProductAffectedFixed in
Gogithub.com/daptin/daptinAffected
  • <0.11.4
Fixed in
  • 0.11.4

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

Description

## Summary The `/aggregate/:typename` endpoint accepted `column` and `group` query parameters that were passed verbatim to `goqu.L()` — a raw SQL literal expression builder — without any validation. This bypassed all parameterization and allowed authenticated users with any valid session to inject arbitrary SQL expressions. ## Impact An authenticated low-privilege user could: - Extract data from any table via subquery: `(SELECT group_concat(email) FROM user_account) as leak` - Disclose database internals: `sqlite_version()`, `(SELECT sql FROM sqlite_master)` - Exfiltrate cross-table data via correlated subqueries The vulnerability was confirmed locally; `user_account.email` values were extracted via a crafted `column` parameter by a non-admin user. ## Root Cause `goqu.L(userInput)` in `server/resource/resource_aggregate.go` inserted user-supplied query parameters directly into the SQL string with no validation. ## Fix (v0.11.4) All `goqu.L()` calls on user-controlled input were eliminated and replaced with: - Structural expression parsing supporting all documented API forms - Schema-based column validation (column names checked against entity schema via `TableInfo().GetColumnByName()`) - Exact-match allowlist for aggregate functions (`count`, `sum`, `avg`, `min`, `max`, `first`, `last`) and scalar functions (`date`, `strftime`, `upper`, `lower`, etc.) - Safe goqu constructors (`goqu.I()`, `goqu.SUM()`, `goqu.Func()`) for all generated expressions - `allowedTables` scope enforcement: qualified column refs (`table.col`) validated against root entity + explicitly joined tables only Two additional DoS bugs were fixed in the same commit: `uuid.MustParse` panic on malformed UUID input and an index-out-of-range panic in `ToOrderedExpressionArray` on empty sort expressions. ## Credits Reported by @VashuVats.

References

Community reviews

Loading reviews…