VDB
Sign up
MEDIUM5.7

GHSA-cmcx-xhr8-3w9p

Denial of Service in uap-core when processing crafted User-Agent strings

Quick fix

GHSA-cmcx-xhr8-3w9p — uap-core: upgrade to the fixed version with the command below.

npm install uap-core@0.7.3

Details

### Impact

Some regexes are vulnerable to regular expression denial of service (REDoS) due to overlapping capture groups. This allows remote attackers to overload a server by setting the User-Agent header in an HTTP(S) request to maliciously crafted long strings.

### Patches

Please update uap-core to >= v0.7.3

Downstream packages such as uap-python, uap-ruby etc which depend upon uap-core follow different version schemes.

### Details

Each vulnerable regular expression reported here contains 3 overlapping capture groups. Backtracking has approximately cubic time complexity with respect to the length of the user-agent string.

#### Regex 1:

``` \bSmartWatch *\( *([^;]+) *; *([^;]+) *; ```

is vulnerable in portion ` *([^;]+) *` and can be attacked with

```python "SmartWatch(" + (" " * 3500) + "z" ``` e.g. ``` SmartWatch( z ```

#### Regex 2:

``` ; *([^;/]+) Build[/ ]Huawei(MT1-U06|[A-Z]+\d+[^\);]+)[^\);]*\) ```

is vulnerable in portion `\d+[^\);]+[^\);]*` and can be attacked with

```python ";A Build HuaweiA" + ("4" * 3500) + "z" ```

#### Regex 3:

``` (HbbTV)/[0-9]+\.[0-9]+\.[0-9]+ \([^;]*; *(LG)E *; *([^;]*) *;[^;]*;[^;]*;\) ```

is vulnerable in portion ` *([^;]*) *` and can be attacked with

```python "HbbTV/0.0.0 (;LGE;" + (" " * 3500) + "z" ```

#### Regex 4:

``` (HbbTV)/[0-9]+\.[0-9]+\.[0-9]+ \([^;]*; *(?:CUS:([^;]*)|([^;]+)) *; *([^;]*) *;.*; ```

is vulnerable in portions ` *(?:CUS:([^;]*)|([^;]+)) *` and ` *([^;]*) *` and can be attacked with

```python "HbbTV/0.0.0 (;CUS:;" + (" " * 3500) + "z" "HbbTV/0.0.0 (;" + (" " * 3500) + "z" "HbbTV/0.0.0 (;z;" + (" " * 3500) + "z" ```

Reported by Ben Caller @bcaller

Are you affected?

Enter the version of the package you're using.

Affected packages

npm/uap-core
Introduced in: 0Fixed in: 0.7.3
Fixnpm install uap-core@0.7.3
RubyGems/user_agent_parser
Introduced in: 0Fixed in: 2.6.0
Fixbundle update user_agent_parser

References