Daptin: ParseAcceptLanguage `_` separator bypass enables >250x CPU amplification via Accept-Language header in LanguageMiddleware
Daptin versions up to 0.12.15 are listed as affected, and 0.12.26 is the fixed release. The CVSS score is 8.7 (High); no vendor severity rating is given.
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- How many real-world setups can hit the bug, from the vendor's advisory and CISA data. It does not know your setup.What do these mean? →
- Unclear
- Fix
- Fixed in 0.12.26
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: poc
- Automatable: yes
- Technical impact: partial
Summary
Daptin, an open-source headless CMS that uses GraphQL and JSON-API, is affected through its language-handling middleware, which parses the Accept-Language HTTP header. An unauthenticated attacker can send specially crafted headers to public endpoints such as the landing page or the API to consume a disproportionate amount of server CPU, which can degrade or deny service to legitimate users.
Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.
Read the original description
Daptin is a GraphQL/JSON-API headless CMS. Prior to 0.12.26, the global `LanguageMiddleware` in `server/language.go` passes the raw `Accept-Language` header from `LanguageMiddlewareFunc` through `GetLanguagePreference` to `golang.org/x/text/language.ParseAcceptLanguage` without a size or shape filter. The guard for CVE-2022-32149 counts hyphens but not underscores, even though the internal parser normalizes underscores to hyphens. Long lists of underscore-separated language subtags longer than eight characters bypass the guard. These subtags fail the `len <= 8` length check in `golang.org/x/text/internal/language/parse.go`, causing repeated `gobble` operations to move the entire remaining buffer through `runtime.memmove`. With many invalid subtags, this repeated buffer movement takes quadratic work. Unauthenticated requests to the public landing page or `/api` can consume disproportionate CPU, with a 256 KiB header already causing seconds of processing and larger input permitted by the default 1 MiB header ceiling. `resource.CheckErr` also logs the entire invalid header, amplifying cost, while normal successful HTTP responses can conceal the denial-of-service traffic. Repeated requests can saturate server CPU. This issue is fixed in version 0.12.26.
Timeline
- CVE published
- First seen by cve.now
- CISA SSVC assessment
Exploitation: poc · Automatable: yes · Technical impact: partial
- Record last updated
Affected versions
- daptin daptin
fixed in 0.12.26
- github.com/daptin/daptinGo
through 0.12.15
References 2
GitHub · daptin/daptin
Questions about CVE-2026-62160
What does this mean?
A crafted Accept-Language header bypasses the parser's handling of the underscore separator, which multiplies the CPU work done per request by more than 250 times.Source: github.com
Am I affected, and how do I check?
The listed affected range is github.com/daptin/daptin up to and including 0.12.15. The flaw is in LanguageMiddleware, which is registered as a global gin middleware and passes the raw Accept-Language header of every request to the parser, so the installed Daptin version is the thing to check.Source: github.com
What should I do about it?
Upgrade Daptin to version 0.12.26 or later, which is the listed fixed release.Source: github.com
Is it being exploited?
It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. CISA's SSVC assessment notes a proof of concept exists. No public exploit code is tracked.Source: cve.now feed data