Description
HTTP::Headers::ActionPack versions before 0.10 for Perl allow CPU exhaustion via Accept-Language ranges matched as regular expressions.
_language_match interpolates each Accept-Language range into the pattern `/^$range\-/i` without escaping it, so regular expression syntax in the header reaches the regex engine. A 12-byte range such as `(a?|b?){26}z` backtracks for seconds, and each increment of the quantifier doubles the time. An invalid range such as `(` fails to compile.
A remote attacker can exhaust CPU, or make choose_language die, in any application that passes an untrusted Accept-Language header to it.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| — | HTTP-Headers-ActionPack | < 0.10 | 0.10 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | libhttp-headers-actionpack-perl | 0.10-1 | — |
| Debian 13 | libhttp-headers-actionpack-perl | No fix yet | — |
| Debian 12 | libhttp-headers-actionpack-perl | No fix yet | — |
openSUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| openSUSE Tumbleweed | perl-HTTP-Headers-ActionPack | 0.100.0-1.1 | openSUSE-SU-2026:12501-1 |
Advisories 1
- openSUSE-SU-2026:12501-1 perl-HTTP-Headers-ActionPack-0.100.0-1.1 on GA media SUSE / openSUSE Security Updates · Nov 10, 2026