Safeguard
Vulnerability Analysis•

CVE-2025-14950: High SQL Injection in Scholars Tracking System

CVE-2025-14950 is a SQL injection in code-projects Scholars Tracking System with no fix listed. Limit access now and move the query to prepared statements.

Safeguard Security Team
3 min read

CVE-2025-14950 is a high severity (CVSS 7.3) SQL injection in code-projects Scholars Tracking System 1.0. User input reaching /delete_post.php through the ID argument can alter a database query. The CVE record names no patched release, so limit exposure, check with the vendor, and fix the query in your own copy.

What's affected

The record names code-projects Scholars Tracking System 1.0. The vulnerable file is /delete_post.php, and the argument involved is the ID argument.

Here is what the record and its scoring say:

  • Severity: High, CVSS 7.3, vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L.
  • Network reachable, low complexity, no privileges and no user interaction required, according to that vector.
  • Impact is scored as low for each of confidentiality, integrity and availability.
  • Fixed version: none listed in the record.
  • Exploitation in the wild: the record is not in the CISA KEV catalog. It does say exploit details have been made public.

A public write up exists on GitHub and is linked from the record. This post does not reproduce its test details.

How to check if you're exposed

This is application code, not a package you install from a registry, so start with a file search on the server or in your repositories.

# Is the application present?
grep -ril "delete_post.php" /var/www 2>/dev/null

# Does your web server log show traffic to the page?
grep "delete_post.php" /var/log/nginx/access.log | tail -n 50

Then open delete_post.php and find where ID is read. If its value is joined into an SQL string, you have the flaw described here. If it is passed to a prepared statement as a bound value, that path is not affected by this class of bug.

Also look at the log lines for unusual characters or very long values in the query string. Odd entries are a prompt to investigate, not proof of compromise.

What to do now

  1. Find every copy of the application, including test and staging servers.
  2. Take it off the public internet, or put it behind a VPN or an IP allow list, until the code is fixed.
  3. Check the vendor site for a patched release. The record lists none, so do not assume one exists.
  4. Rewrite the query in delete_post.php so values are bound as parameters, never joined into the SQL text.
  5. Give the application's database account only the rights it needs. It should not own the schema or read unrelated tables.

Why it matters

CWE-89 is one of the oldest and best understood weaknesses in web code. The application passes input into an SQL statement, and the database cannot tell the developer's text from the visitor's. CWE-74 is the broader category of injection into a downstream component. The fix has been known for decades: bind parameters.

Quick check

Is there a patched version of Scholars Tracking System?

The CVE record lists no fixed version and the references I could see are not a vendor patch. Check code-projects's site, and do not rely on a release number alone. Fixing the query in your own copy is the dependable route.

Is this being exploited in the wild?

The record is not in CISA KEV, and nothing I read says exploitation has been confirmed. It does say exploit details have been made public, so treat exposure as real.

Sources

Last reviewed: 19 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.