Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
FREEDOM251

Freedom251 › Blog › curl

How to Check Your curl and libcurl Versions for HTTP/2 Upload Vulnerabilities (CVE-2026-92392)

By Freedom251 Team · · 8 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Run curl --version (or curl -V) and read the first line. If the reported curl/libcurl release is in the advisory’s affected 8.12.0–8.22.0 range, move to curl/libcurl 8.23.0 or install a vendor package that explicitly contains the CVE-2026-92392 fix. The advisory also lists fixed maintenance releases 8.14.3, 8.16.2 and 8.20.2.

That check covers only the executable and library used by that particular curl command. Applications can embed or dynamically load a different libcurl, so services, automation, language runtimes and bundled software must be checked separately.

As an Amazon Associate I earn from qualifying purchases.

What CVE-2026-92392 affects

Project curl published the CVE-2026-92392 advisory on October 14, 2026. It describes an HTTP/2 upload flaw: "During an upload, curl mishandles HTTP/2 RST_STREAM received from the server (with reason HTTP_1_1_REQUIRED or REFUSED_STREAM) leading to a use after free of a struct Curl_easy object." The issue is classified as CWE-416 and rated High. The command-line curl tool is affected as well as libcurl.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A use-after-free means code can continue to access an object after its memory has been released. The practical risk depends on how the transfer is triggered and on the process using libcurl. The advisory says turning this bug into remote code execution requires a particular combination of known version and architecture details, allocator and TLS behavior, heap layout, parallel-transfer timing, memory leaks and offsets, plus a short-command constraint. Those conditions make exploitability environment-dependent, but they do not make an affected installation safe to leave unpatched.

Which versions are vulnerable or fixed?

The advisory identifies curl/libcurl 8.12.0 through 8.22.0 as the affected range. It also lists maintenance releases that contain the fix on older branches. Use the exact version and the vendor’s security notice together rather than treating every number in the broad range identically.

Version or release line Status for CVE-2026-92392 What to do
Before 8.12.0 Not affected by this advisory Continue normal update and security-maintenance practices.
8.12.0 through 8.22.0 Advisory-affected range, except where a listed maintenance release contains the fix Upgrade to 8.23.0 or to a vendor build with the fix.
8.14.3 Fixed maintenance release in the 8.14.x branch Confirm that your package is the fixed vendor build, then keep it maintained.
8.16.2 Fixed maintenance release in the 8.16.x branch Confirm that your package is the fixed vendor build, then keep it maintained.
8.20.2 Fixed maintenance release in the 8.20.x branch Confirm that your package is the fixed vendor build, then keep it maintained.
8.23.0 and newer Not affected by this advisory Use the current supported release supplied for your platform.

Project curl’s release list records curl 8.23.0 on October 14, 2026. Curl and libcurl are separately versioned projects, but they normally track one another closely. A version uses the form X.Y.Z: X is the main version, Y the release number and Z the patch number.

Check the curl executable you actually run

Use the full version report

  1. Open a shell on the machine that performs the upload.
  2. Run curl --version. The equivalent short form is curl -V.
  3. Read the first line. It normally contains both the command-line tool version and the linked libcurl version, for example curl 8.23.0 (...) libcurl/8.23.0 ....
  4. Record the complete output in your asset or incident notes, including the operating-system and feature information shown after the version numbers.

Do not rely on a graphical application’s “About” screen or on a package name alone when the transfer is performed by a script. The command you run may resolve to a different binary from the one used by a scheduled job, service account or container.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Find the executable path

Several curl copies can coexist. Identify the one your shell resolves before deciding that a machine is covered:

  • Unix-like systems: run command -v curl.
  • Windows: run where curl.

Run the version command using that path if necessary. For example, if the result points to a non-default directory, invoke that exact executable and save its output. Then repeat the check for automation accounts, containers, build agents and any other host that uploads over HTTP/2.

Check a development installation

Use curl-config

Source builds and development packages commonly provide curl-config. Run:

curl-config --version

This reports the libcurl version associated with that development installation. It is useful when a compiler, build system or language extension is linking against headers and libraries that are not the same files used by the interactive curl command.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Inspect curl/curlver.h when needed

Header-based builds can be checked in curl/curlver.h. Look for the LIBCURL_VERSION_NUM definition. Curl documents that value as 0xXXYYZZ, with hexadecimal fields representing the major, minor and patch numbers; newer releases have larger values.

For example, do not compare the hexadecimal value as if it were a decimal version string. Decode the major, minor and patch fields, then compare the resulting X.Y.Z release with the advisory’s range and fixed releases. Keep the header and the library matched: a new header does not prove that the running application loaded a new shared library.

Find the libcurl used by an application

An application may embed libcurl, dynamically load it from a non-default location or statically link it into its own executable. In each case, the presence of a safe system curl command does not prove that the application is safe.

Start with the application’s dependency information

  1. Identify every program that uploads through HTTP/2, including services, agents, scripts, desktop software, language runtimes and vendor appliances.
  2. Read the application’s dependency report, build manifest or installation metadata to identify whether it uses libcurl.
  3. Use the operating system’s package metadata to determine which libcurl package and release supplied the library.
  4. If the program loads a shared library at runtime, verify the actual library path used by the process rather than checking only the package installed in the default location.
  5. If the program is statically linked or bundles its own copy, inspect the application’s release notes, security bulletin or rebuild information. Updating the system package may not change the bundled copy.

There is no single package command that works across every operating system and vendor. Package names, library paths and dependency-reporting tools differ, so use the metadata and diagnostics provided by that platform and application. The result you need is the libcurl version in the process that performs the upload.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check more than one runtime environment

Production systems often contain multiple copies: a host installation, a container image, a CI runner, a language package, and a statically linked utility. Check each environment separately. A scheduled job may use a hard-coded path, a service may run in a restricted filesystem, and a container may carry an older library even after the host is updated.

How to interpret the result

A clearly safe upstream version

If the checked component is 8.23.0 or newer, it is outside the advisory’s affected range. Keep the output and package source recorded so another team can distinguish this copy from other installations.

An affected version

If the component is 8.12.0 through 8.22.0 and is not one of the advisory-listed fixed maintenance releases, treat it as affected. Do not wait for evidence that an attacker has reached the vulnerable code path. Schedule the update according to your incident-response process, with priority for systems accepting uploads from untrusted or externally controlled servers.

A maintenance release named by the advisory

Versions 8.14.3, 8.16.2 and 8.20.2 are specifically listed as fixed branch releases. Confirm that the installed package really corresponds to that fixed release and that the application is loading it. Vendor distributions sometimes apply security fixes while presenting distribution-specific package revisions, so consult the vendor’s security metadata in addition to the upstream version string.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A vendor package with an unfamiliar version

A vendor may backport the fix without adopting the latest upstream version number. In that situation, use the vendor’s security bulletin or package changelog to verify that CVE-2026-92392 is fixed. If the vendor does not state the fix status, do not assume that an unfamiliar revision is safe merely because it looks newer or has a distribution suffix.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Remediation options

1. Upgrade to 8.23.0 or a fixed vendor build

The preferred action is to update curl and libcurl to 8.23.0, or to install a vendor package that explicitly contains the CVE-2026-92392 correction. Update both the command-line tool and the library where both are installed. Restart services that load libcurl so they release the old library and load the updated one.

After the package operation, repeat the version check from the same account, path and runtime environment used by the upload. A package manager reporting success is not enough if a service still points to an older bundled library.

2. Apply the official patch to a source build

If an immediate package upgrade is not operationally possible, apply the official curl patch to the source build where your organization can build, test and deploy it safely. Record the source revision, compiler build and resulting libcurl version. Rebuild every application that statically links the library; replacing a shared package cannot update code that contains its own copy.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Avoid HTTP/2 as a temporary mitigation

The advisory recommends avoiding HTTP/2 until remediation is available. Configure the affected upload path to use HTTP/1.1 where the client and server support that choice. This is a stopgap, not a replacement for updating: it removes the protocol path that triggers this flaw but leaves vulnerable code installed and may not be practical for every application or endpoint.

Best Value
Sale
UNIX and Linux System Administration Handbook, 4th Edition
  • New
  • Mint Condition
  • Dispatch same day for order received before 12 noon
  • Guaranteed packaging
  • No quibbles returns

Test the fallback before relying on it. Confirm that uploads still complete, authentication and proxy behavior remain correct, and no other component silently renegotiates HTTP/2. Keep the mitigation documented with an owner and an expiration date.

Verify that remediation took effect

  1. Run curl --version and curl-config --version again where applicable.
  2. Record the executable path with command -v curl or where curl.
  3. Check the application’s dependency report and the actual library package or bundle it loads.
  4. Restart long-running services, workers and agents that may have loaded the old libcurl before the update.
  5. Confirm that containers, build artifacts and deployment images were rebuilt rather than merely updating the host.
  6. Exercise a representative upload in a test environment and verify that the intended HTTP protocol is being used.
  7. Remove the temporary HTTP/1.1-only setting once every affected component has been fixed and the change has been validated.

Common checking mistakes

  • Checking only one machine: the vulnerable copy may be inside a container, appliance, build worker or separate service account.
  • Checking only the shell tool: an application can use a different embedded or dynamically loaded libcurl.
  • Assuming a newer-looking package is fixed: verify CVE-2026-92392 in the vendor’s security metadata, especially for backported packages.
  • Forgetting process restarts: a running service can continue using the old shared library after files on disk are replaced.
  • Treating HTTP/1.1 fallback as a permanent fix: protocol avoidance is only a temporary mitigation until the library is patched.
  • Comparing version text incorrectly: compare major, minor and patch components as a version, and interpret LIBCURL_VERSION_NUM as hexadecimal fields.

A practical inventory record

For each installation, capture the host or image identifier, application name, executable or library path, curl version, libcurl version, package or bundle source, whether the process uploads over HTTP/2, remediation status and the person responsible for the update. Include the check date, because a later deployment can reintroduce an older library.

This inventory lets you distinguish a safe interactive curl command from an affected service and gives operations teams a concrete list to recheck after image rebuilds, software upgrades and vendor advisories.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What to remember

CVE-2026-92392 is an HTTP/2 upload use-after-free in curl/libcurl. Start with curl --version, identify the exact executable, and then inspect every application that may use another libcurl. Treat unpatched 8.12.0–8.22.0 installations as affected, use 8.23.0 or a vendor build containing the fix, and use HTTP/1.1 only as a temporary measure when an immediate update is impossible.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

curlCVE-2026-92392cybersecurityHTTP/2libcurlLinuxWindows

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.