Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Network-reachable, no authentication required due to default open registration, no complexity barriers; only confidentiality impact applies via internal service data exposure.
Primary rating from Vendor (TuranSec).
CVSS VectorVendor: TuranSec
Lifecycle Timeline
2DescriptionCVE.org
A server-side request forgery vulnerability in Pinry through 2.1.13 allows unauthenticated remote attackers to make the server issue HTTP requests to arbitrary internal or external hosts via the pin-from-URL feature. The feature passes the user-supplied URL directly to requests.get() without host or IP validation, and ALLOW_NEW_REGISTRATIONS defaults to true enabling anonymous triggering. An attacker can reach internal services or cloud metadata endpoints from the server.
AnalysisAI
Server-side request forgery in Pinry through 2.1.13 enables unauthenticated remote attackers to coerce the application server into issuing arbitrary HTTP requests to internal or external hosts via the pin-from-URL feature, which passes attacker-supplied URLs directly to Python's requests.get() without host allowlisting or IP validation. Because ALLOW_NEW_REGISTRATIONS defaults to true, no account or authentication is required to trigger the vulnerable endpoint, making every default-configured internet-exposed Pinry instance exploitable without any attacker preconditions. Attackers can leverage this to reach cloud metadata endpoints such as AWS IMDSv1 at 169.254.169.254, harvest IAM credentials, or probe internal services unreachable from the public internet; no public exploit has been identified at time of analysis and no CISA KEV listing is present.
Technical ContextAI
Pinry is a self-hosted, Django-based image bookmarking application analogous to Pinterest, written in Python. The vulnerable code path is the pin-from-URL feature, which accepts a user-supplied URL and invokes Python's requests library via requests.get() to fetch the remote resource for pinning - a standard outbound HTTP call with no host allowlist, IP blocklist, DNS rebinding protection, or redirect-chain validation applied to the input. CWE-918 (Server-Side Request Forgery) describes the root cause precisely: the application makes an outbound HTTP request driven entirely by attacker-controlled input, causing the server to act as an unintended proxy for internal or external network targets. The CPE string cpe:2.3:a:pinry:pinry:*:*:*:*:*:*:*:* confirms that all Pinry releases from version 0 through 2.1.13 are affected, as further documented by ENISA EUVD-2026-56045. The default ALLOW_NEW_REGISTRATIONS=true application setting eliminates the authentication barrier, compounding the risk by allowing anonymous invocation of the vulnerable endpoint.
RemediationAI
No vendor-released patch has been identified at time of analysis; only the upstream GitHub repository (https://github.com/pinry/pinry) is referenced and should be monitored for a fix release or pull request addressing URL validation. As immediate compensating controls: set ALLOW_NEW_REGISTRATIONS to false in the Pinry configuration to require authentication before the pin-from-URL feature can be invoked, raising the exploitation bar from unauthenticated to authenticated - note this does not fix the underlying SSRF but limits who can trigger it, and it removes public self-registration as a side effect. Implement egress firewall rules or cloud security-group policies to block outbound HTTP and HTTPS from the Pinry server process to RFC 1918 private ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) and link-local addresses (169.254.0.0/16); this has minimal functional impact since legitimate pin URLs should target public internet resources. If running on AWS, enforce IMDSv2 instance metadata service, which requires a session-token-based PUT request that requests.get() cannot satisfy, specifically blocking cloud credential exfiltration. If the pin-from-URL feature is not operationally required, disabling it at the reverse-proxy or application layer eliminates the attack surface entirely.
Same weakness CWE-918 – Server-Side Request Forgery (SSRF)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-56045
GHSA-x8h5-cpr3-h43m