CVE-2025-66577
cpp-httplib Untrusted HTTP Header Handling: X-Forwarded-For/X-Real-IP Trust
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.3
cpp-httplib Untrusted HTTP Header Handling: X-Forwarded-For/X-Real-IP Trust
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.
- Record
CVE-2025-66577- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Weakness
- CWE-117, CWE-807
- Updated
- 2026-11-02
EUVDEUVD-2025-201454
5.3
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.
- Record
EUVD-2025-201454- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Updated
- 2026-11-02
NVD
5.3
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.
- Record
CVE-2025-66577- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Weakness
- CWE-117, CWE-807
- Updated
- 2026-11-02
OSV
5.3
cpp-httplib Untrusted HTTP Header Handling: X-Forwarded-For/X-Real-IP Trust
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.
- Record
CVE-2025-66577- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Weakness
- CWE-117, CWE-807
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2025-66577
5.3
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.
- Record
DEBIAN-CVE-2025-66577- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Updated
- 2026-11-02
OSVOESA-2025-2854
10.0
cpp-httplib security update
A C++11 single-file header-only cross platform HTTP/HTTPS library. It's extremely easy to setup. Just include httplib.h file in your code!
Security Fix(es):
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can inject headers named REMOTE_ADDR, REMOTE_PORT, LOCAL_ADDR, LOCAL_PORT that are parsed into the request header multimap via read_headers() in httplib.h (headers.emplace), then the server later appends its own internal metadata using the same header names in Server::process_request without erasing duplicates. Because Request::get_header_value returns the first entry for a header key (id == 0) and the client-supplied headers are parsed before server-inserted headers, downstream code that uses these header names may inadvertently use attacker-controlled values. Affected files/locations: cpp-httplib/httplib.h (read_headers, Server::process_request, Request::get_header_value, get_header_value_u64) and cpp-httplib/docker/main.cc (get_client_ip, nginx_access_logger, nginx_error_logger). Attack surface: attacker-controlled HTTP headers in incoming requests flow into the Request.headers multimap and into logging code that reads forwarded headers, enabling IP spoofing, log poisoning, and authorization bypass via header shadowing. This vulnerability is fixed in 0.27.0.(CVE-2025-66570)
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.(CVE-2025-66577)
- Record
OESA-2025-2854- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Updated
- 2026-11-02
Show 8 moreShow less
OSVOESA-2025-2855
10.0
cpp-httplib security update
A C++11 single-file header-only cross platform HTTP/HTTPS library. It's extremely easy to setup. Just include httplib.h file in your code!
Security Fix(es):
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can inject headers named REMOTE_ADDR, REMOTE_PORT, LOCAL_ADDR, LOCAL_PORT that are parsed into the request header multimap via read_headers() in httplib.h (headers.emplace), then the server later appends its own internal metadata using the same header names in Server::process_request without erasing duplicates. Because Request::get_header_value returns the first entry for a header key (id == 0) and the client-supplied headers are parsed before server-inserted headers, downstream code that uses these header names may inadvertently use attacker-controlled values. Affected files/locations: cpp-httplib/httplib.h (read_headers, Server::process_request, Request::get_header_value, get_header_value_u64) and cpp-httplib/docker/main.cc (get_client_ip, nginx_access_logger, nginx_error_logger). Attack surface: attacker-controlled HTTP headers in incoming requests flow into the Request.headers multimap and into logging code that reads forwarded headers, enabling IP spoofing, log poisoning, and authorization bypass via header shadowing. This vulnerability is fixed in 0.27.0.(CVE-2025-66570)
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.(CVE-2025-66577)
- Record
OESA-2025-2855- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Updated
- 2026-11-02
OSVOESA-2025-2856
10.0
cpp-httplib security update
A C++11 single-file header-only cross platform HTTP/HTTPS library. It's extremely easy to setup. Just include httplib.h file in your code!
Security Fix(es):
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can inject headers named REMOTE_ADDR, REMOTE_PORT, LOCAL_ADDR, LOCAL_PORT that are parsed into the request header multimap via read_headers() in httplib.h (headers.emplace), then the server later appends its own internal metadata using the same header names in Server::process_request without erasing duplicates. Because Request::get_header_value returns the first entry for a header key (id == 0) and the client-supplied headers are parsed before server-inserted headers, downstream code that uses these header names may inadvertently use attacker-controlled values. Affected files/locations: cpp-httplib/httplib.h (read_headers, Server::process_request, Request::get_header_value, get_header_value_u64) and cpp-httplib/docker/main.cc (get_client_ip, nginx_access_logger, nginx_error_logger). Attack surface: attacker-controlled HTTP headers in incoming requests flow into the Request.headers multimap and into logging code that reads forwarded headers, enabling IP spoofing, log poisoning, and authorization bypass via header shadowing. This vulnerability is fixed in 0.27.0.(CVE-2025-66570)
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.(CVE-2025-66577)
- Record
OESA-2025-2856- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Updated
- 2026-11-02
OSVOESA-2025-2857
10.0
cpp-httplib security update
A C++11 single-file header-only cross platform HTTP/HTTPS library. It's extremely easy to setup. Just include httplib.h file in your code!
Security Fix(es):
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can inject headers named REMOTE_ADDR, REMOTE_PORT, LOCAL_ADDR, LOCAL_PORT that are parsed into the request header multimap via read_headers() in httplib.h (headers.emplace), then the server later appends its own internal metadata using the same header names in Server::process_request without erasing duplicates. Because Request::get_header_value returns the first entry for a header key (id == 0) and the client-supplied headers are parsed before server-inserted headers, downstream code that uses these header names may inadvertently use attacker-controlled values. Affected files/locations: cpp-httplib/httplib.h (read_headers, Server::process_request, Request::get_header_value, get_header_value_u64) and cpp-httplib/docker/main.cc (get_client_ip, nginx_access_logger, nginx_error_logger). Attack surface: attacker-controlled HTTP headers in incoming requests flow into the Request.headers multimap and into logging code that reads forwarded headers, enabling IP spoofing, log poisoning, and authorization bypass via header shadowing. This vulnerability is fixed in 0.27.0.(CVE-2025-66570)
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.(CVE-2025-66577)
- Record
OESA-2025-2857- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Updated
- 2026-11-02
OSVOESA-2025-2858
10.0
cpp-httplib security update
A C++11 single-file header-only cross platform HTTP/HTTPS library. It's extremely easy to setup. Just include httplib.h file in your code!
Security Fix(es):
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can inject headers named REMOTE_ADDR, REMOTE_PORT, LOCAL_ADDR, LOCAL_PORT that are parsed into the request header multimap via read_headers() in httplib.h (headers.emplace), then the server later appends its own internal metadata using the same header names in Server::process_request without erasing duplicates. Because Request::get_header_value returns the first entry for a header key (id == 0) and the client-supplied headers are parsed before server-inserted headers, downstream code that uses these header names may inadvertently use attacker-controlled values. Affected files/locations: cpp-httplib/httplib.h (read_headers, Server::process_request, Request::get_header_value, get_header_value_u64) and cpp-httplib/docker/main.cc (get_client_ip, nginx_access_logger, nginx_error_logger). Attack surface: attacker-controlled HTTP headers in incoming requests flow into the Request.headers multimap and into logging code that reads forwarded headers, enabling IP spoofing, log poisoning, and authorization bypass via header shadowing. This vulnerability is fixed in 0.27.0.(CVE-2025-66570)
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.(CVE-2025-66577)
- Record
OESA-2025-2858- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2025-66577
5.3
cpp-httplib is a C++11 single-file header-only cross platform HTTP/HTTPS library. Prior to 0.27.0, a vulnerability allows attacker-controlled HTTP headers to influence server-visible metadata, logging, and authorization decisions. An attacker can supply X-Forwarded-For or X-Real-IP headers which get accepted unconditionally by get_client_ip() in docker/main.cc, causing access and error logs (nginx_access_logger / nginx_error_logger) to record spoofed client IPs (log poisoning / audit evasion). This vulnerability is fixed in 0.27.0.
- Record
UBUNTU-CVE-2025-66577- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N - Updated
- 2026-11-02
OSVopenSUSE-SU-2025:15844-1 No score
cpp-httplib-devel-0.28.0-1.1 on GA media
These are all security issues fixed in the cpp-httplib-devel-0.28.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:15844-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:20056-1 No score
Security update for cpp-httplib
This update for cpp-httplib fixes the following issues:
- CVE-2025-66570: IP spoofing, log poisoning, and authorization bypass via header shadowing due to acceptance and parsing of client-controlled injected HTTP headers in incoming requests (bsc#1254734).
- CVE-2025-66577: access and error log poisoning with spoofed client IPs due to unconditional acceptance of
client-controlled
X-Forwarded-ForandX-Real-IPheaders (bsc#1254735).
- Record
openSUSE-SU-2026:20056-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:20090-1 No score
Security update for cpp-httplib
This update for cpp-httplib fixes the following issues:
- CVE-2025-66570: IP spoofing, log poisoning, and authorization bypass via header shadowing due to acceptance and parsing of client-controlled injected HTTP headers in incoming requests (bsc#1254734).
- CVE-2025-66577: access and error log poisoning with spoofed client IPs due to unconditional acceptance of
client-controlled
X-Forwarded-ForandX-Real-IPheaders (bsc#1254735).
- Record
SUSE-SU-2026:20090-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
cpp-httplibDebian:12 |
All versions, plus listed versions 0.11.4+ds-10.11.4+ds-1+deb12u10.11.4+ds-20.11.4+ds-30.13.1+ds-1 Show 22 moreShow less0.14.0+ds-10.14.1+ds-10.14.1+ds-20.14.2+ds-10.14.3+ds-10.14.3+ds-1.10.14.3+ds-1.1~exp10.15.3+ds-10.15.3+ds-20.15.3+ds-30.16.0+ds-10.16.3+ds-10.16.3+ds-20.18.0+ds-10.18.7-10.20.1+ds-30.25.0+ds-10.26.0+ds-20.41.0+ds-10.41.0+ds-20.41.0+ds-30.41.0+ds-3~bpo13+1 |
None known |
cpp-httplibDebian:13 |
All versions, plus listed versions 0.18.7-10.18.7-1+deb13u10.20.1+ds-30.25.0+ds-10.26.0+ds-2 Show 4 moreShow less0.41.0+ds-10.41.0+ds-20.41.0+ds-30.41.0+ds-3~bpo13+1 |
None known |
cpp-httplibDebian:14 |
before 0.41.0+ds-3, plus listed versions 0.18.7-10.20.1+ds-30.25.0+ds-10.26.0+ds-20.41.0+ds-10.41.0+ds-20.41.0+ds-3~bpo13+1 |
0.41.0+ds-3 |
cpp-httplibopenEuler:22.03-LTS-SP3 From an advisory covering 2 CVEs |
before 0.27.0-1.oe2203sp3 | 0.27.0-1.oe2203sp3 |
cpp-httplibopenEuler:22.03-LTS-SP4 From an advisory covering 2 CVEs |
before 0.27.0-1.oe2203sp4 | 0.27.0-1.oe2203sp4 |
cpp-httplibopenEuler:24.03-LTS From an advisory covering 2 CVEs |
before 0.27.0-1.oe2403 | 0.27.0-1.oe2403 |
cpp-httplibopenEuler:24.03-LTS-SP1 From an advisory covering 2 CVEs |
before 0.27.0-1.oe2403sp1 | 0.27.0-1.oe2403sp1 |
cpp-httplibopenEuler:24.03-LTS-SP2 From an advisory covering 2 CVEs |
before 0.27.0-1.oe2403sp2 | 0.27.0-1.oe2403sp2 |
cpp-httplibSUSE:Linux Enterprise Server 16.0 From an advisory covering 2 CVEs |
before 0.22.0-160000.3.1 | 0.22.0-160000.3.1 |
cpp-httplibSUSE:Linux Enterprise Server for SAP applications 16.0 From an advisory covering 2 CVEs |
before 0.22.0-160000.3.1 | 0.22.0-160000.3.1 |
Show 7 moreShow less
| Package | Affected | Fixed |
|---|---|---|
cpp-httplibUbuntu:Pro:22.04:LTS |
before 0.10.3+ds-1ubuntu0.1~esm1, plus listed versions 0.9.9+ds-10.9.10+ds-10.10.1+ds-10.10.2+ds-10.10.3+ds-1 |
0.10.3+ds-1ubuntu0.1~esm1 |
cpp-httplibUbuntu:Pro:24.04:LTS |
before 0.14.3+ds-1.1ubuntu0.1~esm1, plus listed versions 0.13.1+ds-1ubuntu10.14.3+ds-10.14.3+ds-1.10.14.3+ds-1.1build10.14.3+ds-1.1build2 |
0.14.3+ds-1.1ubuntu0.1~esm1 |
cpp-httplibUbuntu:25.10 |
before 0.18.7-1ubuntu0.25.10.1, plus listed versions 0.18.7-1 |
0.18.7-1ubuntu0.25.10.1 |
cpp-httplibUbuntu:26.10 |
All versions, plus listed versions 0.26.0+ds-2ubuntu30.26.0+ds-2ubuntu4 |
None known |
cpp-httplibUbuntu:Pro:26.04:LTS |
All versions, plus listed versions 0.18.7-10.26.0+ds-2ubuntu20.26.0+ds-2ubuntu30.26.0+ds-2ubuntu3+esm1 |
None known |
cpp-httplibopenSUSE:Tumbleweed From an advisory covering 2 CVEs |
before 0.28.0-1.1 | 0.28.0-1.1 |
cpp-httplibopenSUSE:Leap 16.0 From an advisory covering 2 CVEs |
before 0.22.0-160000.3.1 | 0.22.0-160000.3.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-66577 is a medium vulnerability (CVSS 5.3) in Yhirose Cpp-httplib, published December 5, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.29%, the 22nd percentile. Fixed in cpp-httplib 0.41.0+ds-3.
References
github.com/yhirose/cpp-httplib/security/advisories/GHSA-gfpf-r66f-5mh2
github.com/yhirose/cpp-httplib/commit/ac9ebb0ee333ce8bf13523f487bdfad9518a2aff
github.com/CVEProject/cvelistV5/tree/main/cves/2025/66xxx/CVE-2025-66577.json
nvd.nist.gov/vuln/detail/CVE-2025-66577
security-tracker.debian.org/tracker/CVE-2025-66577
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2025-2854
Show 12 moreShow less
nvd.nist.gov/vuln/detail/CVE-2025-66570
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2025-2855
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2025-2856
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2025-2857
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2025-2858
suse.com/support/update/announcement/2026/suse-su-202620090-1
bugzilla.suse.com/1254734
bugzilla.suse.com/1254735
suse.com/security/cve/CVE-2025-66570
suse.com/security/cve/CVE-2025-66577
ubuntu.com/security/CVE-2025-66577
cve.org/CVERecord?id=CVE-2025-66577