Cloudanix VulnDB

CVE-2023-27371

Medium · 5.9

CVSS

5.9

EPSS

1.3%

Published

Feb 28, 2023

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

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.

Exploit Available
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

  1. Scan for or identify hosts exposing services built with vulnerable GNU libmicrohttpd
  2. Craft a malicious multipart/form-data POST request embedding null bytes in the boundary parameter
  3. Send the request to the target endpoint
  4. 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