Every CVE Search/ Get API key

CVE-2026-16028

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table

7.5 HighFix available

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table.

When a stream reaches the CLOSED state, stream_state returns the concurrency slot and clears most of the stream's keys, but the entry itself stays in the connection stream table and nothing in the distribution removes it. Stream identifiers increase monotonically, so a peer can open and close streams on one connection indefinitely, each close leaving a residual entry that is retained for the life of the connection.

SETTINGS_MAX_CONCURRENT_STREAMS does not bound this. That setting caps how many streams are live at once and is enforced, while the growth is made of streams the cap has already released, so it accumulates with concurrency never exceeding one. The client keeps the same table and grows the same way against a hostile server.

Measured against a server built on this module, roughly 920 bytes are retained per closed stream for about 19 bytes on the wire, so 100,000 sequential streams on one connection grow server resident memory by about 88 MiB. The streams are ordinary requests that the application accepts and completes.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.36%Up 0.2 points since Sep 8, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.5

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table.

When a stream reaches the CLOSED state, stream_state returns the concurrency slot and clears most of the stream's keys, but the entry itself stays in the connection stream table and nothing in the distribution removes it. Stream identifiers increase monotonically, so a peer can open and close streams on one connection indefinitely, each close leaving a residual entry that is retained for the life of the connection.

SETTINGS_MAX_CONCURRENT_STREAMS does not bound this. That setting caps how many streams are live at once and is enforced, while the growth is made of streams the cap has already released, so it accumulates with concurrency never exceeding one. The client keeps the same table and grows the same way against a hostile server.

Measured against a server built on this module, roughly 920 bytes are retained per closed stream for about 19 bytes on the wire, so 100,000 sequential streams on one connection grow server resident memory by about 88 MiB. The streams are ordinary requests that the application accepts and completes.

Record
CVE-2026-16028
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-401
Updated
2026-11-02
EUVDEUVD-2026-72527 7.5

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table.

When a stream reaches the CLOSED state, stream_state returns the concurrency slot and clears most of the stream's keys, but the entry itself stays in the connection stream table and nothing in the distribution removes it. Stream identifiers increase monotonically, so a peer can open and close streams on one connection indefinitely, each close leaving a residual entry that is retained for the life of the connection.

SETTINGS_MAX_CONCURRENT_STREAMS does not bound this. That setting caps how many streams are live at once and is enforced, while the growth is made of streams the cap has already released, so it accumulates with concurrency never exceeding one. The client keeps the same table and grows the same way against a hostile server.

Measured against a server built on this module, roughly 920 bytes are retained per closed stream for about 19 bytes on the wire, so 100,000 sequential streams on one connection grow server resident memory by about 88 MiB. The streams are ordinary requests that the application accepts and completes.

Record
EUVD-2026-72527
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-4hff-3256-7fpc 7.5

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that...

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table.

When a stream reaches the CLOSED state, stream_state returns the concurrency slot and clears most of the stream's keys, but the entry itself stays in the connection stream table and nothing in the distribution removes it. Stream identifiers increase monotonically, so a peer can open and close streams on one connection indefinitely, each close leaving a residual entry that is retained for the life of the connection.

SETTINGS_MAX_CONCURRENT_STREAMS does not bound this. That setting caps how many streams are live at once and is enforced, while the growth is made of streams the cap has already released, so it accumulates with concurrency never exceeding one. The client keeps the same table and grows the same way against a hostile server.

Measured against a server built on this module, roughly 920 bytes are retained per closed stream for about 19 bytes on the wire, so 100,000 sequential streams on one connection grow server resident memory by about 88 MiB. The streams are ordinary requests that the application accepts and completes.

Record
GHSA-4hff-3256-7fpc
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-401
Updated
2026-11-02
NVD 7.5

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table.

When a stream reaches the CLOSED state, stream_state returns the concurrency slot and clears most of the stream's keys, but the entry itself stays in the connection stream table and nothing in the distribution removes it. Stream identifiers increase monotonically, so a peer can open and close streams on one connection indefinitely, each close leaving a residual entry that is retained for the life of the connection.

SETTINGS_MAX_CONCURRENT_STREAMS does not bound this. That setting caps how many streams are live at once and is enforced, while the growth is made of streams the cap has already released, so it accumulates with concurrency never exceeding one. The client keeps the same table and grows the same way against a hostile server.

Measured against a server built on this module, roughly 920 bytes are retained per closed stream for about 19 bytes on the wire, so 100,000 sequential streams on one connection grow server resident memory by about 88 MiB. The streams are ordinary requests that the application accepts and completes.

Record
CVE-2026-16028
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-401
Updated
2026-11-02
OSVALPINE-CVE-2026-16028 7.5

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table.

When a stream reaches the CLOSED state, stream_state returns the concurrency slot and clears most of the stream's keys, but the entry itself stays in the connection stream table and nothing in the distribution removes it. Stream identifiers increase monotonically, so a peer can open and close streams on one connection indefinitely, each close leaving a residual entry that is retained for the life of the connection.

SETTINGS_MAX_CONCURRENT_STREAMS does not bound this. That setting caps how many streams are live at once and is enforced, while the growth is made of streams the cap has already released, so it accumulates with concurrency never exceeding one. The client keeps the same table and grows the same way against a hostile server.

Measured against a server built on this module, roughly 920 bytes are retained per closed stream for about 19 bytes on the wire, so 100,000 sequential streams on one connection grow server resident memory by about 88 MiB. The streams are ordinary requests that the application accepts and completes.

Record
ALPINE-CVE-2026-16028
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-03
OSV 7.5

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table.

When a stream reaches the CLOSED state, stream_state returns the concurrency slot and clears most of the stream's keys, but the entry itself stays in the connection stream table and nothing in the distribution removes it. Stream identifiers increase monotonically, so a peer can open and close streams on one connection indefinitely, each close leaving a residual entry that is retained for the life of the connection.

SETTINGS_MAX_CONCURRENT_STREAMS does not bound this. That setting caps how many streams are live at once and is enforced, while the growth is made of streams the cap has already released, so it accumulates with concurrency never exceeding one. The client keeps the same table and grows the same way against a hostile server.

Measured against a server built on this module, roughly 920 bytes are retained per closed stream for about 19 bytes on the wire, so 100,000 sequential streams on one connection grow server resident memory by about 88 MiB. The streams are ordinary requests that the application accepts and completes.

Record
CVE-2026-16028
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-401
Updated
2026-11-02
Show 6 moreShow less
OSVDEBIAN-CVE-2026-16028 7.5

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table. When a stream reaches the CLOSED state, stream_state returns the concurrency slot and clears most of the stream's keys, but the entry itself stays in the connection stream table and nothing in the distribution removes it. Stream identifiers increase monotonically, so a peer can open and close streams on one connection indefinitely, each close leaving a residual entry that is retained for the life of the connection. SETTINGS_MAX_CONCURRENT_STREAMS does not bound this. That setting caps how many streams are live at once and is enforced, while the growth is made of streams the cap has already released, so it accumulates with concurrency never exceeding one. The client keeps the same table and grows the same way against a hostile server. Measured against a server built on this module, roughly 920 bytes are retained per closed stream for about 19 bytes on the wire, so 100,000 sequential streams on one connection grow server resident memory by about 88 MiB. The streams are ordinary requests that the application accepts and completes.

Record
DEBIAN-CVE-2026-16028
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2026-16028 7.5

Protocol::HTTP2 versions before 1.14 for Perl allow memory exhaustion via closed streams that stream_state never removes from the connection stream table. When a stream reaches the CLOSED state, stream_state returns the concurrency slot and clears most of the stream's keys, but the entry itself stays in the connection stream table and nothing in the distribution removes it. Stream identifiers increase monotonically, so a peer can open and close streams on one connection indefinitely, each close leaving a residual entry that is retained for the life of the connection. SETTINGS_MAX_CONCURRENT_STREAMS does not bound this. That setting caps how many streams are live at once and is enforced, while the growth is made of streams the cap has already released, so it accumulates with concurrency never exceeding one. The client keeps the same table and grows the same way against a hostile server. Measured against a server built on this module, roughly 920 bytes are retained per closed stream for about 19 bytes on the wire, so 100,000 sequential streams on one connection grow server resident memory by about 88 MiB. The streams are ordinary requests that the application accepts and completes.

Record
UBUNTU-CVE-2026-16028
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVopenSUSE-SU-2026:11735-1 No score

perl-Protocol-HTTP2-1.140.0-1.1 on GA media

These are all security issues fixed in the perl-Protocol-HTTP2-1.140.0-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:11735-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:21972-1 No score

Security update for perl-Protocol-HTTP2

This update for perl-Protocol-HTTP2 fixes the following issue:

  • CVE-2026-16028: memory exhaustion leading to denial of service due to closed streams never being removed by stream_state from the connection stream table (bsc#1279629).
Record
openSUSE-SU-2026:21972-1
Updated
2026-11-02
OSVSUSE-SU-2026:23945-1 No score

Security update for perl-Protocol-HTTP2

This update for perl-Protocol-HTTP2 fixes the following issue:

  • CVE-2026-16028: memory exhaustion leading to denial of service due to closed streams never being removed by stream_state from the connection stream table (bsc#1279629).
Record
SUSE-SU-2026:23945-1
Updated
2026-11-02
OSVSUSE-SU-2026:4182-1 No score

Security update for perl-Protocol-HTTP2

This update for perl-Protocol-HTTP2 fixes the following issue:

  • CVE-2026-16028: memory exhaustion leading to denial of service due to closed streams never being removed by stream_state from the connection stream table (bsc#1279629).
Record
SUSE-SU-2026:4182-1
Updated
2026-11-02

Affected packages

Affected packages
PackageAffectedFixed
perl-protocol-http2
Alpine:v3.23
before 1.14-r0
1.14-r0
perl-protocol-http2
Alpine:v3.24
before 1.14-r0
1.14-r0
libprotocol-http2-perl
Debian:12
All versions, plus listed versions
1.10-21.10-31.11-11.12-11.12-21.13-11.14-1
None known
libprotocol-http2-perl
Debian:13
All versions, plus listed versions
1.11-11.12-11.12-21.13-11.14-1
None known
libprotocol-http2-perl
Debian:14
before 1.14-1, plus listed versions
1.11-11.12-11.12-21.13-1
1.14-1
perl-Protocol-HTTP2
SUSE:Linux Enterprise Server 16.0
before 1.10-160000.4.1
1.10-160000.4.1
perl-Protocol-HTTP2
SUSE:Linux Enterprise Server for SAP applications 16.0
before 1.10-160000.4.1
1.10-160000.4.1
perl-Protocol-HTTP2
SUSE:Linux Enterprise Module for Package Hub 15 SP7
before 1.10-150600.3.6.1
1.10-150600.3.6.1
libprotocol-http2-perl
Ubuntu:18.04:LTS
All versions, plus listed versions
1.08-1
None known
libprotocol-http2-perl
Ubuntu:20.04:LTS
All versions, plus listed versions
1.09-11.10-1
None known
Show 6 moreShow less
Affected packages
PackageAffectedFixed
libprotocol-http2-perl
Ubuntu:22.04:LTS
All versions, plus listed versions
1.10-1
None known
libprotocol-http2-perl
Ubuntu:24.04:LTS
All versions, plus listed versions
1.10-3
None known
libprotocol-http2-perl
Ubuntu:26.10
All versions, plus listed versions
1.11-11.12-11.12-21.13-1
None known
libprotocol-http2-perl
Ubuntu:26.04:LTS
All versions, plus listed versions
1.11-1
None known
perl-Protocol-HTTP2
openSUSE:Tumbleweed
before 1.140.0-1.1
1.140.0-1.1
perl-Protocol-HTTP2
openSUSE:Leap 16.0
before 1.10-160000.4.1
1.10-160000.4.1

History

History
RecordedChangedSources
affected, aliases, referencesOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-16028 is a high vulnerability (CVSS 7.5) in perl-protocol-http2, published September 7, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.36%, the 30th percentile. Fixed in perl-protocol-http2 1.14-r0.

References

Show 12 moreShow less
MoveEnter Open