CVE-2023-27371
Medium · 5.9CVSS
5.9
EPSS
1.3%
Published
Feb 28, 2023
CISA due date
—
Cloudanix analysis
A flaw in a common web server library lets attackers send a specially crafted web form upload that crashes the server, taking the service offline until it restarts.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Denial Of Service
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Out-of-bounds read in find_boundary() triggered by null bytes embedded in a multipart/form-data boundary string during MHD_create_post_processor() parsing, resulting in a crash under specific heap conditions.
Why it matters to the business
Remote attackers can cause repeated service crashes leading to denial of service and loss of availability for any application relying on the affected library version.
How an attack unfolds
An attacker identifies a service using a vulnerable version of GNU libmicrohttpd, crafts an HTTP POST request containing one or more null bytes inside the multipart/form-data boundary field, and sends it to trigger the parsing flaw and crash the process.
How to fix it
Upgrade GNU libmicrohttpd to version 0.9.76 or later. Rebuild and redeploy all dependent applications after the upgrade. Validate that no custom boundary handling code bypasses the library fix.
How to confirm the fix worked
Confirm the installed library version is 0.9.76 or newer. Test exposure by replaying a crafted POST containing null bytes in the boundary field and verify the process no longer crashes.
Typical attack path
- Scan for or identify hosts exposing services built with vulnerable GNU libmicrohttpd
- Craft a malicious multipart/form-data POST request embedding null bytes in the boundary parameter
- Send the request to the target endpoint
- Observe process crash or service unavailability due to out-of-bounds read in find_boundary()
How to detect it
Review web server and application logs for crashes or segmentation faults coinciding with POST requests to endpoints that accept multipart/form-data. Search for boundary strings containing embedded null characters in request logs or packet captures.
What your security team should do
- Immediately inventory all deployments using GNU libmicrohttpd and prioritize upgrade to 0.9.76
- Add version checks and dependency scanning to CI/CD pipelines to prevent reintroduction of vulnerable versions
- Monitor application logs and process health for unexpected crashes on POST endpoints handling multipart data
- Consider temporary WAF rules to block or sanitize requests with unusual boundary characters if patching is delayed
The record
GNU libmicrohttpd before 0.9.76 allows remote DoS (Denial of Service) due to improper parsing of a multipart/form-data boundary in the postprocessor.c MHD_create_post_processor() method. This allows an attacker to remotely send a malicious HTTP POST packet that includes one or more '\0' bytes in a multipart/form-data boundary field, which - assuming a specific heap layout - will result in an out-of-bounds read and a crash in the find_boundary() function.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | libmicrohttpd | 0 | 1:0.9.59-3.el8 |
| AlmaLinux:8 | libmicrohttpd-devel | 0 | 1:0.9.59-3.el8 |
| AlmaLinux:8 | libmicrohttpd-doc | 0 | 1:0.9.59-3.el8 |
| AlmaLinux:9 | libmicrohttpd | 0 | 1:0.9.72-5.el9 |
| AlmaLinux:9 | libmicrohttpd-devel | 0 | 1:0.9.72-5.el9 |
| AlmaLinux:9 | libmicrohttpd-doc | 0 | 1:0.9.72-5.el9 |
| Debian:10 | libmicrohttpd | 0 | 0.9.62-1+deb10u1 |
| Debian:11 | libmicrohttpd | 0 | 0.9.72-2+deb11u1 |
| Debian:12 | libmicrohttpd | 0 | 0.9.75-6 |
| Debian:13 | libmicrohttpd | 0 | 0.9.75-6 |
| Red Hat:enterprise_linux:8::baseos | libmicrohttpd | 0 | 1:0.9.59-3.el8 |
| Red Hat:enterprise_linux:8::baseos | libmicrohttpd-debuginfo | 0 | 1:0.9.59-3.el8 |
| Red Hat:enterprise_linux:8::baseos | libmicrohttpd-debugsource | 0 | 1:0.9.59-3.el8 |
| Red Hat:enterprise_linux:8::baseos | libmicrohttpd-devel | 0 | 1:0.9.59-3.el8 |
| Red Hat:enterprise_linux:8::baseos | libmicrohttpd-doc | 0 | 1:0.9.59-3.el8 |
| Red Hat:enterprise_linux:8::crb | libmicrohttpd | 0 | 1:0.9.59-3.el8 |
| Red Hat:enterprise_linux:8::crb | libmicrohttpd-debuginfo | 0 | 1:0.9.59-3.el8 |
| Red Hat:enterprise_linux:8::crb | libmicrohttpd-debugsource | 0 | 1:0.9.59-3.el8 |
| Red Hat:enterprise_linux:8::crb | libmicrohttpd-devel | 0 | 1:0.9.59-3.el8 |
| Red Hat:enterprise_linux:8::crb | libmicrohttpd-doc | 0 | 1:0.9.59-3.el8 |
| Red Hat:enterprise_linux:9::appstream | libmicrohttpd | 0 | 1:0.9.72-5.el9 |
| Red Hat:enterprise_linux:9::appstream | libmicrohttpd-debuginfo | 0 | 1:0.9.72-5.el9 |
| Red Hat:enterprise_linux:9::appstream | libmicrohttpd-debugsource | 0 | 1:0.9.72-5.el9 |
| Red Hat:enterprise_linux:9::appstream | libmicrohttpd-devel | 0 | 1:0.9.72-5.el9 |
| Red Hat:enterprise_linux:9::appstream | libmicrohttpd-doc | 0 | 1:0.9.72-5.el9 |
| Red Hat:enterprise_linux:9::crb | libmicrohttpd | 0 | 1:0.9.72-5.el9 |
| Red Hat:enterprise_linux:9::crb | libmicrohttpd-debuginfo | 0 | 1:0.9.72-5.el9 |
| Red Hat:enterprise_linux:9::crb | libmicrohttpd-debugsource | 0 | 1:0.9.72-5.el9 |
| Red Hat:enterprise_linux:9::crb | libmicrohttpd-devel | 0 | 1:0.9.72-5.el9 |
| Red Hat:enterprise_linux:9::crb | libmicrohttpd-doc | 0 | 1:0.9.72-5.el9 |
| Red Hat:rhel_eus:8.6::baseos | libmicrohttpd | 0 | 1:0.9.59-2.el8_6.1 |
| Red Hat:rhel_eus:8.6::baseos | libmicrohttpd-debuginfo | 0 | 1:0.9.59-2.el8_6.1 |
| Red Hat:rhel_eus:8.6::baseos | libmicrohttpd-debugsource | 0 | 1:0.9.59-2.el8_6.1 |
| Red Hat:rhel_eus:8.6::baseos | libmicrohttpd-devel | 0 | 1:0.9.59-2.el8_6.1 |
| Red Hat:rhel_eus:8.6::baseos | libmicrohttpd-doc | 0 | 1:0.9.59-2.el8_6.1 |
| Red Hat:rhel_eus:8.6::crb | libmicrohttpd | 0 | 1:0.9.59-2.el8_6.1 |
| Red Hat:rhel_eus:8.6::crb | libmicrohttpd-debuginfo | 0 | 1:0.9.59-2.el8_6.1 |
| Red Hat:rhel_eus:8.6::crb | libmicrohttpd-debugsource | 0 | 1:0.9.59-2.el8_6.1 |
| Red Hat:rhel_eus:8.6::crb | libmicrohttpd-devel | 0 | 1:0.9.59-2.el8_6.1 |
| Red Hat:rhel_eus:8.6::crb | libmicrohttpd-doc | 0 | 1:0.9.59-2.el8_6.1 |
| Red Hat:rhel_eus:8.8::baseos | libmicrohttpd | 0 | 1:0.9.59-2.el8_8.1 |
| Red Hat:rhel_eus:8.8::baseos | libmicrohttpd-debuginfo | 0 | 1:0.9.59-2.el8_8.1 |
| Red Hat:rhel_eus:8.8::baseos | libmicrohttpd-debugsource | 0 | 1:0.9.59-2.el8_8.1 |
| Red Hat:rhel_eus:8.8::baseos | libmicrohttpd-devel | 0 | 1:0.9.59-2.el8_8.1 |
| Red Hat:rhel_eus:8.8::baseos | libmicrohttpd-doc | 0 | 1:0.9.59-2.el8_8.1 |
| Red Hat:rhel_eus:8.8::crb | libmicrohttpd | 0 | 1:0.9.59-2.el8_8.1 |
| Red Hat:rhel_eus:8.8::crb | libmicrohttpd-debuginfo | 0 | 1:0.9.59-2.el8_8.1 |
| Red Hat:rhel_eus:8.8::crb | libmicrohttpd-debugsource | 0 | 1:0.9.59-2.el8_8.1 |
| Red Hat:rhel_eus:8.8::crb | libmicrohttpd-devel | 0 | 1:0.9.59-2.el8_8.1 |
| Red Hat:rhel_eus:8.8::crb | libmicrohttpd-doc | 0 | 1:0.9.59-2.el8_8.1 |
| SUSE:Linux Enterprise Micro 5.1 | libmicrohttpd | 0 | 0.9.57-150000.3.3.1 |
| SUSE:Linux Enterprise Micro 5.2 | libmicrohttpd | 0 | 0.9.57-150000.3.3.1 |
| SUSE:Linux Enterprise Micro 5.3 | libmicrohttpd | 0 | 0.9.57-150000.3.3.1 |
| SUSE:Linux Enterprise Micro 5.4 | libmicrohttpd | 0 | 0.9.57-150000.3.3.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP4 | libmicrohttpd | 0 | 0.9.57-150000.3.3.1 |
| SUSE:Linux Enterprise Module for Desktop Applications 15 SP4 | libmicrohttpd | 0 | 0.9.57-150000.3.3.1 |
| SUSE:Linux Enterprise Real Time 15 SP3 | libmicrohttpd | 0 | 0.9.57-150000.3.3.1 |
| SUSE:Linux Enterprise Server 12 SP5 | libmicrohttpd | 0 | 0.9.30-6.3.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | libmicrohttpd | 0 | 0.9.30-6.3.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | libmicrohttpd | 0 | 0.9.30-6.3.1 |
| Ubuntu:14.04:LTS | libmicrohttpd | 0 | No fix |
| Ubuntu:16.04:LTS | libmicrohttpd | 0 | No fix |
| Ubuntu:18.04:LTS | libmicrohttpd | 0 | No fix |
| Ubuntu:20.04:LTS | libmicrohttpd | 0 | No fix |
| Ubuntu:22.04:LTS | libmicrohttpd | 0 | No fix |
| Ubuntu:24.04:LTS | libmicrohttpd | 0 | No fix |
| Ubuntu:24.10 | libmicrohttpd | 0 | 1.0.0-2.1ubuntu2 |
| Ubuntu:Pro:14.04:LTS | libmicrohttpd | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | libmicrohttpd | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | libmicrohttpd | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | libmicrohttpd | 0 | No fix |
| openSUSE:Leap 15.4 | libmicrohttpd | 0 | 0.9.57-150000.3.3.1 |
| openSUSE:Leap Micro 5.3 | libmicrohttpd | 0 | 0.9.57-150000.3.3.1 |
Related vulnerabilities
- CVE-2026-92824 A flaw was found in libmodulemd. CWE-125
- CVE-2026-114038 A flaw was found in device-mapper-multipath. CWE-125
- CVE-2026-112896 Pillow is a Python imaging library. CWE-125
- CVE-2026-112278 rdesktop through 1.9.0 contains a heap out-of-bounds read vulnerability in… CWE-125
- CVE-2026-112273 libtins through 4.6 contains a heap out-of-bounds read vulnerability in DNS::compose_name… CWE-125
- CVE-2026-112073 A vulnerability was identified in Tencent ncnn up to 44b02dabdcf97499281a4692ebd65bad73dc… CWE-125
- CVE-2026-112020 LodePNG through 20261006 contains a heap out-of-bounds read vulnerability in… CWE-125
- CVE-2026-88842 A flaw was found in BusyBox dpkg. CWE-125