blob: 2699e10c5d3639df99cab7c7f7009aec06b7f5ef [file] [log] [blame]
id: GO-2022-1039
modules:
- module: std
versions:
- fixed: 1.18.7
- introduced: 1.19.0-0
fixed: 1.19.2
vulnerable_at: 1.19.1
packages:
- package: regexp/syntax
symbols:
- parser.push
- parser.repeat
- parser.factor
- parse
derived_symbols:
- Parse
summary: Memory exhaustion when compiling regular expressions in regexp/syntax
description: |-
Programs which compile regular expressions from untrusted sources may be
vulnerable to memory exhaustion or denial of service.
The parsed regexp representation is linear in the size of the input, but in some
cases the constant factor can be as high as 40,000, making relatively small
regexps consume much larger amounts of memory.
After fix, each regexp being parsed is limited to a 256 MB memory footprint.
Regular expressions whose representation would use more space than that are
rejected. Normal use of regular expressions is unaffected.
credits:
- Adam Korczynski (ADA Logics)
- OSS-Fuzz
references:
- report: https://go.dev/issue/55949
- fix: https://go.dev/cl/439356
- web: https://groups.google.com/g/golang-announce/c/xtuG5faxtaU
cve_metadata:
id: CVE-2022-41715
cwe: 'CWE 400: Uncontrolled Resource Consumption'