# CVE-2026-84782: DTLS Retransmits Handshake Messages From a Stale Buffer Offset

Status: published. Published: 2026-09-29. Updated: 2026-11-10.

Issue summary: The DTLS retransmission logic does not correctly handle
a handshake message write that is suspended part-way through.
The retransmitted message can be read past the message buffer and
the retransmission overwrites the internal state the suspended write
needs to resume correctly.

Impact summary: The retransmitted message can disclose a heap memory
to the peer as plaintext handshake data or cause a crash and a Denial
of Service when the read reaches an unmapped memory region.

CWE: CWE-125: Out-of-bounds Read

Description: DTLS handshake messages can be written out in multiple
fragments, and a write can suspend mid-message (returning WANT_WRITE)
if the underlying transport temporarily cannot accept more data. While
such a write is suspended, the DTLS retransmission timer may
independently fire and ask the retransmission logic to resend an
earlier, already-acknowledged-as-sent message from its retransmit
queue.

The retransmission logic reused the same internal buffer and position
tracking as the message that was still being written, without
resetting the position back to the start of the message being
retransmitted. As a result the retransmission was read starting from
wherever the suspended write had left off, producing a mislabelled
message whose body was leftover bytes from the other, larger message
still in flight - content that was never meant to be sent at that
point, and which could run past the end of the allocated buffer.

Separately, even when the retransmission is positioned correctly,
allowing it to run to completion while another write is suspended
overwrites the same shared bookkeeping that the suspended write
depends on to resume. When the application later resumes the
suspended write (via a subsequent SSL_read(), SSL_write(),
SSL_accept(), or SSL_connect() call), it finds that bookkeeping in a
state inconsistent with the message and aborts the process in
a debugging build.

The fix resets the retransmission's read position to the start of the
message before resending, and skips retransmission entirely whenever a
handshake write is still suspended, deferring to the next call that
resumes it instead.

FIPS impact: no
The affected code is outside the FIPS module boundary.

## Remediation

- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: CNA: openssl) — https://github.com/openssl/openssl/commit/d951e02ede8f6a6ff8150546db44b34f0518192c
- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: CNA: openssl) — https://github.com/openssl/openssl/commit/a383dafdd754eb5b22bf45e37e1bff9d07277a58
- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: CNA: openssl) — https://github.com/openssl/openssl/commit/906cf0ef1c85ca40ce69163e9086d6d3fe292943
- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: CNA: openssl) — https://github.com/openssl/openssl/commit/9f6b34422af7eb5dac61322e33dac1ae989fa628

## Affected products and versions

- OpenSSL / OpenSSL: ≥ 4.0.0; < 4.0.3 (affected, semver); ≥ 3.6.0; < 3.6.5 (affected, semver); ≥ 3.5.0; < 3.5.9 (affected, semver); ≥ 3.4.0; < 3.4.8 (affected, semver); ≥ 3.0.0; < 3.0.23 (affected, semver); ≥ 1.1.1; < 1.1.1zj (affected, custom); ≥ 1.0.2; < 1.0.2zs (affected, custom). Source: CNA: openssl
- Siemens / SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0): ≥ V3.1.7; < * (affected, custom). Source: ADP: siemens-SADP
- Siemens / SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0): ≥ V3.1.7; < * (affected, custom). Source: ADP: siemens-SADP
- Siemens / SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0): ≥ V3.1.7; < * (affected, custom). Source: ADP: siemens-SADP
- Siemens / SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0): ≥ V3.1.7; < * (affected, custom). Source: ADP: siemens-SADP
- Siemens / SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0): ≥ V3.1.7; < * (affected, custom). Source: ADP: siemens-SADP

## Severity and prioritization

- CVSS 3.1: 8.2 (high); CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H; source: ADP: CISA-ADP

- CISA KEV: No listing in collected sources

- EPSS: 0.83% as of 2026-11-09; percentile 57.84%

- SSVC: exploitation none; automatable yes; technical impact partial; source ADP: CISA-ADP

- Weaknesses: CWE-125

## Exploit evidence

No exploit evidence in collected sources. This is not proof of no exploitation.

## References

- https://openssl-library.org/news/secadv/20260929.txt (CNA: openssl; vendor-advisory)

- https://github.com/openssl/openssl/commit/d951e02ede8f6a6ff8150546db44b34f0518192c (CNA: openssl; patch)

- https://github.com/openssl/openssl/commit/a383dafdd754eb5b22bf45e37e1bff9d07277a58 (CNA: openssl; patch)

- https://github.com/openssl/openssl/commit/906cf0ef1c85ca40ce69163e9086d6d3fe292943 (CNA: openssl; patch)

- https://github.com/openssl/openssl/commit/9f6b34422af7eb5dac61322e33dac1ae989fa628 (CNA: openssl; patch)

- https://cert-portal.siemens.com/productcert/html/ssa-457936.html (ADP: siemens-SADP)

## Provenance

- CNA: openssl: https://www.cve.org/CVERecord?id=CVE-2026-84782; retrieved 2026-11-10; source updated 2026-11-10

- FIRST EPSS: https://api.first.org/data/v1/epss?cve=CVE-2026-84782; retrieved 2026-11-10; source updated Not reported

Revision: aea864c838689e78f87bb2b24bf1ec8552b60b1bb40a74ba08becde22623918a

Canonical: https://y2.dev/cve/CVE-2026-84782

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.