Cloudanix VulnDB

CVE-2023-28322

Low · 3.7

CVSS

3.7

EPSS

2.2%

Published

May 26, 2023

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A bug in curl can cause it to send the wrong data or crash when an application switches between certain types of web requests on a reused connection.

Exploit Available
Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Moderate
Impact
Data Exposure
Component
Library
Class
Information Disclosure
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The flaw causes libcurl to erroneously invoke the CURLOPT_READFUNCTION callback for data during an HTTP POST when CURLOPT_POSTFIELDS is set, if the same handle was previously used for a PUT that relied on the callback, resulting in transmission of incorrect data, use-after-free, or similar memory corruption during handle reuse.

Why it matters to the business

Applications relying on curl for HTTP transfers risk leaking sensitive data or experiencing crashes when reusing handles across PUT and POST operations, potentially leading to compliance violations, interrupted services, or unexpected data exposure in production environments.

How an attack unfolds

An attacker identifies an application that reuses curl handles, first triggering a PUT request that registers a read callback, then forcing a subsequent POST with CURLOPT_POSTFIELDS; the library logic mishandles the transition and either sends attacker-influenced wrong data or triggers memory errors that may disclose information.

How to fix it

Upgrade curl to a build containing commit a9f8fe28481fef7c28d85b4a12a3a35521408eaf or later; rebuild and redeploy all dependent applications; avoid reusing handles across differing request methods until patched.

How to confirm the fix worked

Verify the installed curl version or source contains the referenced commit; test handle reuse scenarios with PUT followed by POST using CURLOPT_POSTFIELDS to confirm correct callback behavior and absence of memory errors.

Typical attack path

  1. Identify target application using libcurl < 8.1.0 with handle reuse patterns
  2. Trigger initial PUT request that sets CURLOPT_READFUNCTION
  3. Cause follow-on POST request that sets CURLOPT_POSTFIELDS on same handle
  4. Observe resulting incorrect data transmission or memory corruption for disclosure or denial of service

How to detect it

Review application logs for unexpected request bodies or memory faults during HTTP transfers; inspect crash dumps or sanitizer reports involving curl handle state transitions; search process traces for repeated use of the same curl handle across differing HTTP methods.

What your security team should do

  • Prioritize upgrade of curl to the fixed commit across all builds and containers
  • Audit applications for curl handle reuse between PUT and POST operations
  • Enable memory safety tooling during testing of HTTP transfer paths
  • Monitor upstream curl releases for any follow-on corrections

The record

An information disclosure vulnerability exists in curl <v8.1.0 when doing HTTP(S) transfers, libcurl might erroneously use the read callback (`CURLOPT_READFUNCTION`) to ask for data to send, even when the `CURLOPT_POSTFIELDS` option has been set, if the same handle previously wasused to issue a `PUT` request which used that callback. This flaw may surprise the application and cause it to misbehave and either send off the wrong data or use memory after free or similar in the second transfer. The problem exists in the logic for a reused handle when it is (expected to be) changed from a PUT to a POST.

Affected packages

Ecosystem Package Introduced Fixed
AlmaLinux:8 curl 0 7.61.1-33.el8_9.5
AlmaLinux:8 libcurl 0 7.61.1-33.el8_9.5
AlmaLinux:8 libcurl-devel 0 7.61.1-33.el8_9.5
AlmaLinux:8 libcurl-minimal 0 7.61.1-33.el8_9.5
AlmaLinux:9 curl 0 7.76.1-23.el9_2.2
AlmaLinux:9 curl-minimal 0 7.76.1-23.el9_2.2
AlmaLinux:9 libcurl 0 7.76.1-23.el9_2.2
AlmaLinux:9 libcurl-devel 0 7.76.1-23.el9_2.2
AlmaLinux:9 libcurl-minimal 0 7.76.1-23.el9_2.2
Alpine:v3.15 curl 0 8.1.0-r0
Alpine:v3.16 curl 0 8.1.0-r0
Alpine:v3.17 curl 0 8.1.0-r0
Alpine:v3.18 curl 0 8.1.0-r0
Alpine:v3.19 curl 0 8.1.0-r0
Alpine:v3.20 curl 0 8.1.0-r0
Alpine:v3.21 curl 0 8.1.0-r0
Alpine:v3.22 curl 0 8.1.0-r0
Debian:10 curl 0 7.64.0-4+deb10u8
Debian:11 curl 0 7.74.0-1.3+deb11u9
Debian:12 curl 0 7.88.1-10
Debian:13 curl 0 7.88.1-10
Mageia:8 curl 0 7.74.0-1.13.mga8
Mageia:9 curl 0 7.88.1-3.1.mga9
Red Hat:enterprise_linux:8::baseos curl 0 0:7.61.1-33.el8_9.5
Red Hat:enterprise_linux:8::baseos curl-debuginfo 0 0:7.61.1-33.el8_9.5
Red Hat:enterprise_linux:8::baseos curl-debugsource 0 0:7.61.1-33.el8_9.5
Red Hat:enterprise_linux:8::baseos curl-minimal-debuginfo 0 0:7.61.1-33.el8_9.5
Red Hat:enterprise_linux:8::baseos libcurl 0 0:7.61.1-33.el8_9.5
Red Hat:enterprise_linux:8::baseos libcurl-debuginfo 0 0:7.61.1-33.el8_9.5
Red Hat:enterprise_linux:8::baseos libcurl-devel 0 0:7.61.1-33.el8_9.5
Red Hat:enterprise_linux:8::baseos libcurl-minimal 0 0:7.61.1-33.el8_9.5
Red Hat:enterprise_linux:8::baseos libcurl-minimal-debuginfo 0 0:7.61.1-33.el8_9.5
Red Hat:enterprise_linux:9::appstream curl 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::appstream curl-debuginfo 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::appstream curl-debugsource 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::appstream curl-minimal 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::appstream curl-minimal-debuginfo 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::appstream libcurl 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::appstream libcurl-debuginfo 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::appstream libcurl-devel 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::appstream libcurl-minimal 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::appstream libcurl-minimal-debuginfo 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::baseos curl 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::baseos curl-debuginfo 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::baseos curl-debugsource 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::baseos curl-minimal 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::baseos curl-minimal-debuginfo 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::baseos libcurl 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::baseos libcurl-debuginfo 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::baseos libcurl-devel 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::baseos libcurl-minimal 0 0:7.76.1-23.el9_2.2
Red Hat:enterprise_linux:9::baseos libcurl-minimal-debuginfo 0 0:7.76.1-23.el9_2.2
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr 0 0:1.7.0-8.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-debuginfo 0 0:1.7.0-8.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-devel 0 0:1.7.0-8.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-curl 0 0:8.2.1-1.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-curl-debuginfo 0 0:8.2.1-1.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd 0 0:2.4.57-5.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd-debuginfo 0 0:2.4.57-5.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd-devel 0 0:2.4.57-5.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd-manual 0 0:2.4.57-5.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd-selinux 0 0:2.4.57-5.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd-tools 0 0:2.4.57-5.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-libcurl 0 0:8.2.1-1.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-libcurl-devel 0 0:8.2.1-1.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-mod_ldap 0 0:2.4.57-5.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-mod_proxy_html 0 1:2.4.57-5.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-mod_security 0 0:2.9.3-29.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-mod_security-debuginfo 0 0:2.9.3-29.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-mod_session 0 0:2.4.57-5.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-mod_ssl 0 1:2.4.57-5.el7jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr 0 0:1.7.0-8.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-debuginfo 0 0:1.7.0-8.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-devel 0 0:1.7.0-8.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-curl 0 0:8.2.1-1.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-curl-debuginfo 0 0:8.2.1-1.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-debuginfo 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-devel 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-manual 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-selinux 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-tools 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-tools-debuginfo 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-libcurl 0 0:8.2.1-1.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-libcurl-debuginfo 0 0:8.2.1-1.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-libcurl-devel 0 0:8.2.1-1.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_ldap 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_ldap-debuginfo 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_proxy_html 0 1:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_proxy_html-debuginfo 0 1:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_security 0 0:2.9.3-29.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_security-debuginfo 0 0:2.9.3-29.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_session 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_session-debuginfo 0 0:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_ssl 0 1:2.4.57-5.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_ssl-debuginfo 0 1:2.4.57-5.el8jbcs
Red Hat:rhel_eus:8.6::baseos curl 0 0:7.61.1-22.el8_6.12
Red Hat:rhel_eus:8.6::baseos curl-debuginfo 0 0:7.61.1-22.el8_6.12
Red Hat:rhel_eus:8.6::baseos curl-debugsource 0 0:7.61.1-22.el8_6.12
Red Hat:rhel_eus:8.6::baseos curl-minimal-debuginfo 0 0:7.61.1-22.el8_6.12
Red Hat:rhel_eus:8.6::baseos libcurl 0 0:7.61.1-22.el8_6.12
Red Hat:rhel_eus:8.6::baseos libcurl-debuginfo 0 0:7.61.1-22.el8_6.12
Red Hat:rhel_eus:8.6::baseos libcurl-devel 0 0:7.61.1-22.el8_6.12
Red Hat:rhel_eus:8.6::baseos libcurl-minimal 0 0:7.61.1-22.el8_6.12
Red Hat:rhel_eus:8.6::baseos libcurl-minimal-debuginfo 0 0:7.61.1-22.el8_6.12
Red Hat:rhel_eus:8.8::baseos curl 0 0:7.61.1-30.el8_8.9
Red Hat:rhel_eus:8.8::baseos curl-debuginfo 0 0:7.61.1-30.el8_8.9
Red Hat:rhel_eus:8.8::baseos curl-debugsource 0 0:7.61.1-30.el8_8.9
Red Hat:rhel_eus:8.8::baseos curl-minimal-debuginfo 0 0:7.61.1-30.el8_8.9
Red Hat:rhel_eus:8.8::baseos libcurl 0 0:7.61.1-30.el8_8.9
Red Hat:rhel_eus:8.8::baseos libcurl-debuginfo 0 0:7.61.1-30.el8_8.9
Red Hat:rhel_eus:8.8::baseos libcurl-devel 0 0:7.61.1-30.el8_8.9
Red Hat:rhel_eus:8.8::baseos libcurl-minimal 0 0:7.61.1-30.el8_8.9
Red Hat:rhel_eus:8.8::baseos libcurl-minimal-debuginfo 0 0:7.61.1-30.el8_8.9
Red Hat:rhel_eus:9.0::appstream curl 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::appstream curl-debuginfo 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::appstream curl-debugsource 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::appstream curl-minimal 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::appstream curl-minimal-debuginfo 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::appstream libcurl 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::appstream libcurl-debuginfo 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::appstream libcurl-devel 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::appstream libcurl-minimal 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::appstream libcurl-minimal-debuginfo 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::baseos curl 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::baseos curl-debuginfo 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::baseos curl-debugsource 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::baseos curl-minimal 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::baseos curl-minimal-debuginfo 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::baseos libcurl 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::baseos libcurl-debuginfo 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::baseos libcurl-devel 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::baseos libcurl-minimal 0 0:7.76.1-14.el9_0.7
Red Hat:rhel_eus:9.0::baseos libcurl-minimal-debuginfo 0 0:7.76.1-14.el9_0.7
Rocky Linux:8 curl 0 0:7.61.1-33.el8_9.5
SUSE:Enterprise Storage 6 curl 0 7.60.0-150000.51.1
SUSE:Enterprise Storage 7 curl 0 7.66.0-150200.4.57.1
SUSE:Enterprise Storage 7.1 curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS curl 0 7.60.0-150000.51.1
SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise High Performance Computing 15 SP3-ESPOS curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise Micro 5.1 curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise Micro 5.2 curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise Micro 5.3 curl 0 8.0.1-150400.5.23.1
SUSE:Linux Enterprise Micro 5.4 curl 0 8.0.1-150400.5.23.1
SUSE:Linux Enterprise Module for Basesystem 15 SP4 curl 0 8.0.1-150400.5.23.1
SUSE:Linux Enterprise Real Time 15 SP3 curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise Server 12 SP2-BCL curl 0 7.37.0-37.98.1
SUSE:Linux Enterprise Server 12 SP4-ESPOS curl 0 7.60.0-4.56.1
SUSE:Linux Enterprise Server 12 SP4-LTSS curl 0 7.60.0-4.56.1
SUSE:Linux Enterprise Server 12 SP5 curl 0 8.0.1-11.65.2
SUSE:Linux Enterprise Server 15 SP1-LTSS curl 0 7.60.0-150000.51.1
SUSE:Linux Enterprise Server 15 SP2-LTSS curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise Server 15 SP3-LTSS curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP4 curl 0 7.60.0-4.56.1
SUSE:Linux Enterprise Server for SAP Applications 12 SP5 curl 0 8.0.1-11.65.2
SUSE:Linux Enterprise Server for SAP Applications 15 SP1 curl 0 7.60.0-150000.51.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP2 curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP3 curl 0 7.66.0-150200.4.57.1
SUSE:Linux Enterprise Software Development Kit 12 SP5 curl 0 8.0.1-11.65.2
SUSE:Manager Proxy 4.2 curl 0 7.66.0-150200.4.57.1
SUSE:Manager Server 4.2 curl 0 7.66.0-150200.4.57.1
SUSE:OpenStack Cloud 9 curl 0 7.60.0-4.56.1
SUSE:OpenStack Cloud Crowbar 9 curl 0 7.60.0-4.56.1
Ubuntu:20.04:LTS curl 0 7.68.0-1ubuntu2.19
Ubuntu:22.04:LTS curl 0 7.81.0-1ubuntu1.11
Ubuntu:Pro:14.04:LTS curl 0 7.35.0-1ubuntu2.20+esm16
Ubuntu:Pro:16.04:LTS curl 0 7.47.0-1ubuntu2.19+esm9
Ubuntu:Pro:18.04:LTS curl 0 7.58.0-2ubuntu3.24+esm1
openSUSE:Leap 15.4 curl 0 8.0.1-150400.5.23.1
openSUSE:Leap 15.5 curl 0 8.0.1-150400.5.23.1
openSUSE:Leap Micro 5.3 curl 0 8.0.1-150400.5.23.1
openSUSE:Tumbleweed curl 0 8.1.0-1.1

Related vulnerabilities