CVE-2023-27536 Overview
An authentication bypass vulnerability exists in libcurl versions prior to 8.0.0 that affects the connection reuse feature. The flaw allows previously established connections to be reused with incorrect user permissions due to a failure to check for changes in the CURLOPT_GSSAPI_DELEGATION option. This vulnerability specifically impacts krb5/kerberos/negotiate/GSSAPI transfers and could potentially result in unauthorized access to sensitive information.
Critical Impact
Applications using libcurl with Kerberos/GSSAPI authentication may inadvertently reuse connections with stale delegation settings, potentially exposing sensitive data to unauthorized parties.
Affected Products
- Haxx libcurl (versions prior to 8.0.0)
- Fedora Project Fedora 36
- Debian Linux 10.0
- NetApp Active IQ Unified Manager for VMware vSphere
- NetApp H300S, H500S, H700S, H410S Firmware
- NetApp ONTAP 9
- Splunk Universal Forwarder
Discovery Timeline
- 2023-03-30 - CVE-2023-27536 published to NVD
- 2025-02-14 - Last updated in NVD database
Technical Details for CVE-2023-27536
Vulnerability Analysis
This authentication bypass vulnerability stems from improper handling of the CURLOPT_GSSAPI_DELEGATION option when libcurl's connection reuse mechanism is active. When an application modifies the GSSAPI delegation settings between requests, libcurl fails to recognize this change and may reuse an existing connection that was established with different delegation permissions.
In Kerberos authentication scenarios, GSSAPI delegation controls whether the client's credentials can be forwarded to the server. The delegation setting determines the level of trust and access rights granted to the remote service. When this option changes but the connection persists with the original settings, it creates a security boundary violation.
The vulnerability is classified under CWE-305 (Authentication Bypass by Primary Weakness) and CWE-287 (Improper Authentication), reflecting the core issue of credential handling during connection lifecycle management.
Root Cause
The root cause lies in libcurl's connection pooling logic, which did not properly compare the CURLOPT_GSSAPI_DELEGATION setting when determining whether an existing connection could be reused. The connection matching algorithm evaluated other authentication parameters but overlooked changes to the GSSAPI delegation flag, allowing a connection established with one delegation policy to be reused after the application explicitly requested a different policy.
Attack Vector
This vulnerability requires a network-based attack vector. An attacker would need to be in a position to benefit from the improper delegation settings. The attack scenario involves an application that legitimately changes its GSSAPI delegation settings between requests—expecting the second request to use different credentials or permissions than the first.
In practical terms, this could occur when:
- An application makes an initial request with full credential delegation enabled
- The application then changes CURLOPT_GSSAPI_DELEGATION to disable or restrict delegation for security reasons
- Due to connection reuse, the second request continues using the original connection with full delegation still active
- Any service receiving this request could inappropriately receive delegated credentials
The safest mitigation is to not reuse connections if the CURLOPT_GSSAPI_DELEGATION option has been changed. Alternatively, upgrading to libcurl 8.0.0 or later resolves this issue entirely.
Detection Methods for CVE-2023-27536
Indicators of Compromise
- Unexpected Kerberos ticket forwarding observed in authentication logs
- GSSAPI delegation occurring when application configuration indicates it should be disabled
- Connection reuse patterns in curl-based applications using Kerberos authentication
- Anomalous credential delegation events in Kerberos KDC logs
Detection Strategies
- Monitor applications using libcurl with Kerberos/GSSAPI authentication for version compliance
- Audit systems for libcurl versions prior to 8.0.0 using package management queries
- Review application code for usage patterns involving CURLOPT_GSSAPI_DELEGATION changes between requests
- Implement network monitoring for unexpected credential delegation in Kerberos environments
Monitoring Recommendations
- Enable verbose logging in applications using libcurl to track connection reuse behavior
- Monitor Kerberos authentication logs for delegation events that don't match expected application behavior
- Establish baseline patterns for GSSAPI authentication flows to detect anomalies
- Correlate application-level curl configuration changes with network authentication events
How to Mitigate CVE-2023-27536
Immediate Actions Required
- Upgrade libcurl to version 8.0.0 or later across all affected systems
- Audit applications for usage of CURLOPT_GSSAPI_DELEGATION option with connection reuse
- Disable connection reuse in applications that modify GSSAPI delegation settings between requests
- Review and update dependent packages including Splunk Universal Forwarder and NetApp products
Patch Information
The vulnerability was addressed in libcurl version 8.0.0. Organizations should upgrade to this version or later to fully remediate the issue. For systems where immediate upgrade is not possible, vendor-specific patches are available from multiple sources:
- Debian LTS Announcement April 2023
- Fedora Package Announcement
- Gentoo GLSA 2023-10-12
- NetApp Security Advisory NTAP-20230420-0010
The original vulnerability report can be found at HackerOne Report #1895135.
Workarounds
- Set CURLOPT_FRESH_CONNECT to force new connections when GSSAPI delegation settings change
- Explicitly close and recreate curl handles after modifying CURLOPT_GSSAPI_DELEGATION
- Disable connection pooling entirely in security-sensitive applications using CURLOPT_FORBID_REUSE
- Implement application-level connection management that tracks delegation state changes
# Configuration example - Disable connection reuse in curl
# When using command-line curl with Kerberos authentication
curl --no-keepalive --negotiate -u : https://example.com/resource
# In application code, set these options after changing GSSAPI delegation:
# CURLOPT_FRESH_CONNECT = 1 (force new connection)
# CURLOPT_FORBID_REUSE = 1 (prevent connection pooling)
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

