Safeguard
Vulnerability Analysis•

CVE-2024-6452: Medium SQL Injection in litemall up to 1.8.0

CVE-2024-6452 is a SQL injection in the goods admin controller of linlinjava litemall up to 1.8.0 (CVSS 6.3). Check the project issue for a fix before relying on it.

Safeguard Security Team
3 min read

CVE-2024-6452 is a medium severity (CVSS 6.3) SQL injection in linlinjava litemall, versions up to 1.8.0. It is in the admin goods controller and is reachable remotely. The record names no fixed release, so follow the project issue and harden the query path.

What's affected

The record says litemall up to 1.8.0. The code named is AdminGoodscontroller.java, and three arguments are called out as unsafe: goodsId, goodsSn and name. VulDB tracks the issue as VDB-270235.

litemall is an open source e-commerce mall project written in Java. Teams often fork it and run it as the base of a shop, so the fix has to reach your fork and not only the upstream project.

The weakness is CWE-89. The vector is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L: a low privilege account is needed, which in an admin controller means someone with a back office login. The record says a public exploit exists and the KEV flag is false.

The record cites the project's GitHub issue 548. That page was not retrievable during review, so I cannot confirm whether a commit fixes it.

How to check if you're exposed

  1. Check the version in your pom.xml or the release tag you built from.
  2. Search your source for the controller and read how the three arguments are used:
grep -rn "AdminGoodsController\|goodsSn" --include=*.java .
  1. Look at the mapper XML or annotations the controller calls. Values inserted with the dollar-brace syntax in MyBatis are concatenated into SQL, while the hash-brace syntax is bound as a parameter.
  2. Check access logs for back office requests with oddly shaped values in those fields.

What to do now

  1. Read the upstream issue and any later commits to see whether a fix exists, and pull it into your fork.
  2. Where a MyBatis query uses string substitution for these fields, switch it to bound parameters.
  3. Limit access to the admin interface to staff networks or a VPN.
  4. Review who holds admin accounts and remove unused ones, since the attack needs one.
  5. Use a database account for the shop with only the rights it needs.
  6. Add a unit test that sends an unexpected value to each of the three fields and checks it is treated as data.

Why it matters

A shop's admin area often has the keys to product data, orders and customer records. SQL injection there turns one back office login into broader reading and altering of the store database.

The cause is the same one that has driven injection bugs for years: untrusted text becoming part of a query. In Java projects it often shows up where a search or sort field was added late and the developer used string building to save time.

Quick check

Is there a fixed version?

The record lists none past 1.8.0. Check the project issue for a fix and verify any change in your own fork.

Does it need a login?

The vector says low privileges are required. For the admin goods controller, that means a back office account.

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.