CVE-2026-55599 Overview
CVE-2026-55599 is a server-side request forgery (SSRF) vulnerability in phpseclib, a widely deployed PHP secure communications library. When an application calls X509::validateSignature() against an attacker-controlled certificate, phpseclib reads the URL from the certificate's Authority Information Access (AIA) extension and fetches it. The attacker fully controls the host, port, and path. URL fetching is enabled by default and no destination is blocked, allowing connections to loopback addresses, cloud metadata endpoints such as 169.254.169.254, and internal-only services. The flaw is tracked as [CWE-918] and affects versions from 0.1.1 through the fixed releases.
Critical Impact
An unauthenticated remote attacker can coerce a validating PHP server into making outbound HTTP requests to arbitrary internal hosts, enabling reconnaissance and theft of cloud instance credentials.
Affected Products
- phpseclib 1.x from 0.1.1 up to but not including 1.0.30
- phpseclib 2.x up to but not including 2.0.55
- phpseclib 3.x up to but not including 3.0.54
Discovery Timeline
- 2026-06-22 - CVE-2026-55599 published to NVD
- 2026-06-23 - Last updated in NVD database
Technical Details for CVE-2026-55599
Vulnerability Analysis
The phpseclib library implements X.509 certificate parsing and signature validation in pure PHP. During validation, X509::validateSignature() inspects the Authority Information Access extension, which can contain a caIssuers URL pointing to the issuer's certificate. phpseclib fetches that URL to obtain the issuing certificate and continue chain validation.
The vulnerability stems from two compounding design decisions. First, URL fetching is enabled by default. Second, the library applies no allowlist, denylist, or scheme restriction on the destination. An attacker who can submit a certificate to a validating endpoint controls the full request target.
This behavior maps directly to [CWE-918], Server-Side Request Forgery. The attacker does not need authentication and does not need to influence the response body. Triggering the outbound connection alone is sufficient to reach internal services, scan ports, or read cloud metadata services that respond to plain GET requests.
Root Cause
The root cause is an insecure default configuration. phpseclib trusts URLs embedded in untrusted X.509 certificates and dereferences them during signature validation without consulting the calling application about acceptable destinations.
Attack Vector
An attacker crafts an X.509 certificate containing a malicious AIA extension where the caIssuers field references an internal URL such as http://169.254.169.254/latest/meta-data/iam/security-credentials/. The attacker submits the certificate to any application surface that calls phpseclib's X509::validateSignature() on untrusted input. The server then issues the outbound request, exposing internal infrastructure to the attacker's chosen target. See the phpseclib GitHub Security Advisory for full technical context.
Detection Methods for CVE-2026-55599
Indicators of Compromise
- Outbound HTTP requests from PHP application servers to 127.0.0.1, 169.254.169.254, or RFC1918 ranges that originate from the phpseclib code path.
- Unexpected User-Agent strings produced by PHP stream wrappers in egress proxy logs tied to certificate validation workflows.
- Application logs showing X509::validateSignature() invocations immediately followed by outbound socket activity to non-public addresses.
Detection Strategies
- Inspect installed phpseclib versions across PHP projects using composer show phpseclib/phpseclib and flag versions below 1.0.30, 2.0.55, or 3.0.54.
- Monitor egress traffic from web tier hosts for requests targeting cloud metadata IPs and loopback interfaces.
- Hunt for AIA extensions containing internal IP literals or non-HTTPS schemes inside certificates submitted to validation endpoints.
Monitoring Recommendations
- Enable web application firewall logging for endpoints that accept user-supplied certificates and correlate with outbound network telemetry.
- Alert on any PHP-FPM or CLI process initiating connections to the IMDS endpoint 169.254.169.254.
- Track cloud audit logs for unexpected use of instance role credentials that could indicate successful metadata exfiltration.
How to Mitigate CVE-2026-55599
Immediate Actions Required
- Upgrade phpseclib to 1.0.30, 2.0.55, or 3.0.54 depending on the branch in use.
- Audit application code paths that pass untrusted certificates to X509::validateSignature() and disable validation against attacker-controlled input where possible.
- Block outbound access from PHP application servers to cloud metadata endpoints and loopback ranges at the network layer.
Patch Information
The phpseclib maintainers fixed the issue in versions 1.0.30, 2.0.55, and 3.0.54. Refer to the phpseclib GitHub Security Advisory GHSA-m557-wrgg-6rp4 for patch details and upgrade guidance.
Workarounds
- Apply IMDSv2 on AWS workloads to require session tokens that phpseclib's simple fetch cannot obtain.
- Use egress firewall rules or a forward proxy to restrict PHP runtimes to known external destinations only.
- Pre-validate submitted certificates and strip or reject AIA extensions before passing them to phpseclib.
# Configuration example
composer require phpseclib/phpseclib:^3.0.54
# or for legacy branches
composer require phpseclib/phpseclib:^2.0.55
composer require phpseclib/phpseclib:^1.0.30
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

