CVE-2026-71217: Iperf3: iperf3 server accepts unbounded peer-controlled json parameters enabling remote denial of service via resource exhaustion

Published Apr 23, 2026
·
Updated

A flaw was found in iperf3. A remote attacker can exploit this vulnerability by sending crafted control-channel JSON with oversized numeric parameters, such as parallel and len, which are not properly validated by the server. This improper input validation can lead to excessive stream and thread creation, as well as large buffer allocations, causing resource exhaustion. Consequently, this can result in a Denial of Service (DoS) on the affected iperf3 server.

Other sources

AIONLYREPORT package: iperf3-3.17.1-5.el101 ------ Summary: Unbounded numeric parameters from peer JSON can trigger resource exhaustion (blksize / numstreams / duration etc.): The server accepts peer-controlled numeric values from the control-channel JSON without server-side bounds checks; confirmed exploitation through oversized parallel and len values can drive excessive stream/thread creation and large per-stream buffer allocation, causing remote denial of service. Requirements to exploit: Network reachability to an iperf3 server and the ability to send crafted control-channel JSON during parameter exchange. No user interaction is required. If iperf authentication is not enabled, no credentials are needed. Component affected: iperf3 server control-channel parameter handling in getparameters() (src/iperfapi.c), server CREATESTREAMS processing (src/iperfserverapi.c), and iperfnewstream() buffer/stream setup (src/iperfapi.c) Version affected: Confirmed on the 3.17.1 source baseline and present through the inspected current HEAD; older versions may also be affected, but were not confirmed. Patch available: No upstream patch identified. A minimal patch sketch is included below. Version fixed (if any already): unknown Upstream coordination: Not yet notified. This report is prepared for initial disclosure to the project maintainers. CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - 7.5 (HIGH) AV:N - Reachable over the network through the iperf3 control channel. AC:L - Exploitation only requires sending oversized numeric parameters during normal parameter exchange. PR:N - No credentials are required when the server accepts unauthenticated clients. UI:N - No user interaction is required. S:U - The impact remains within the iperf3 service scope. C:N - No confidentiality impact was demonstrated. I:N - No integrity impact was demonstrated. A:H - Oversized parallel and len values can drive large buffer mapping, heavy readentropy() work, and excessive stream/thread creation, causing serious service disruption. Impact: Important. The strongest confirmed impact is server-side availability loss: oversized parallel and len values drive per-stream buffer allocation, readentropy() work, and stream/thread creation in the server path. No direct confidentiality or integrity impact was demonstrated, but a remote client can cause substantial service disruption or keep the service unavailable by repeatedly triggering resource-intensive or failing tests. Embargo: yes Reason: The issue is reachable over the network against exposed iperf3 servers, requires no user interaction, and no fixed release is known. Coordinated disclosure gives upstream time to add server-side validation before public release of detailed reproduction steps. Suggested public date: 19-Jul-2026 Acknowledgement: Aisle Research Steps to reproduce: 1. Build the current source and start the server with ./src/iperf3 -s. 2. Build a modified client, or a custom control-channel client, that overwrites the parameter JSON before JSONwrite() and sends out-of-range values such as "parallel": 100000 and "len": 1073741824. 3. Connect the malicious client to the server and let it proceed through the normal control handshake and stream setup. 4. Observe repeated large ftruncate() / mmap() attempts per stream, heavy memory/CPU pressure, excessive stream/socket/thread creation attempts, and test abort/reset. Repeated requests can keep the service degraded or unavailable.

Vulnerability Details

getparameters() accepts peer-controlled numeric fields from the control-channel JSON and assigns them directly without reapplying the bounds enforced by CLI parsing: c if ((jp = iperfcJSONGetObjectItemType(j, "parallel", cJSONNumber)) != NULL) test->numstreams = jp->valueint; ... if ((jp = iperfcJSONGetObjectItemType(j, "len", cJSONNumber)) != NULL) test->settings->blksize = jp->valueint; The strongest confirmed reachable sink is on the server path. During CREATESTREAMS, the server eventually calls iperfnewstream(), where len controls per-stream buffer sizing and parallel controls how many streams and worker threads are created: c sp = iperfnewstream(test, s, flag); ... if (ftruncate(sp->bufferfd, test->settings->blksize) < 0) ... sp->buffer = (char ) mmap(NULL, test->settings->blksize, ...); ret = readentropy(sp->buffer, test->settings->blksize); CLI parsing applies checks such as MAXSTREAMS and MAXBLOCKSIZE, but equivalent validation is not performed when values come from peer JSON. The same missing-validation pattern also affects other numeric peer fields such as time, omit, burst, and mss; however, the strongest confirmed availability impact in the source material is via oversized parallel and len. Most relevant CWEs: CWE-20 (Improper Input Validation): peer-controlled control-channel integers are accepted without range checks.

CWE-400 (Uncontrolled Resource Consumption): oversized values can drive excessive memory, CPU, socket, and thread use.

Affected Versions

The reviewed repository history indicates that the vulnerable assignments in getparameters() are present in the 72fc90d 3.17.1 baseline and remain present in the inspected current HEAD (15586ce). The corresponding sink code in iperfnewstream() and server stream setup is also present in that baseline. Older versions may also be affected, but were not confirmed from the available history.

Proposed Fix

diff diff --git a/src/iperfapi.c b/src/iperfapi.c @@ static int getparameters(struct iperftest test) if ((jp = iperfcJSONGetObjectItemType(j, "parallel", cJSONNumber)) != NULL)

test->numstreams = jp->valueint; + if ((jp = iperfcJSONGetObjectItemType(j, "parallel", cJSONNumber)) != NULL) { + if (jp->valueint < 1 || jp->valueint > MAXSTREAMS) { + ierrno = IENUMSTREAMS; + r = -1; + goto done; + } + test->numstreams = jp->valueint; + } @@

if ((jp = iperfcJSONGetObjectItemType(j, "len", cJSONNumber)) != NULL)

test->settings->blksize = jp->valueint; + if ((jp = iperfcJSONGetObjectItemType(j, "len", cJSONNumber)) != NULL) { + int blksize = jp->valueint; + if ((test->protocol->id != Pudp && (blksize <= 0 || blksize > MAXBLOCKSIZE)) || + (test->protocol->id == Pudp && + blksize > 0 && + (blksize < MINUDPBLOCKSIZE || blksize > MAXUDPBLOCKSIZE))) { + ierrno = (test->protocol->id == Pudp) ? IEUDPBLOCKSIZE : IEBLOCKSIZE; + r = -1; + goto done; + } + test->settings->blksize = blksize; + } @@ +done: cJSONDelete(j); return r;

Peer numeric fields such as time, omit, burst, and mss should also be reviewed and validated using the existing max/min constants where applicable. ------ This report was generated using AI technology. Always review AI-generated content prior to use

Red Hat

Iperf3: iperf3 server accepts unbounded peer-controlled json parameters enabling remote denial of service via resource exhaustion

Microsoft

Affected Software

2 affected componentsFixes available
iperf3 iperf3>=3.17.1<=3.17.1
Microsoft azl3 iperf3 3.17.1-4<3.17.1-5
3.17.1-5

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 3.17.1-5
  2. Upgrade

    Upgrade iperf3-3.17.1-5.el10_1 to a version that resolves this vulnerability.

    Fixed in 3.17.1
  3. Compensating control

    Restrict network access to the iperf3 server control channel (e.g., expose `./src/iperf3 -s` only to trusted IPs / via firewall/ACL) to prevent unauthenticated remote clients from sending crafted control-channel JSON with oversized numeric parameters like `parallel` and `len`.

Event History

Apr 23, 2026
Data Sourced
via Red Hat·01:00 AM
DescriptionSeverityAffected Software
Aug 11, 2026
CVE Published
via MITRE·08:50 AM
Data Sourced
via MITRE·08:50 AM
DescriptionSeverityWeakness
Data Sourced
via NVD·09:17 AM
DescriptionSeverityWeakness
Aug 15, 2026
Data Sourced
via Microsoft·02:02 AM
DescriptionSeverityWeakness
Data Sourced
via Microsoft·02:02 AM
Affected Software
Updated
via Microsoft·02:02 AM
DescriptionSeverity

Frequently Asked Questions

1

What is the severity of CVE-2026-71217?

CVE-2026-71217 has a high severity rating of 7.5.

2

How does CVE-2026-71217 impact Iperf3?

CVE-2026-71217 allows a remote attacker to exhaust resources on the Iperf3 server through unbounded JSON parameters.

3

What can be done to mitigate CVE-2026-71217?

To mitigate CVE-2026-71217, validate and limit the size of JSON parameters sent to the Iperf3 server.

4

Is CVE-2026-71217 officially acknowledged?

Yes, CVE-2026-71217 was published on August 11, 2026, and is recognized as a legitimate vulnerability.

5

What type of attack does CVE-2026-71217 enable?

CVE-2026-71217 enables remote denial of service attacks through resource exhaustion.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203