Vulnerabilities in pkg:maven/io.micronaut/micronaut-json-core
PACKAGECVE-2026-33013 is a HIGH denial of service vulnerability (CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop')) affecting Micronaut json core libraries in the Maven ecosystem. The issue involves micronaut vulnerable to dos via crafted form-urlencoded body binding with descending array indices. Remediation is available by upgrading affected packages to version 4.10.16, 3.10.5, 3.8.13.
pkg:maven/io.micronaut/micronaut-json-core
Vulnerability advisories affecting package pkg:maven/io.micronaut/micronaut-json-core. Select an advisory below to view technical details or fixes.
| Advisory ID | CVE / NVD | Severity | Summary |
|---|---|---|---|
| GHSA-43w5-mmxv-cpvh | CVE-2026-33013 | HIGH | Micronaut vulnerable to DoS via crafted form-urlencoded body binding with descending array indices |
CVE-2026-33013 at a Glance
How to Fix CVE-2026-33013
To remediate this vulnerability, upgrade all affected Micronaut json core dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-json-core</artifactId>
<version>4.10.16</version>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-json-core</artifactId>
<version>3.10.5</version>
</dependency>
<dependency>
<groupId>io.micronaut</groupId>
<artifactId>micronaut-json-core</artifactId>
<version>3.8.13</version>
</dependency>
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
mvn dependency:tree -Dincludes=io.micronaut
How to Check if You Are Affected
To determine whether your Java application is affected by CVE-2026-33013, inspect your build dependencies using the Maven Dependency Plugin:
mvn dependency:tree -Dincludes=io.micronaut
Analyze the terminal output to locate any version of Micronaut json core in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 4.10.16), your application is affected.
Note: The mvn dependency:tree -Dincludes=io.micronaut command inspects the resolved dependency graph declared in your project's POM files; it does not perform automated security scanning or inspect runtime dynamic classpaths. Always verify runtime container classpaths and shaded JARs.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-835: Loop with Unreachable Exit Condition ('Infinite Loop'), where the product contains an iteration or loop with an exit condition that cannot be reached, i.e., an infinite loop. In Micronaut json core, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-33013 Affected Micronaut json core Versions
3 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
io.micronaut:micronaut-json-core
|
Maven |
≥ 4.0.0-M1
< 4.10.16
|
4.10.16
|
|
io.micronaut:micronaut-json-core
|
Maven |
≥ 3.9.0
< 3.10.5
|
3.10.5
|
|
io.micronaut:micronaut-json-core
|
Maven |
< 3.8.13
|
3.8.13
|
References
Frequently Asked Questions
What is CVE-2026-33013?
Which Micronaut json core versions are affected?
What version fixes CVE-2026-33013?
Is micronaut-json-core affected?
What CWE is associated with CVE-2026-33013?
How can I check Maven dependencies for CVE-2026-33013?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-43w5-mmxv-cpvh",
"modified" : "2026-03-31T18:45:02Z",
"published" : "2026-03-17T16:59:59Z",
"aliases" : [ "CVE-2026-33013" ],
"summary" : "Micronaut vulnerable to DoS via crafted form-urlencoded body binding with descending array indices",
"details" : "In `JsonBeanPropertyBinder::expandArrayToThreshold` in `io.micronaut:micronaut-json-core` before Micronaut 4 4.10.16 and in Micronaut 3 before 3.10.5 does not correctly handle descending array index order during form-urlencoded body binding, which allows remote attackers to cause a denial of service (non-terminating loop, CPU exhaustion, and OutOfMemoryError) via crafted indexed form parameters (e.g., `authors[1].name` followed by `authors[0].name`).\n\n### Example\n\nWith such an application\n\n```java\npackage dosform;\n\nimport io.micronaut.http.HttpResponse;\nimport io.micronaut.http.MediaType;\nimport io.micronaut.http.annotation.Body;\nimport io.micronaut.http.annotation.Consumes;\nimport io.micronaut.http.annotation.Controller;\nimport io.micronaut.http.annotation.Get;\nimport io.micronaut.http.annotation.Post;\nimport io.micronaut.http.annotation.Produces;\n\nimport java.net.URI;\n\n@Controller\nclass HomeController {\n\n @Produces(MediaType.TEXT_HTML)\n @Get\n String index() {\n return \"\"\"\n <!DOCTYPE html>\n <html>\n <head>\n <title></title>\n </head>\n <body>\n <form action=\"/submit\" method=\"post\">\n <label for=\"firstAuthor\">Fist Author</label>\n <input id=\"firstAuthor\" name=\"authors[0].name\" type=\"text\"/>\n\n <label for=\"secondAuthor\">Second Author</label>\n <input id=\"secondAuthor\" name=\"authors[1].name\" type=\"text\"/>\n \n <label for=\"thirdAuthor\">Third Author</label>\n <input id=\"thirdAuthor\" name=\"authors[2].name\" type=\"text\"/>\n\n <button type=\"submit\">Submit</button>\n </form>\n \n </body>\n </html>\n \"\"\";\n }\n\n @Consumes(MediaType.APPLICATION_FORM_URLENCODED)\n @Post(\"/submit\")\n HttpResponse<?> submit(@Body Book book) {\n return HttpResponse.seeOther(URI.create(\"/\"));\n }\n}\npackage dosform;\n\nimport io.micronaut.core.annotation.Introspected;\n\nimport java.util.Objects;\n\n@Introspected\npublic class Author {\n private String name;\n public String getName() { return name; }\n public void setName(String name) { this.name = name; }\n\n @Override\n public final boolean equals(Object o) {\n if (!(o instanceof Author)) return false;\n\n Author author = (Author) o;\n return Objects.equals(name, author.name);\n }\n\n @Override\n public int hashCode() {\n return Objects.hashCode(name);\n }\n\n @Override\n public String toString() {\n return \"Author{\" +\n \"name='\" + name + '\\'' +\n '}';\n }\n}\npackage dosform;\n\nimport io.micronaut.core.annotation.Introspected;\n\nimport java.util.List;\nimport java.util.Objects;\n\n@Introspected\npublic class Book {\n private List<Author> authors;\n public List<Author> getAuthors() { return authors; }\n public void setAuthors(List<Author> authors) { this.authors = authors; }\n\n @Override\n public final boolean equals(Object o) {\n if (!(o instanceof Book)) return false;\n\n Book book = (Book) o;\n return Objects.equals(authors, book.authors);\n }\n\n @Override\n public int hashCode() {\n return Objects.hashCode(authors);\n }\n\n @Override\n public String toString() {\n return \"Book{\" +\n \"authors=\" + authors +\n '}';\n }\n}\n```\n\nSending `curl -v -X POST 'http://127.0.0.1:8080/submit' -H 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'authors[1].name=RobertGalbraith' --data-urlencode 'authors[0].name=JKRowling'` causes sustained CPU usage and unbounded memory growth (eventually `OutOfMemoryError`). \n\n### Patches\nFor Micronaut 4, the problem has been patched in `micronaut-core`, dependencies with group id `io.micronaut`, since [4.10.16](https://github.com/micronaut-projects/micronaut-core/releases/tag/v4.10.16).\n\nFor Micronaut 3, the problem has been patched since [3.10.5](https://github.com/micronaut-projects/micronaut-core/releases/tag/v3.10.5)\n\nUsers upgrade to the latest version of the framework. \n\n### Workarounds\nThere is no way for users to fix or remediate the vulnerability without upgrading.\n\n### References\nPR Fix: https://github.com/micronaut-projects/micronaut-core/pull/12410",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Maven",
"name" : "io.micronaut:micronaut-json-core"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "4.0.0-M1"
}, {
"fixed" : "4.10.16"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Maven",
"name" : "io.micronaut:micronaut-json-core"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "3.9.0"
}, {
"fixed" : "3.10.5"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Maven",
"name" : "io.micronaut:micronaut-json-core"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "3.8.13"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/micronaut-projects/micronaut-core/security/advisories/GHSA-43w5-mmxv-cpvh"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-33013"
}, {
"type" : "WEB",
"url" : "https://github.com/micronaut-projects/micronaut-core/pull/12410"
}, {
"type" : "WEB",
"url" : "https://github.com/micronaut-projects/micronaut-core/commit/1afe509677c51b320041b7a2c177366d4a4deb55"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/micronaut-projects/micronaut-core"
}, {
"type" : "WEB",
"url" : "https://github.com/micronaut-projects/micronaut-core/releases/tag/v3.10.5"
}, {
"type" : "WEB",
"url" : "https://github.com/micronaut-projects/micronaut-core/releases/tag/v4.10.16"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-835" ],
"severity" : "HIGH",
"github_reviewed" : true,
"github_reviewed_at" : "2026-03-17T16:59:59Z",
"nvd_published_at" : "2026-03-20T05:16:15Z"
}
}