{"id":"CURL-CVE-2025-10148","summary":"predictable WebSocket mask","details":"curl's WebSocket code did not update the 32-bit mask pattern for each new\noutgoing frame as the specification says. Instead it used a fixed mask that\npersisted and was used throughout the entire connection.\n\nA predictable mask pattern allows for a malicious server to induce traffic\nbetween the two communicating parties that could be interpreted by an involved\nproxy (configured or transparent) as genuine, real, HTTP traffic with content\nand thereby poison its cache. That cached poisoned content could then be\nserved to all users of that proxy.","aliases":["CVE-2025-10148"],"modified":"2026-04-25T20:30:12.349239Z","published":"2025-09-10T08:00:00Z","database_specific":{"severity":"Low","URL":"https://curl.se/docs/CVE-2025-10148.json","award":{"amount":"505","currency":"USD"},"affects":"both","issue":"https://hackerone.com/reports/3330839","CWE":{"id":"CWE-340","desc":"Generation of Predictable Numbers or Identifiers"},"www":"https://curl.se/docs/CVE-2025-10148.html","package":"curl","last_affected":"8.15.0"},"affected":[{"ranges":[{"type":"SEMVER","events":[{"introduced":"8.11.0"},{"fixed":"8.16.0"}]},{"type":"GIT","repo":"https://github.com/curl/curl.git","events":[{"introduced":"d78e129d50b2d190f1c1bde2ad1f62f02f152db0"},{"fixed":"84db7a9eae8468c0445b15aa806fa7fa806fa0f2"}]}],"versions":["8.15.0","8.14.1","8.14.0","8.13.0","8.12.1","8.12.0","8.11.1","8.11.0"],"database_specific":{"vanir_signatures":[{"id":"CURL-CVE-2025-10148-0590ba99","signature_version":"v1","deprecated":false,"target":{"file":"lib/ws.c"},"digest":{"threshold":0.9,"line_hashes":["115754640541353332179368842763031201604","25662696793809792373578077311744455491","150869249084620197891002251454213456219","290713789066388492121298202153574049867","76649624789982854363314077649014518711","339353784564679589688510580211241224860","32249163427170650744730659881528487935","230787691848753030490721405756064600432","54168786194993705084096629222896816670","91732389197285711550553457717979503220","276519768724770070898311812105069169752","80121419484267321853878387962221403799","238268090342311044485122650596539568509","126181613639975473066705350442729376067","138946581227183152083883578096816448539","188813354676990373552098884572904545181"]},"signature_type":"Line","source":"https://github.com/curl/curl.git/commit/84db7a9eae8468c0445b15aa806fa7fa806fa0f2"},{"id":"CURL-CVE-2025-10148-7a408de8","signature_version":"v1","deprecated":false,"target":{"function":"ws_enc_add_frame","file":"lib/ws.c"},"digest":{"function_hash":"176185201747501770228471716530421574573","length":2367},"signature_type":"Function","source":"https://github.com/curl/curl.git/commit/84db7a9eae8468c0445b15aa806fa7fa806fa0f2"},{"id":"CURL-CVE-2025-10148-92437412","signature_version":"v1","deprecated":false,"target":{"function":"Curl_ws_accept","file":"lib/ws.c"},"digest":{"function_hash":"17290471600654507478265332085082636517","length":2819},"signature_type":"Function","source":"https://github.com/curl/curl.git/commit/84db7a9eae8468c0445b15aa806fa7fa806fa0f2"}],"vanir_signatures_modified":"2026-04-25T20:30:12Z","source":"https://curl.se/docs/CURL-CVE-2025-10148.json"}}],"schema_version":"1.7.5","credits":[{"name":"Calvin Ruocco (Vector Informatik GmbH)","type":"FINDER"},{"name":"Daniel Stenberg","type":"REMEDIATION_DEVELOPER"}]}