---
id: CVE-2026-107928
title: info leak uploading over WebSockets with GnuTLS
summary: |-
  When curl is built with GnuTLS, a malicious WebSocket server can make curl
  send memory past its send buffer. This is due to an out of bounds read
  following when `gnutls_record_send()` returns a number of bytes sent **greater
  than the num…
severity: none
cwe:
  - CWE-126
vendor: curl
product: curl
affected:
  - curl >= 8.22.0 <= 8.22.0
  - curl >= 8.21.0 <= 8.21.0
  - curl >= 8.20.0 <= 8.20.0
  - curl >= 8.19.0 <= 8.19.0
  - curl >= 8.18.0 <= 8.18.0
  - curl >= 8.17.0 <= 8.17.0
  - curl >= 8.16.0 <= 8.16.0
  - curl >= 8.15.0 <= 8.15.0
  - curl >= 8.14.1 <= 8.14.1
  - curl >= 8.14.0 <= 8.14.0
  - curl >= 8.13.0 <= 8.13.0
  - curl >= 8.12.1 <= 8.12.1
  - curl >= 8.12.0 <= 8.12.0
  - curl >= 8.11.1 <= 8.11.1
  - curl >= 8.11.0 <= 8.11.0
  - curl >= 8.10.1 <= 8.10.1
  - curl >= 8.10.0 <= 8.10.0
  - curl >= 8.9.1 <= 8.9.1
  - curl >= 8.9.0 <= 8.9.0
  - curl >= 8.8.0 <= 8.8.0
  - curl >= 8.7.1 <= 8.7.1
  - curl >= 8.7.0 <= 8.7.0
  - curl >= 8.6.0 <= 8.6.0
  - curl >= 8.5.0 <= 8.5.0
  - curl >= 8.4.0 <= 8.4.0
  - curl >= 8.3.0 <= 8.3.0
  - curl >= 8.2.1 <= 8.2.1
  - curl >= 8.2.0 <= 8.2.0
  - curl >= 8.1.2 <= 8.1.2
  - curl >= 8.1.1 <= 8.1.1
  - curl >= 8.1.0 <= 8.1.0
  - curl >= 8.0.1 <= 8.0.1
  - curl >= 8.0.0 <= 8.0.0
  - curl >= 7.88.1 <= 7.88.1
  - curl >= 7.88.0 <= 7.88.0
  - curl >= 7.87.0 <= 7.87.0
  - curl >= 7.86.0 <= 7.86.0
published: '2026-10-20'
updated: '2026-10-20'
sourceUpdated: '2026-10-20T20:28:17.712Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-107928'
references:
  - url: 'https://curl.se/docs/CVE-2026-107928.json'
    label: json
  - url: 'https://curl.se/docs/CVE-2026-107928.html'
    label: www
  - url: 'https://hackerone.com/reports/4099194'
    label: issue
tags:
  - cve.org
ingestedAt: '2026-10-20T21:19:21.269Z'
---

## Overview

When curl is built with GnuTLS, a malicious WebSocket server can make curl
send memory past its send buffer. This is due to an out of bounds read
following when `gnutls_record_send()` returns a number of bytes sent **greater
than the number of bytes it was given to send**. GnuTLS does that after a
blocked send.

## Affected

- `curl >= 8.22.0 <= 8.22.0`
- `curl >= 8.21.0 <= 8.21.0`
- `curl >= 8.20.0 <= 8.20.0`
- `curl >= 8.19.0 <= 8.19.0`
- `curl >= 8.18.0 <= 8.18.0`
- `curl >= 8.17.0 <= 8.17.0`
- `curl >= 8.16.0 <= 8.16.0`
- `curl >= 8.15.0 <= 8.15.0`
- `curl >= 8.14.1 <= 8.14.1`
- `curl >= 8.14.0 <= 8.14.0`
- `curl >= 8.13.0 <= 8.13.0`
- `curl >= 8.12.1 <= 8.12.1`
- `curl >= 8.12.0 <= 8.12.0`
- `curl >= 8.11.1 <= 8.11.1`
- `curl >= 8.11.0 <= 8.11.0`
- `curl >= 8.10.1 <= 8.10.1`
- `curl >= 8.10.0 <= 8.10.0`
- `curl >= 8.9.1 <= 8.9.1`
- `curl >= 8.9.0 <= 8.9.0`
- `curl >= 8.8.0 <= 8.8.0`
- `curl >= 8.7.1 <= 8.7.1`
- `curl >= 8.7.0 <= 8.7.0`
- `curl >= 8.6.0 <= 8.6.0`
- `curl >= 8.5.0 <= 8.5.0`
- `curl >= 8.4.0 <= 8.4.0`
- `curl >= 8.3.0 <= 8.3.0`
- `curl >= 8.2.1 <= 8.2.1`
- `curl >= 8.2.0 <= 8.2.0`
- `curl >= 8.1.2 <= 8.1.2`
- `curl >= 8.1.1 <= 8.1.1`
- `curl >= 8.1.0 <= 8.1.0`
- `curl >= 8.0.1 <= 8.0.1`
- `curl >= 8.0.0 <= 8.0.0`
- `curl >= 7.88.1 <= 7.88.1`
- `curl >= 7.88.0 <= 7.88.0`
- `curl >= 7.87.0 <= 7.87.0`
- `curl >= 7.86.0 <= 7.86.0`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
