CVE-2026-54892: Plug Package Suffers from Quadratic-Time Decoding Vulnerability Leading to Denial of Service

plug Updated 23 Jun 2026

Summary

23/06/2026
Yes i
High
8.7

CVE-2026-54892: Plug: quadratic-time decoding of nested query/body parameters enables denial of service. Affects plug across 10 version ranges.

>= 1.15.0, < 1.15.5 >= 1.16.0, < 1.16.4 >= 1.17.0, < 1.17.2 >= 1.18.0, < 1.18.3 >= 1.19.0, < 1.19.3 < 9c5d37c440eaae92869eed7c014c47266744fadb >= 712b875d3442c765d8d37e546ffd5ad9f8afcc55, < c317d08fdcf96e17931f7419275b2b8c4bf3e951 < a61124aa625d819a218fb07f90afbac8aa85eb0e < d4e5568392a4b29e545b91e12e87d6098f976145 < d737eb236f17e31a36290e39f9ef3cd86a1343bd

Fixed in 5 releases; the minimum fixed version depends on the release line you run. How to fix ↓

Free scan

Check if this vulnerability affects your application

Upload a manifest or SBOM and we'll show whether you're affected, plus every other risky package in the same scan.

Check my app free

No signup required · Results in about 60 seconds

Upload your dependency manifest or SBOM

Drag & drop your file here or

Java Javascript PHP Python Go Rust Ruby Dart C/C++ Elixir CycloneDX SPDX

Upload a supported dependency manifest or SBOM. No installation or source-code access required.

See supported files and SBOM formats
SBOM sbom.json · bom.json · bom.xml · *.spdx.json · *.cdx.json · *.cdx.xml
Java pom.xml · gradle.lockfile · buildscript-gradle.lockfile
Javascript package-lock.json · yarn.lock · pnpm-lock.yaml
PHP composer.lock
Python poetry.lock · requirements.txt · Pipfile.lock
Go go.mod
Rust Cargo.lock
Ruby Gemfile.lock
Dart pubspec.lock
C/C++ conan.lock
Elixir mix.lock
Enter your work email to receive your report link.

Verify your email to view the full report and start 30 days of continuous monitoring. No credit card required.

Sponsored Devnack Penetration testing for web, API and mobile Manual testing by engineers who build software, not an auditor's checklist. Trusted by teams at Swift and Google Talk to Devnack

Background

Plug is a specification and set of utilities for building web applications in Elixir. It provides a modular approach to handling HTTP requests and responses, enabling developers to create scalable and maintainable applications. The package is widely used in the Elixir ecosystem, particularly in conjunction with the Phoenix framework. However, it has been found to have a vulnerability that can be exploited to cause denial of service, affecting the performance and availability of applications that rely on it.

Vulnerability Detail

The vulnerability arises from an inefficient algorithmic complexity in Plug's nested-parameter decoder. Specifically, the decoding process for query strings and application/x-www-form-urlencoded request bodies can be exploited by an unauthenticated remote attacker. When a key contains many bracketed segments, such as 'a[a][a]=1', the decoder performs a map operation for each level of nesting, leading to quadratic time complexity. This means that as the number of nesting levels increases, the time taken to decode the request grows exponentially. With the default body limit of 1,000,000 bytes, an attacker can craft a request with approximately 333,000 nesting levels, which can saturate the BEAM scheduler for extended periods, rendering the server unresponsive. This vulnerability does not require any authentication or knowledge of application routes, making it particularly dangerous.

How To Fix

Latest published version: 1.20.3 as of 22 Oct 2026

Upgrading to it may include breaking changes; the versions below are the minimum fixed release for this vulnerability.

If you can't move to the latest

The minimum fixed version depends on the release line you run.

  • >= 1.15.0, < 1.15.5 1.15.5
  • >= 1.16.0, < 1.16.4 1.16.4
  • >= 1.17.0, < 1.17.2 1.17.2
  • >= 1.18.0, < 1.18.3 1.18.3
  • >= 1.19.0, < 1.19.3 1.19.3

Tip — Not sure which release line you're on? Vulert can find the fix for the version you are using. Scan free →

Workaround

As a temporary workaround, you can limit the nesting levels in your application by implementing a custom parser or by validating the request parameters before processing them. This can help mitigate the risk of denial of service attacks until you can update to a patched version.

Conclusion

CVE-2026-54892 represents a significant vulnerability in the Plug package that can lead to denial of service attacks. It is crucial for developers using affected versions to update to the latest patched versions to ensure the security and availability of their applications. Additionally, implementing workarounds can help mitigate risks until an update can be applied.

See every vulnerability recorded for plug →

Share this vulnerability

FAQ

CVE-2026-54892 is a vulnerability in the Plug package that allows for denial of service due to quadratic-time decoding of nested query and body parameters.

An attacker can craft a request with a large number of nested parameters, causing the server to become unresponsive due to excessive resource consumption.

The vulnerability affects Plug versions from 1.15.0 to 1.15.4, 1.16.0 to 1.16.3, 1.17.0 to 1.17.1, 1.18.0 to 1.18.2, and 1.19.0 to 1.19.2.

You can check if your application is affected by using Vulert, which monitors and alerts for open-source vulnerabilities in real-time. You can also use the Vulert playground to test your application without any signup.

The CVSS score for CVE-2026-54892 is 8.7, indicating a high severity level.

Related vulnerabilities

Recent vulnerabilities recorded for plug.

How To Fix

Latest published version: 1.20.3 as of 22 Oct 2026

Upgrading to it may include breaking changes; the versions below are the minimum fixed release for this vulnerability.

If you can't move to the latest

The minimum fixed version depends on the release line you run.

  • >= 1.15.0, < 1.15.5 1.15.5
  • >= 1.16.0, < 1.16.4 1.16.4
  • >= 1.17.0, < 1.17.2 1.17.2
  • >= 1.18.0, < 1.18.3 1.18.3
  • >= 1.19.0, < 1.19.3 1.19.3

Tip — Not sure which release line you're on? Vulert can find the fix for the version you are using. Scan free →

Subscribe to Vulert on Telegram
Daily digest of new CVEs, critical and high severity, affected packages and fixes — plus a weekly roundup.
Join the channel →
Help improve this record
Report an issue or send feedback