CVE-2026-77680

Libsoup3: libsoup: quadratic cpu denial of service in http range coalescing after cve-2025-32907 fix

Published Aug 25, 2026 CVSS 3.1 · 5.3 Medium EPSS < 1% KEV · Not listed
Description
An algorithmic complexity flaw exists in libsoup's HTTP Range header processing that persists after the CVE-2025-32907 fix.

CVE-2025-32907 addressed memory amplification when a client repeated the same range many times in a single Range header. Commit 9bb92f7a corrected merge correctness in soup_message_headers_get_ranges_internal() in libsoup/soup-message-headers.c, but the coalescing loop still removes merged ranges using g_array_remove_index() for each coalesced element. Because GArray is contiguous, each mid-array removal performs an O(N) memmove. When many identical satisfiable ranges are supplied (for example bytes=0-0 repeated thousands of times), the loop performs O(N²) work coalescing them into a single range.

The vulnerable path is reachable server-side from handle_partial_get() in libsoup/server/http1/soup-server-message-io-http1.c when a SoupServer handler returns HTTP 200 with a non-empty body. No authentication is required. The number of ranges is bounded only by the maximum request header size (~100 KiB), allowing roughly 25,000 ranges per request. Reporter measurements on libsoup HEAD containing the CVE-2025-32907 fix show ~90 ms single-core CPU per such request at the wire maximum, blocking the server's event loop for that duration.

This is a CPU exhaustion / availability issue only. No memory corruption or information disclosure occurs.

Affected: libsoup versions containing the CVE-2025-32907 fix but not merge request !550.
Fixed upstream: MR !550 merged 2026-08-20, replacing per-element removal with O(N) in-place compaction and rejecting Range headers requesting more than 200 ranges.
Upstream report: https://gitlab.gnome.org/GNOME/libsoup/-/issues/538
Related: CVE-2025-32907

Analysis

AI-generated

Technical impact

Libsoup’s handling of HTTP Range headers contains an algorithmic complexity flaw that remains after the CVE‑2025‑32907 fix. When many identical satisfiable ranges are supplied, the coalescing loop performs quadratic work, causing excessive CPU usage and blocking the server’s event loop. The flaw results in CPU exhaustion, denying service to legitimate clients, but does not lead to memory corruption or data leakage.

Affected Systems

Red Hat Enterprise Linux 10 systems running libsoup versions that incorporated the CVE‑2025‑32907 fix but not merge request !550. The vulnerability applies to any libsoup instance that serves HTTP requests using SoupServer, including web servers and applications built on this library.

Risk and Exploitability

The CVSS base score is 5.3, indicating a moderate severity issue. No EPSS value is published, and the vulnerability is not listed in the CISA KEV catalog. The flaw is reachable server‑side from any HTTP client, requires no authentication, and allows an attacker to send a Range header containing up to roughly 25,000 ranges. An attacker can trigger significant CPU load on a single core, leading to service degradation or unavailability. The risk is primarily a denial‑of‑service through resource exhaustion rather than a compromise of confidentiality or integrity.

Remediation

Vendor Workaround

Upgrade to a libsoup version containing merge request !550 (O(N) range coalescing and 200-range limit). Until patched, restrict network access to services using SoupServer, or terminate connections that send Range headers with excessive range counts.


OpenCVE Recommended Actions

  • Upgrade to a libsoup version that includes merge request !550, which replaces the per‑element removal with O(N) in‑place compaction and limits Range headers to 200 ranges.
  • If an immediate upgrade is not possible, restrict network access to services that employ SoupServer or terminate connections that send Range headers with an excessive number of ranges.
  • Monitor server CPU usage and event‑loop latency to detect anomalous load and consider implementing rate limiting for Range header requests to mitigate the impact.

Generated by OpenCVE AI on August 26, 2026 at 01:44 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Ubuntu USN Ubuntu USN USN-8890-1 libsoup vulnerabilities
Ubuntu USN Ubuntu USN USN-8890-2 libsoup vulnerabilities
History
Type Values Removed Values Added
CPEs cpe:/o:redhat:enterprise_linux:10 cpe:/a:redhat:enterprise_linux:10
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description An algorithmic complexity flaw exists in libsoup's HTTP Range header processing that persists after the CVE-2025-32907 fix. CVE-2025-32907 addressed memory amplification when a client repeated the same range many times in a single Range header. Commit 9bb92f7a corrected merge correctness in soup_message_headers_get_ranges_internal() in libsoup/soup-message-headers.c, but the coalescing loop still removes merged ranges using g_array_remove_index() for each coalesced element. Because GArray is contiguous, each mid-array removal performs an O(N) memmove. When many identical satisfiable ranges are supplied (for example bytes=0-0 repeated thousands of times), the loop performs O(N²) work coalescing them into a single range. The vulnerable path is reachable server-side from handle_partial_get() in libsoup/server/http1/soup-server-message-io-http1.c when a SoupServer handler returns HTTP 200 with a non-empty body. No authentication is required. The number of ranges is bounded only by the maximum request header size (~100 KiB), allowing roughly 25,000 ranges per request. Reporter measurements on libsoup HEAD containing the CVE-2025-32907 fix show ~90 ms single-core CPU per such request at the wire maximum, blocking the server's event loop for that duration. This is a CPU exhaustion / availability issue only. No memory corruption or information disclosure occurs. Affected: libsoup versions containing the CVE-2025-32907 fix but not merge request !550. Fixed upstream: MR !550 merged 2026-08-20, replacing per-element removal with O(N) in-place compaction and rejecting Range headers requesting more than 200 ranges. Upstream report: https://gitlab.gnome.org/GNOME/libsoup/-/issues/538 Related: CVE-2025-32907
Title Libsoup3: libsoup: quadratic cpu denial of service in http range coalescing after cve-2025-32907 fix
First Time appeared Redhat
Redhat enterprise Linux
Weaknesses CWE-407
CPEs cpe:/o:redhat:enterprise_linux:10
Vendors & Products Redhat
Redhat enterprise Linux
References
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L'}

Weaknesses
  • CWE-407

    Inefficient Algorithmic Complexity

Sources

Status
PUBLISHED
Assigner
redhat
Published
Updated
Nov 6, 2026, 12:45 AM
Reserved
Aug 21, 2026, 5:11 AM
Status
Awaiting Analysis
Published
Aug 25, 2026, 9:17 PM
Modified
Nov 6, 2026, 1:17 AM
Severity
Moderate
Public date
Aug 21, 2026, 12:00 AM