Skip to content

Heap double-free in HPACK dynamic table

High
TingDaoK published GHSA-rmjr-3qpm-vh98 Jun 12, 2026

Package

aws-c-http

Affected versions

>= 0.4.22 AND <= 0.10.15

Patched versions

0.11.0

Description

Summary

AWS Common Runtime aws-c-http is a HTTP client library used by AWS SDKs for handling http requests to AWS services.

Improper handling of HPACK dynamic table size updates within the library might allow a remote threat actor operating a server to cause memory corruption on a connecting client application, potentially leading to arbitrary code execution, via a crafted sequence of HTTP/2 HEADERS frames.

Impact

When an HTTP/2 client built with aws-c-http connects to an distrust server, the server can send HEADERS frames containing HPACK dynamic table size updates that leverage a buffer growth issue in the HPACK decoder. Specifically, a dynamic table size update that shrinks the table to a very small capacity (e.g., 1 entry) causes the internal buffer to resize accordingly. A subsequent size update back to a larger value triggers the buffer growth path, but the 1.5x growth factor truncates to the same size when the current capacity is 1 (integer truncation: 1 * 1.5 = 1). The decoder proceeds as if growth succeeded, with a ring buffer to store the table, it causes multiple logical entries to point the same buffer slot. On cleanup, this results in a heap double-free, potentially leading to denial of service or arbitrary code execution.

This issue can only be leveraged when the client connects to a server controlled by the an actor over HTTP/2.

Impacted versions:

aws-c-http [>= 0.4.22 AND <= 0.10.15]

exposed in following sdk versions:
aws-sdk-cpp [>= 1.11.41, <= 1.11.814]
aws-sdk-java-v2 [>= 2.44.27, <= 2.44.14]

Patches

This issue has been addressed in aws-c-http version 0.11.0. We recommend upgrading to the latest version and ensuring any forked or derivative code is patched to incorporate the new fixes.

Workarounds

Force HTTP/1.1 connections where available. HTTP/1.1 does not use HPACK header compression and is not affected by this issue. Consult your SDK's documentation for how to disable HTTP/2 negotiation (e.g., by not enabling h2 in ALPN configuration).

References

If you have any questions or comments about this advisory, we ask that you contact AWS Security via our vulnerability reporting page or directly via email to aws-security@amazon.com. Please do not create a public GitHub issue.

Severity

High

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

CVE ID

CVE-2026-12043

Weaknesses

Double Free

The product calls free() twice on the same memory address. Learn more on MITRE.