Re: [SECURITY ADVISORY] curl: CVE-2025-10148: predictable WebSocket mask
Emilio Pozuelo Monfort <[email protected]> Wed, 10 Sep 2025 14:18:50 +0200
| Newsgroups | gmane.comp.security.oss.general,gmane.comp.web.curl.general,gmane.comp.web.curl.library |
|---|---|
| Message-ID | <[email protected]> |
Hi Daniel, On 10/09/2025 07:54, Daniel Stenberg wrote: > predictable WebSocket mask > ========================== > > Project curl Security Advisory, September 10 2025 - > [Permalink](https://curl.se/docs/CVE-2025-10148.html) > > VULNERABILITY > ------------- > > curl's websocket code did not update the 32 bit mask pattern for each new > outgoing frame as the specification says. Instead it used a fixed mask that > persisted and was used throughout the entire connection. > > A predictable mask pattern allows for a malicious server to induce traffic > between the two communicating parties that could be interpreted by an involved > proxy (configured or transparent) as genuine, real, HTTP traffic with content > and thereby poison its cache. That cached poisoned content could then be > served to all users of that proxy. > > INFO > ---- > > This exact scenario is warned about in the security section of the WebSocket > RFC 6455 and is the very reason the mask should be updated for every outgoing > frame. > > For this bug to become a real-life problem, the libcurl-using application must > be communicating through such a (defective) proxy that confuses a WebSocket > communication for HTTP traffic. Further, to trigger the problem it requires > the traffic to be done using clear text HTTP / WebSocket (`ws://`) and not > over TLS (`wss://`). > > The Common Vulnerabilities and Exposures (CVE) project has assigned the name > CVE-2025-10148 to this issue. > > CWE-340: Generation of Predictable Numbers or Identifiers > > Severity: Low > > AFFECTED VERSIONS > ----------------- > > - Affected versions: curl 7.86.0 to and including 8.15.0 > - Not affected versions: curl < 7.86.0 and >= 8.16.0 > - Introduced-in: https://github.com/curl/curl/commit/d78e129d50b2d1 > > WebSocket was considered experimental before 7.86.0 and therefore we do not > consider earlier versions vulnerable. From what I can see, websocket support was introduced in 7.86 in [1], and later marked as supported/not-experimental in 8.11 [2]. If so, I think the above note (also in [3]) should say that it was experimental before 8.11. Cheers, Emilio [1] https://github.com/curl/curl/commit/664249d095275e [2] https://github.com/curl/curl/commit/d78e129d50b2d1 [3] https://curl.se/docs/CVE-2025-10148.html