Safeguard
Vulnerability Analysis•

CVE-2026-2089: SQL Injection in Class Record Subject Page

CVE-2026-2089 is a SQL injection in the subject controller of SourceCodester Online Class Record System 1.0 (CVSS 7.3). No fix is listed, so isolate it.

Safeguard Security Team
3 min read

CVE-2026-2089 is a high severity SQL injection flaw (CVSS 7.3) in SourceCodester Online Class Record System 1.0. The ID parameter of /admin/subject/controller.php reaches a database query unsafely. The record lists no fixed version, so remove the app from public reach and fix the query yourself.

What's affected

The record names SourceCodester Online Class Record System 1.0. The weakness is classed as CWE-89 (SQL injection) and CWE-74 (injection). The vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L means network reachable, low complexity, no login, no user interaction.

No fixed version is listed. I could not find a vendor advisory or patch to confirm one, so treat every copy of this release as affected until you hear otherwise. The record says a working exploit has been publicly disclosed. It does not say the flaw is exploited in the wild, and it is not in the CISA Known Exploited Vulnerabilities catalog.

How to check if you're exposed

Start by finding out whether you run it at all. These apps are often copied onto a server for a class project or an internal pilot and then forgotten.

find /var/www -type f -path "*/admin/subject/controller.php" 2>/dev/null

If that returns a hit, open the file and look at how the ID value is used. Concatenating it into an SQL string is the problem. Then check your web server logs for requests to that file from addresses you do not recognize, and look for unusually long or odd looking values in the ID parameter.

For any dependency manifest the project does ship, the free in-browser scan shows known issues in its packages.

What to do now

  1. Take the app off the public internet, or put it behind a VPN or an IP allowlist, today.
  2. Replace string building in /admin/subject/controller.php with a prepared statement and bound parameters. The same fix belongs in every other file that builds queries from request input.
  3. Run the database account with the least privilege the app needs. It should not own the schema, and it should not be able to read tables the app never touches.
  4. Watch the vendor page and the CVE-2026-2089 entry for a patched release, and retire the app if none appears.

Why it matters

This is the second record for the same application in this batch, and it points at a different file. When one app has several injection points, patching a single line leaves the rest. Review every query in the code base, not just the file named here.

SQL injection happens when request text is treated as part of a query instead of as a plain value. The fix is to send the query and the values separately.

$stmt = $pdo->prepare('SELECT * FROM subjects WHERE id = ?');
$stmt->execute([$id]);

Quick check

Is there a patch for CVE-2026-2089?

The record lists none, and I could not confirm a vendor fix. Check the vendor site and the NVD entry before assuming one exists.

Is this the same bug as CVE-2026-2087?

No. It is a separate record that affects a different file of the same product. Fixing one does not fix the other.

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.