CVE-2026-61629
HighCVSS 7.5Summary
In nginx ignition versions 2.29.0 through 2.40.0, 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 caps the number of '-' characters at 1000 but 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.
Risk Assessment
Ten concurrent attackers can saturate a ten-core box for the duration of the attack while consuming ~10 MiB/s of upstream bandwidth. This poses a serious denial-of-service risk for the host running nginx-ignition.
Recommendation
Upgrade nginx-ignition to version 2.40.1 or later. Until patched, consider limiting the Accept-Language header size at the proxy level.
Other vulnerabilities in nginx ignition
See all- CVE-2026-61630Medium
nginx ignition (the UI for the nginx web server) in versions 2.33.0 through 2.35.0 has a vulnerability that allows a user with OTP 2FA enabled to reuse their TOTP during the standard 30-second validity window. Version 2.35.1 patches this issue.
- CVE-2026-61628High
In nginx ignition prior to version 2.41.1, POST /api/users/onboarding/finish is registered as anonymous (unauthenticated) and creates a user with full ReadWrite admin permissions. Because the handler uses a check-then-act (TOCTOU) pattern between the "onboarding already completed?" check and the user-creation write, with no atomic guard, a remote unauthenticated attacker who can reach an instance in its pre-onboarding state can create an administrator account for themselves, and concurrent requests can create multiple admin accounts in a single race.
Original NVD description (English source)
nginx ignition is a user interface for the nginx web server. In versions 2.29.0 through 2.40.0, 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. Version 2.40.1 fixes this issue.

