CVE-2025-14896

7.5 HIGH

📋 TL;DR

CVE-2025-14896 is a server-side request forgery (SSRF) vulnerability in Vega's convert() function when safeMode is enabled and the spec parameter is an array. Attackers can craft malicious Vega diagram specifications to send requests to arbitrary URLs, including local file paths, potentially exposing sensitive information. This affects systems using vulnerable versions of Vega or software that incorporates Vega for diagram rendering.

💻 Affected Systems

Products:
  • Vega
  • Kroki (which uses Vega)
Versions: Vega versions before the fix in commit f31093cd8a0a1d6999c43d560f62d1e82d59c77e
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects configurations where safeMode is enabled and spec parameter is passed as an array.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete server compromise through local file inclusion leading to credential theft, data exfiltration, or remote code execution via chained attacks.

🟠

Likely Case

Unauthorized access to internal services, local file reading exposing configuration files or credentials, and potential data leakage.

🟢

If Mitigated

Limited impact if network segmentation restricts internal access and file permissions are properly configured.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires ability to submit Vega specifications to vulnerable endpoints.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Fixed in Kroki commit f31093cd8a0a1d6999c43d560f62d1e82d59c77e

Vendor Advisory: https://github.com/yuzutech/kroki/commit/f31093cd8a0a1d6999c43d560f62d1e82d59c77e

Restart Required: Yes

Instructions:

1. Update Vega or Kroki to version containing commit f31093cd8a0a1d6999c43d560f62d1e82d59c77e. 2. Restart the application/service. 3. Verify the fix by testing with malicious payloads.

🔧 Temporary Workarounds

Input Validation

all

Implement strict input validation to reject array-type spec parameters when safeMode is enabled.

Network Segmentation

all

Restrict outbound network access from vulnerable systems to prevent SSRF attacks.

🧯 If You Can't Patch

  • Implement WAF rules to block malicious Vega specifications containing URL patterns.
  • Disable or restrict access to Vega rendering endpoints until patching is possible.

🔍 How to Verify

Check if Vulnerable:

Test by submitting a Vega specification with array type containing malicious URL payloads to the convert() endpoint.

Check Version:

Check package.json or similar for Vega/Kroki version and compare against patched versions.

Verify Fix Applied:

Attempt the same malicious payloads after patching; they should be rejected or sanitized.

📡 Detection & Monitoring

Log Indicators:

  • Unusual outbound requests from Vega service
  • Errors in Vega parsing logs
  • Multiple failed conversion attempts

Network Indicators:

  • Unexpected outbound HTTP requests from Vega service to internal IPs or file:// URLs

SIEM Query:

source="vega" AND (url="file://*" OR url="http://127.0.0.1*" OR url="http://169.254.169.254*")

🔗 References

📤 Share & Export