Safeguard
Vulnerability Analysis•

CVE-2025-66205: High SQL Injection in Frappe

CVE-2025-66205 is an error-based SQL injection in Frappe that can leak data such as the database version. Fixed in 15.86.0 and 14.99.2. Upgrade your bench.

Safeguard Security Team
3 min read

CVE-2025-66205 is a high severity (CVSS 7.1) error-based SQL injection in the Frappe web framework. A certain endpoint did not validate parameters, and details such as the database version could be read. It is fixed in Frappe 15.86.0 and 14.99.2. There is no workaround, so upgrading is required.

What's affected

  • Package: frappe on PyPI, the full stack framework behind apps such as ERPNext.
  • Affected: versions before 15.86.0 on the 15 line, and before 14.99.2 on the 14 line.
  • Fixed: 15.86.0 and 14.99.2.
  • Privileges: the record vector says low privileges are required, so an authenticated account is needed.

The record and the GitHub advisory agree: High, 7.1. The advisory states there is no workaround.

How to check if you're exposed

Check the Frappe version on each site or bench.

bench version
pip show frappe

If you run the 15 line and the version is below 15.86.0, or the 14 line and below 14.99.2, you are affected. For containerised deployments, check the image tag and rebuild from a patched base. For ERPNext or other apps built on Frappe, the framework version is what matters, not the app version.

What to do now

  1. Upgrade Frappe to 15.86.0 or 14.99.2 depending on your major version, then run your migrations as your normal process requires.
  2. Do not rely on a workaround. The advisory says none exists.
  3. Review database and web server logs for odd errors from authenticated users around the time you were exposed, since error-based injection works by reading error output.
  4. Limit who gets accounts on public facing sites and remove stale users.
  5. Check all your Python projects for old frappe pins. Paste your manifests into the free in-browser scan at gold.safeguard.sh/scan to see which of your dependencies carry this CVE, and use reachability analysis to separate the services that actually call the affected code from the ones that only list the package.

Why it matters

The class is CWE-89, SQL injection. Error-based injection works by sending crafted input that makes the database produce an error, then reading the error message for data. The advisory says some information like the database version could be retrieved, which is the typical first step toward learning more about the target.

It is rated high and not critical because it needs a logged in user and the stated impact is mainly confidentiality. Still, a framework sits under many business apps, so one injectable endpoint is a shared problem across every site on a bench. The record shows no known exploitation and the CVE is not on CISA KEV.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Is there a configuration change that avoids this?

No. The advisory says there is no workaround and upgrading is required.

Which versions are patched?

15.86.0 for the 15 line and 14.99.2 for the 14 line.

Sources

Last reviewed: 18 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.