CVE-2024-38428
Critical · 9.1CVSS
9.1
EPSS
0.7%
Published
Jun 16, 2024
CISA due date
—
Cloudanix analysis
A flaw in the wget download tool can make it connect to the wrong server when given certain web addresses, risking exposure of login details or files.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Application
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Mishandling of semicolons in the userinfo subcomponent of URIs in url.c causes data intended for credentials to be interpreted as part of the host component, enabling improper input validation that can redirect connections or leak information to attacker-controlled endpoints.
Why it matters to the business
Organizations relying on wget for automated downloads or mirroring face risk of sensitive credentials or data being sent to unintended hosts, potentially leading to data breaches or supply-chain compromise until systems are updated.
How an attack unfolds
An attacker crafts a malicious URI containing a semicolon in the userinfo portion and supplies it to wget; the parser incorrectly treats the subsequent data as the host, causing wget to connect to an attacker-chosen destination instead of the intended server and potentially transmit credentials or request content from a malicious location.
How to fix it
Upgrade GNU Wget to the fixed commit ed0c7c7e0e8f7298352646b2fd6e06a11e242ace or later; rebuild from the patched source if using a distribution package that has not yet incorporated the fix.
How to confirm the fix worked
Confirm the installed wget binary or source tree contains commit ed0c7c7e0e8f7298352646b2fd6e06a11e242ace; test by feeding a semicolon-containing userinfo URI and verifying the resolved host matches the intended authority component rather than the post-semicolon segment.
Typical attack path
- Attacker constructs a URI with semicolon separating userinfo from a malicious host segment
- Victim or automated process invokes wget with the crafted URI
- url.c misparses the URI and resolves the attacker-controlled host
- Connection is established to the unintended host, enabling data exfiltration or further exploitation
How to detect it
Review wget invocation logs and network connection records for URIs containing semicolons in the authority component; correlate process execution of wget with outbound connections to hosts that do not match the expected domain from the original URI.
What your security team should do
- Immediately update all wget installations to the patched commit
- Audit scripts and cron jobs that invoke wget with untrusted URIs
- Monitor network logs for unexpected host resolutions originating from wget processes
- Consider replacing wget with curl or other hardened clients where feasible until patches are widely deployed
The record
url.c in GNU Wget through 1.24.5 mishandles semicolons in the userinfo subcomponent of a URI, and thus there may be insecure behavior in which data that was supposed to be in the userinfo subcomponent is misinterpreted to be part of the host subcomponent.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | wget | 0 | 1.19.5-12.el8_10 |
| AlmaLinux:9 | wget | 0 | 1.21.1-8.el9_4 |
| Debian:11 | wget | 0 | No fix |
| Debian:12 | wget | 0 | No fix |
| Debian:13 | wget | 0 | 1.24.5-2 |
| Mageia:9 | wget | 0 | 1.21.4-1.1.mga9 |
| Red Hat:enterprise_linux:8::appstream | wget | 0 | 0:1.19.5-12.el8_10 |
| Red Hat:enterprise_linux:8::appstream | wget-debuginfo | 0 | 0:1.19.5-12.el8_10 |
| Red Hat:enterprise_linux:8::appstream | wget-debugsource | 0 | 0:1.19.5-12.el8_10 |
| Red Hat:enterprise_linux:9::appstream | wget | 0 | 0:1.21.1-8.el9_4 |
| Red Hat:enterprise_linux:9::appstream | wget-debuginfo | 0 | 0:1.21.1-8.el9_4 |
| Red Hat:enterprise_linux:9::appstream | wget-debugsource | 0 | 0:1.21.1-8.el9_4 |
| Red Hat:rhel_aus:8.6::appstream | wget | 0 | 0:1.19.5-10.el8_6.2 |
| Red Hat:rhel_aus:8.6::appstream | wget-debuginfo | 0 | 0:1.19.5-10.el8_6.2 |
| Red Hat:rhel_aus:8.6::appstream | wget-debugsource | 0 | 0:1.19.5-10.el8_6.2 |
| Red Hat:rhel_e4s:8.6::appstream | wget | 0 | 0:1.19.5-10.el8_6.2 |
| Red Hat:rhel_e4s:8.6::appstream | wget-debuginfo | 0 | 0:1.19.5-10.el8_6.2 |
| Red Hat:rhel_e4s:8.6::appstream | wget-debugsource | 0 | 0:1.19.5-10.el8_6.2 |
| Red Hat:rhel_eus:8.8::appstream | wget | 0 | 0:1.19.5-11.el8_8.1 |
| Red Hat:rhel_eus:8.8::appstream | wget-debuginfo | 0 | 0:1.19.5-11.el8_8.1 |
| Red Hat:rhel_eus:8.8::appstream | wget-debugsource | 0 | 0:1.19.5-11.el8_8.1 |
| Red Hat:rhel_eus:9.2::appstream | wget | 0 | 0:1.21.1-7.el9_2.1 |
| Red Hat:rhel_eus:9.2::appstream | wget-debuginfo | 0 | 0:1.21.1-7.el9_2.1 |
| Red Hat:rhel_eus:9.2::appstream | wget-debugsource | 0 | 0:1.21.1-7.el9_2.1 |
| Red Hat:rhel_tus:8.6::appstream | wget | 0 | 0:1.19.5-10.el8_6.2 |
| Red Hat:rhel_tus:8.6::appstream | wget-debuginfo | 0 | 0:1.19.5-10.el8_6.2 |
| Red Hat:rhel_tus:8.6::appstream | wget-debugsource | 0 | 0:1.19.5-10.el8_6.2 |
| SUSE:Linux Enterprise Micro 5.5 | wget | 0 | 1.20.3-150000.3.20.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | wget | 0 | 1.20.3-150000.3.20.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP6 | wget | 0 | 1.20.3-150600.19.3.1 |
| SUSE:Linux Enterprise Server 12 SP5 | wget | 0 | 1.14-21.19.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | wget | 0 | 1.14-21.19.1 |
| Ubuntu:14.04:LTS | wget | 0 | No fix |
| Ubuntu:20.04:LTS | wget | 0 | 1.20.3-1ubuntu2.1 |
| Ubuntu:22.04:LTS | wget | 0 | 1.21.2-2ubuntu1.1 |
| Ubuntu:23.10 | wget | 0 | 1.21.3-1ubuntu1.1 |
| Ubuntu:24.04:LTS | wget | 0 | 1.21.4-1ubuntu4.1 |
| Ubuntu:24.10 | wget | 0 | 1.24.5-1ubuntu2 |
| Ubuntu:25.04 | wget | 0 | 1.24.5-1ubuntu2 |
| Ubuntu:Pro:14.04:LTS | wget | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | wget | 0 | 1.17.1-1ubuntu1.5+esm1 |
| Ubuntu:Pro:18.04:LTS | wget | 0 | 1.19.4-1ubuntu2.2+esm1 |
| openSUSE:Leap 15.5 | wget | 0 | 1.20.3-150000.3.20.1 |
| openSUSE:Leap 15.6 | wget | 0 | 1.20.3-150600.19.3.1 |
| openSUSE:Tumbleweed | wget | 0 | 1.24.5-2.1 |
Related vulnerabilities
- CVE-2024-10524 Applications that use Wget to access a remote resource using shorthand URLs and pass… Also affects wget
- CVE-2017-13089 The http.c:skip_short_body() function is called in some circumstances, such as when… Also affects wget
- CVE-2017-13090 The retr.c:fd_read_body() function is called when processing OK responses. Also affects wget
- CVE-2016-7098 Race condition in wget 1.17 and earlier, when used in recursive or mirroring mode to… Also affects wget
- CVE-2016-4971 GNU wget before 1.18 allows remote servers to write to arbitrary files by redirecting a… Also affects wget
- CVE-2014-4877 Absolute path traversal vulnerability in GNU Wget before 1.16, when recursion is enabled… Also affects wget
- CVE-2004-1488 wget 1.8.x and 1.9.x does not filter or quote control characters when displaying HTTP… Also affects wget
- CVE-2026-114656 Traefik before 2.11.58 and 3.7.13 contains an authentication bypass vulnerability that… CWE-436