Smarty: SSRF via redirect bypass of trusted_uri using {fetch}
Published 1 Sept 2026 · Updated 1 Sept 2026
Affected packages
- Affected
- >=5.0.0 <5.8.2
- Fixed in
- 5.8.2
composer require smarty/smarty:^5.8.2- Affected
- <4.5.7
- Fixed in
- 4.5.7
composer require smarty/smarty:^4.5.7Details
When a Security policy is active, {fetch} validates the requested remote URL against the trusted_uri allowlist via Security::isTrustedUri(). For non-http:// schemes (e.g. https://) the resource was then read with file_get_contents(), which follows HTTP redirects by default. Because isTrustedUri() only validates the initial URL, an open redirect on an otherwise-trusted host could be used to redirect the request to a non-trusted, internal target — bypassing the trusted_uri policy.
Impact
An attacker who can supply a fetch target (or influence one) and who has an open redirect available on a trusted host can cause the server to issue requests to attacker-chosen internal endpoints, defeating the trusted_uri allowlist (server-side request forgery).
Patches
Fixed in 5.8.2. When a security policy is active, {fetch} now passes a stream context that disables redirect following (follow_location => 0, max_redirects => 1) to file_get_contents() for remote resources. Behavior is unchanged when no security policy is set, since there is no trusted_uri to bypass.
Workarounds
Avoid fetching remote resources from within templates under untrusted control; ensure hosts listed in trusted_uri do not expose open redirects.
Is GHSA-cq55-c7wv-pxmq in any of your client repos?
Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected smarty/smarty, and gives you the command that fixes it.
References
- Linkgithub.com/smarty-php/smarty/security/advisories/GHSA-cq55-c7wv-pxmq
- Advisorynvd.nist.gov/vuln/detail/CVE-2026-62993
- Linkgithub.com/smarty-php/smarty/pull/1194
- Linkgithub.com/smarty-php/smarty/commit/31e06fc087a8b5a9b236c1e5dacc1c2850a2c115
- Linkgithub.com/smarty-php/smarty/commit/a1ccdb0518021a559b4066c37b76a42c86bbce90
- Packagegithub.com/smarty-php/smarty
- Linkgithub.com/smarty-php/smarty/releases/tag/v4.5.7
- Linkgithub.com/smarty-php/smarty/releases/tag/v5.8.2
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.