![]() |
|
Message-ID: <cc283d3e-5a45-400b-97d6-78dc176fe4bb@oracle.com> Date: Fri, 18 Apr 2025 11:55:01 -0700 From: Alan Coopersmith <alan.coopersmith@...cle.com> To: oss-security@...ts.openwall.com Subject: A bowlful of bugs in GNOME's libsoup libsoup is an HTTP client/server library for GNOME, hosted at https://gitlab.gnome.org/GNOME/libsoup A number of CVE's have recently been recorded against it (due in part to bug bounty submissions via YesWeHack) - fixes are available in the libsoup 3.6.x releases for some, but not all of them. Some fixes that also affect the older 2.x branch have been backported upstream in https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/449 though upstream encourages migration to version 3.x instead if possible. CVE-2025-32049 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/390 Denial of service on libsoup via soup-websocket-connection through "process_contents" leads to unbounded memory allocation when receiving fragmented websocket messages YesWeHack Report ID: #YWH-PGM9867-12 Date Reported on GNOME GitLab: August 21, 2024 (#390) Date Reported on YesWeHack: November 25, 2024 Date Fixed: Not Fixed Fix Version: Not Fixed Fix: Not Fixed CVE: CVE-2025-32049 CWE: CWE-617: Reachable Assertion, CWE-770: Allocation of Resources Without Limits or Throttling Discovery Credit: Ignacio Casal Quinteiro Additional Discovery Credit: Jan Różański Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency The websocket protocol allows sending a large message in small chunks called frames. The problem in libsoup's implementation of this feature, is that there is no restriction on the total length of a fragmented message sent through multiple frames. Every time a message fragment is received, the message_data buffer is expanded. The problem arises when client never terminates his message, and keeps sending message fragments. The outcome is that the receiving process terminates with an error once the buffer's size gets too big: (process:26989): GLib-ERROR **: 17:39:20.346: adding 98303 to array would overflow Trace/breakpoint trap (core dumped) The issue originates in process_contents function in soup-websocket-connection.c when dealing with priv->message_data. Proposed fix (not yet accepted/merged): https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/408 CVE-2025-32050 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/424 Integer overflow in append_param_quoted YesWeHack Report ID: #YWH-PGM9867-9 Date Reported: October 28, 2024 Date Fixed: November 22, 2024 Fix Version: 3.6.1 Fix: 9bb0a55d CVE: CVE-2025-32050 CWE: CWE-127: Buffer Under-read, CWE-190: Integer Overflow Discovery Credit: chamal de silva Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency The likely impact of this bug is denial of service. Since there is buffer under-read, there is also theoretical confidentiality impact. [Triager] thinks buffer underwrite might also be possible, but is not certain. The libsoup function append_param_quoted is vulnerable to an Integer Overflow. CVE-2025-32051 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/401 Segmentation fault when parsing malformed data URI YesWeHack Report ID: #YWH-PGM9867-11 Date Reported to YesWeHack: November 21, 2024 Date Fixed: November 22, 2024 Fix Version: 3.6.1 Fix: 0713ba4a and 79cfd65c CVE: CVE-2025-32051 CWE: NULL Pointer Dereference (CWE-476) Discovery Credit: Anonymous Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency (This anonymous discovery credit is in addition to Ar jun.) libsoup's soup_uri_decode_data_uri() function, prior to libsoup 3.6.1, may crash when processing a malformed data URI, resulting in denial of service. Report summary: Using a custom fuzzing harness, I discovered that these two payloads both trigger a segmentation fault in soup_uri_decode_data_uri(uri, NULL): data:.///, data:/.// CVE-2025-32052 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/425 Heap buffer over-read in soup-content-sniffer.c:sniff_unknown() Date Reported: November 14, 2024 Date Fixed: November 22, 2024 Fix Version: 3.6.1 Fix: f182429e CVE: CVE-2025-32052 CWE: CWE-126: Buffer Over-read Discovery Credit: Ar jun libsoup prior to version 3.6.1 is vulnerable to a heap buffer over-read in the content sniffer's sniff_unknown() function. libsoup clients may read out of bounds in response to a crafted HTTP response sent by an HTTP server. CVE-2025-32053 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/426 Heap buffer over-read in soup-content-sniffer.c:sniff_feed_or_html() and soup-content-sniffer.c:skip_insignificant_space() Date Reported: November 14, 2024 Date Fixed: November 22, 2024 Fix Version: 3.6.1 Fix: eaed42ca CVE: CVE-2025-32053 CWE: CWE-126: Buffer Over-read Discovery Credit: Ar jun libsoup prior to version 3.6.1 is vulnerable to heap buffer over-reads in the content sniffer's sniff_feed_or_html() and skip_insignificant_space() functions. libsoup clients may read out of bounds in response to a crafted HTTP response sent by an HTTP server. WARNING: the fix for this issue possibly introduces another security vulnerability, #422 (closed). CVE-2025-32906 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/404 Out of bounds reads in soup_headers_parse_request() Date Reported: November 25, 2024 Date Fixed: February 24, 2025 Fix Version: 3.6.5 Fix: https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/440 CVE: CVE-2025-32906 Discovery Credit: Tan Wei Chong CVE-2025-32907 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/428 Denial of service in server when client requests a large amount of overlapping ranges with Range header YesWeHack Report ID: #YWH-PGM9867-13 Date Reported: November 28, 2024 Date Fixed: Not Fixed Fix Version: Not Fixed Fix: Not Fixed CVE: CVE-2025-32907 CWE: CWE-405: Asymmetric Resource Consumption (Amplification) Discovery Credit: Jan Różański Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency libsoup's implementation of HTTP range requests is vulnerable to a resource consumption attack. A malicious client may request the same range many times in a single HTTP request, causing the server to use large amounts of memory. CVE-2025-32908 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/429 Denial of service on libsoup through server/http2/soup-server-message-io-http2.c via "on_frame_recv_callback" due to assertion failure when client sends certain values in pseudo-headers in a HEADERS frame YesWeHack Report ID: #YWH-PGM9867-14 Date Reported: December 1, 2024 Date Fixed: Not Fixed Fix Version: Not Fixed Fix: Not Fixed CVE: CVE-2025-32908 CWE: CWE-617: Reachable Assertion Discovery Credit: Jan Różański Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency libsoup's HTTP/2 server doesn't fully validate the values of the pseudo-headers :scheme, :authority, and :path. A client may crash the server by sending a malicious HTTP request. CVE-2025-32909 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/431 NULL Pointer Dereference on libsoup through function "sniff_mp4" in soup-content-sniffer.c YesWeHack Report ID: #YWH-PGM9867-15 Date Reported: December 2, 2024 Date Fixed: January 8, 2025 Fix Version: 3.6.2 Fix: ba4c3a6f CVE: CVE-2025-32909 CWE-476: NULL Pointer Dereference Discovery Credit: Alon Zahavi Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency libsoup's SoupContentSniffer, prior to version 3.6.2, is vulnerable to a null pointer dereference in its sniff_mp4 function. A malicious HTTP server may cause the libsoup client to crash. CVE-2025-32910 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/432 Null pointer deference on libsoup via /auth/soup-auth-digest.c through "soup_auth_digest_authenticate" on client when server omits the "realm" parameter in an Unauthorized response with Digest authentication esWeHack Report ID: #YWH-PGM9867-17 Date Reported: December 8, 2024 Date Fixed: January 10, 2025 Fix Version: 3.6.3 Fix: !417 (merged) CVE: CVE-2025-32910 CWE-476: NULL Pointer Dereference Discovery Credit: Jan Różański Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency libsoup prior to version 3.6.3 is vulnerable to a null pointer dereference in soup_auth_digest_authenticate(). A malicious HTTP server may cause the libsoup client to crash. CVE-2025-32911 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/433 Double free on soup_message_headers_get_content_disposition() through "soup-message-headers.c" via "params" GHashTable value YesWeHack Report ID: #YWH-PGM9867-19 Date Reported: December 8, 2024 Date Fixed: January 8, 2025 Fix Version: 3.6.3 Fix: !422 (merged) CVE: CVE-2025-32911 CWE-590: Free of Memory Not on the Heap Discovery Credit: Anonymous Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency libsoup prior to version 3.6.3 is vulnerable to a free of memory not on the heap in soup_message_headers_get_content_disposition(). A malicious HTTP client may induce memory corruption in the libsoup server. Michael's note: theoretically this could result in remote code execution, so this is particularly not good. CVE-2025-32912 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/434 NULL pointer dereference in client when server omits the "nonce" parameter in an Unauthorized response with Digest authentication YesWeHack Report ID: #YWH-PGM9867-20 Date Reported: December 9, 2024 Date Fixed: February 8, 2025 Fix Version: 3.6.5 Fix: !417 (merged) and !434 (merged) and 910ebdcd CVE: CVE-2025-32912 CWE-476: NULL Pointer Dereference Discovery Credit: Jan Różański Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency libsoup prior to 3.6.5 is vulnerable to a null pointer dereference in SoupAuthDigest. A malicious HTTP server may cause the libsoup client to crash. CVE-2025-32913 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/435 NULL pointer dereference in soup_message_headers_get_content_disposition when "filename" parameter is present, but has no value in Content-Disposition header YesWeHack Report ID: #YWH-PGM9867-21 Date Reported: December 9, 2024 Date Fixed: January 8, 2025 Fix Version: 3.6.2 Fix: !422 (merged) CVE: CVE-2025-32913 CWE-476: NULL Pointer Dereference Discovery Credit: Jan Różański Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency libsoup prior to 3.6.2 is vulnerable to a null pointer dereference in soup_message_headers_get_content_disposition() . A malicious HTTP peer may crash a libsoup client or server that uses this function. CVE-2025-32914 - https://gitlab.gnome.org/GNOME/libsoup/-/issues/436 OOB Read on libsoup through function "soup_multipart_new_from_message" in soup-multipart.c leads to crash or exit of process YesWeHack Report ID: #YWH-PGM9867-23 Date Reported: April 9, 2025 Date Fixed: Not Fixed Fix Version: Not Fixed Fix: Not Fixed CVE: CVE-2025-32914 CWE: Out-of-bounds Read (CWE-125) Discovery Credit: Alon Zahavi Additional Thanks: Sovereign Tech Resilience program of the Sovereign Tech Agency libsoup is vulnerable to an out of bounds read in soup_multipart_new_from_message(). A malicious HTTP client may induce the libsoup server to read out of bounds. -- -Alan Coopersmith- alan.coopersmith@...cle.com Oracle Solaris Engineering - https://blogs.oracle.com/solaris
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.