Cloudanix VulnDB

CVE-2022-43551

High · 7.5

CVSS

7.5

EPSS

16.6%

Published

Dec 23, 2022

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A common tool used to move data between computers could be tricked into sending information over an insecure connection instead of a protected one, raising the chance that someone could read data they should not.

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

What it actually does

The HSTS mechanism in curl can be bypassed when a hostname in a URL uses IDN characters (such as UTF-8 U+3002) that normalize to ASCII equivalents during conversion; the HSTS state is stored under the IDN form but subsequent lookups use the decoded ASCII form, causing curl to fall back to clear-text HTTP instead of enforcing HTTPS.

Why it matters to the business

Organizations relying on curl for secure data transfers face an elevated risk of sensitive information exposure over unencrypted channels, potentially leading to compliance violations and loss of confidentiality, especially given the widespread use of the library and availability of public exploits despite the issue being over three years old.

How an attack unfolds

An attacker crafts a URL containing an IDN-encoded hostname with a non-ASCII full stop character and supplies it to an application using a vulnerable curl version; curl performs IDN conversion, stores any HSTS entry under the encoded form, fails to match the decoded hostname on the next request, and transmits data in plaintext over HTTP, which can be intercepted.

How to fix it

Upgrade curl to a version containing commit c12fb3ddaf48e709a7a4deaa55ec485e4df163ee (corresponding to curl 7.87.0 or later) across all affected installations and rebuild any dependent applications or packages that statically link curl.

How to confirm the fix worked

Confirm the installed curl binary or library reports version 7.87.0 or newer, or verify the presence of commit c12fb3ddaf48e709a7a4deaa55ec485e4df163ee in the source tree; test with crafted IDN URLs to ensure HSTS enforcement now occurs.

Typical attack path

  1. Craft a URL using an IDN hostname with a UTF-8 IDEOGRAPHIC FULL STOP (U+3002) instead of ASCII dot
  2. Supply the URL to a client or script that invokes vulnerable curl for the transfer
  3. Trigger an initial request so curl stores HSTS state under the IDN-encoded hostname
  4. Issue a follow-up request with the equivalent ASCII hostname to bypass HSTS lookup
  5. Observe or intercept the resulting clear-text HTTP transfer

How to detect it

Review application logs for curl transfers involving hostnames that contain non-ASCII characters or that unexpectedly use HTTP when HTTPS was expected; examine network traffic for plaintext HTTP requests to domains that should have been protected by HSTS entries.

What your security team should do

  • Prioritize patching curl in all environments within standard maintenance windows given the public exploit availability
  • Inventory internal and third-party software that embeds or calls curl and schedule upgrades using the exact fixed commit reference
  • Update build pipelines and dependency manifests to enforce minimum curl version 7.87.0
  • Monitor upstream curl release notes for any related follow-on fixes

The record

A vulnerability exists in curl <7.87.0 HSTS check that could be bypassed to trick it to keep using HTTP. Using its HSTS support, curl can be instructed to use HTTPS instead of using an insecure clear-text HTTP step even when HTTP is provided in the URL. However, the HSTS mechanism could be bypassed if the host name in the given URL first uses IDN characters that get replaced to ASCII counterparts as part of the IDN conversion. Like using the character UTF-8 U+3002 (IDEOGRAPHIC FULL STOP) instead of the common ASCII full stop (U+002E) `.`. Then in a subsequent request, it does not detect the HSTS state and makes a clear text transfer. Because it would store the info IDN encoded but look for it IDN decoded.

Affected packages

Ecosystem Package Introduced Fixed
Alpine:v3.14 curl 0 7.79.1-r4
Alpine:v3.15 curl 0 7.80.0-r5
Alpine:v3.16 curl 0 7.83.1-r5
Alpine:v3.17 curl 0 7.87.0-r0
Alpine:v3.18 curl 0 7.87.0-r0
Alpine:v3.19 curl 0 7.87.0-r0
Alpine:v3.20 curl 0 7.87.0-r0
Alpine:v3.21 curl 0 7.87.0-r0
Alpine:v3.22 curl 0 7.87.0-r0
Chainguard curl 0 7.87.0-r0
Chainguard curl-dev 0 7.87.0-r0
Chainguard curl-doc 0 7.87.0-r0
Chainguard curl-oci-entrypoint 0 7.87.0-r0
Chainguard curl-static 0 7.87.0-r0
Chainguard libcurl-openssl4 0 7.87.0-r0
Chainguard libcurl4 0 7.87.0-r0
Debian:11 curl 0 No fix
Debian:12 curl 0 7.86.0-3
Debian:13 curl 0 7.86.0-3
Mageia:8 curl 0 7.74.0-1.10.mga8
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-util 0 0:1.6.1-101.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-util-debuginfo 0 0:1.6.1-101.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-util-devel 0 0:1.6.1-101.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-util-ldap 0 0:1.6.1-101.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-util-mysql 0 0:1.6.1-101.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-util-nss 0 0:1.6.1-101.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-util-odbc 0 0:1.6.1-101.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-util-openssl 0 0:1.6.1-101.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-util-pgsql 0 0:1.6.1-101.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-apr-util-sqlite 0 0:1.6.1-101.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-curl 0 0:8.0.1-1.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-curl-debuginfo 0 0:8.0.1-1.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd 0 0:2.4.51-39.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd-debuginfo 0 0:2.4.51-39.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd-devel 0 0:2.4.51-39.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd-manual 0 0:2.4.51-39.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd-selinux 0 0:2.4.51-39.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-httpd-tools 0 0:2.4.51-39.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-libcurl 0 0:8.0.1-1.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-libcurl-devel 0 0:8.0.1-1.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-mod_ldap 0 0:2.4.51-39.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-mod_proxy_html 0 1:2.4.51-39.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-mod_session 0 0:2.4.51-39.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-mod_ssl 0 1:2.4.51-39.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-openssl 0 1:1.1.1k-14.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-openssl-debuginfo 0 1:1.1.1k-14.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-openssl-devel 0 1:1.1.1k-14.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-openssl-libs 0 1:1.1.1k-14.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-openssl-perl 0 1:1.1.1k-14.el7jbcs
Red Hat:jboss_core_services:1::el7 jbcs-httpd24-openssl-static 0 1:1.1.1k-14.el7jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-debuginfo 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-devel 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-ldap 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-ldap-debuginfo 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-mysql 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-mysql-debuginfo 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-nss 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-nss-debuginfo 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-odbc 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-odbc-debuginfo 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-openssl 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-openssl-debuginfo 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-pgsql 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-pgsql-debuginfo 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-sqlite 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-apr-util-sqlite-debuginfo 0 0:1.6.1-101.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-curl 0 0:8.0.1-1.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-curl-debuginfo 0 0:8.0.1-1.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-debuginfo 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-devel 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-manual 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-selinux 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-tools 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-httpd-tools-debuginfo 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-libcurl 0 0:8.0.1-1.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-libcurl-debuginfo 0 0:8.0.1-1.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-libcurl-devel 0 0:8.0.1-1.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_ldap 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_ldap-debuginfo 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_proxy_html 0 1:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_proxy_html-debuginfo 0 1:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_session 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_session-debuginfo 0 0:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_ssl 0 1:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-mod_ssl-debuginfo 0 1:2.4.51-39.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-openssl 0 1:1.1.1k-14.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-openssl-debuginfo 0 1:1.1.1k-14.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-openssl-devel 0 1:1.1.1k-14.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-openssl-libs 0 1:1.1.1k-14.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-openssl-libs-debuginfo 0 1:1.1.1k-14.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-openssl-perl 0 1:1.1.1k-14.el8jbcs
Red Hat:jboss_core_services:1::el8 jbcs-httpd24-openssl-static 0 1:1.1.1k-14.el8jbcs
SUSE:Linux Enterprise Micro 5.3 curl 0 7.79.1-150400.5.12.1
SUSE:Linux Enterprise Module for Basesystem 15 SP4 curl 0 7.79.1-150400.5.12.1
Ubuntu:18.04:LTS curl 0 7.58.0-2ubuntu3.21
Ubuntu:18.04:LTS curl 0 7.58.0-2ubuntu3.22
Ubuntu:20.04:LTS curl 0 7.68.0-1ubuntu2.14
Ubuntu:20.04:LTS curl 0 7.68.0-1ubuntu2.15
Ubuntu:22.04:LTS curl 0 7.81.0-1ubuntu1.7
Wolfi curl 0 7.87.0-r0
Wolfi curl-dev 0 7.87.0-r0
Wolfi curl-doc 0 7.87.0-r0
Wolfi curl-oci-entrypoint 0 7.87.0-r0
Wolfi curl-static 0 7.87.0-r0
Wolfi libcurl-openssl4 0 7.87.0-r0
Wolfi libcurl4 0 7.87.0-r0
openSUSE:Leap 15.4 curl 0 7.79.1-150400.5.12.1
openSUSE:Leap Micro 5.3 curl 0 7.79.1-150400.5.12.1
openSUSE:Tumbleweed curl 0 7.87.0-1.1

Related vulnerabilities