nginx ignition has ParseAcceptLanguage `_` separator bypass that enables ~75x CPU amplification via Accept-Language header in i18nMiddleware
### Summary The gin i18n middleware in nginx-ignition's API server runs in front of every HTTP request and calls `golang.org/x/text/language.ParseAcceptLanguage` on the raw `Accept-Language` header without imposing any size or shape filter. The underlying parser has quadratic-time behaviour on long lists of malformed language tags. The CVE-2022-32149 guard that golang.org/x/text added in v0.3.8 caps the number of `-` characters in the input at 1000, but it does not cap `_` characters even though the parser's internal scanner aliases `_` to `-` before parsing. A single unauthenticated GET request with an `Accept-Language` header built out of `_` separators burns about 2.4 seconds of server CPU on the host running nginx-ignition; ten concurrent attackers saturate a ten-core box for the duration of the attack while consuming ~10 MiB/s of upstream bandwidth. ### Affected versions `dillmann.com.br/nginx-ignition` v2.40.0 and (per code inspection of `main`) earlier 2.x versions whose `api/common/server/i18n.go` middleware routes the `Accept-Language` header through `language.ParseAcceptLanguage` without imposing its own size or character filter. Verified on: - the official `dillmann/nginx-ignition:latest` Docker image at v2.40.0 (E2E below) - `main` at commit `faef4c99442b329cfa4ee8879bdba41c22866a18` by reading `api/common/server/i18n.go` (the middleware is unchanged) ### Privilege required Unauthenticated. The middleware is registered on the global gin router that serves both the
GHSA-jr34-h97m-9hpx
Primary source · Revision 1
Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.
Security context
Source reference: osv:GHSA-jr34-h97m-9hpx
github.com/lucasdillmann/nginx-ignition
Source reference: /affected/0/package/name
- Affected versions
- Not stated in this record
- Fixed versions
- 0.0.0-20260526022344-0c988fc1277c
Source reference:
/affected/0/ranges - Prerequisites
- Not stated in this record
Structured affected-version data
Original package identities and version rules from this source.
[
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0.0.0-20260126024607-cbaf0fc16ed8"
},
{
"fixed": "0.0.0-20260526022344-0c988fc1277c"
}
]
}
],
"package": {
"name": "github.com/lucasdillmann/nginx-ignition",
"purl": "pkg:golang/github.com/lucasdillmann/nginx-ignition",
"ecosystem": "Go"
},
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-jr34-h97m-9hpx/GHSA-jr34-h97m-9hpx.json"
}
}
]- Related CVEs
- CVE-2026-61629
Source reference:
/aliases
Publisher severity
high
Source reference: /database_specific/severity
- Event
- #23411 · Revision 1
- Added to Heist Feed
- Publisher date