CVE-2024-21631 json
Integer overflow in URI leading to potential host spoofing
published 2024-01-03 2 y ago modified 2026-09-10 1 mo ago also EUVD-2024-0412 , GHSA-r6r4-5pr8-gjcp
- cvss
- 6.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.6%
- EPSS 0.6% chance of exploitation in 30 days, percentile 49%
- public exploits
- 0
- none known
Summary
Vapor is an HTTP web framework for Swift. Prior to version 4.90.0, Vapor's `vapor_urlparser_parse` function uses `uint16_t` indexes when parsing a URI's components, which may cause integer overflows when parsing untrusted inputs. This vulnerability does not affect Vapor directly but could impact applications relying on the URI type for validating user input. The URI type is used in several places in Vapor. A developer may decide to use URI to represent a URL in their application (especially if that URL is then passed to the HTTP Client) and rely on its public properties and methods. However, URI may fail to properly parse a valid (albeit abnormally long) URL, due to string ranges being converted to 16-bit integers. An attacker may use this behavior to trick the application into accepting a URL to an untrusted destination. By padding the port number with zeros, an attacker can cause an integer overflow to occur when the URL authority is parsed and, as a result, spoof the host. Version 4.90.0 contains a patch for this issue. As a workaround, validate user input before parsing as a URI or, if possible, use Foundation's `URL` and `URLComponents` utilities.
Patch / fix
- swift github.com/vapor/vapor 4.90.0
- vapor vapor 4.90.0, pkg:swift/github.com/vapor/vapor@4.90.0
CISA SSVC
- Exploitation
- none
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 2 y ago
Exploit prediction
0.60% chance of exploitation in the next 30 days, higher than 49% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N |
| GitHub | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N |
| NVD | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| swift | github.com/vapor/vapor | <4.90.0 |
4.90.0 |
Affected products
- vapor vapor
Classification
References
-
github.com
/vapor/vapor/commit/6db3d917b5ce5024a84eb265ef65691383305d70
web, patch
-
github.com
/vapor/vapor/security/advisories/GHSA-r6r4-5pr8-gjcp
web, vendor-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2024-21631
advisory
-
github.com
/vapor/vapor
package
Sources
- CVE List CVE-2024-21631
- GitHub Advisory GHSA-r6r4-5pr8-gjcp
- NVD CVE-2024-21631
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.