Safeguard
Vulnerability Analysis•

CVE-2025-1947: Medium Command Injection in hzmanyun 2.1.3

CVE-2025-1947 is a medium severity command injection in the scorm function of hzmanyun Education and Training System 2.1.3. No fix is named; limit access.

Safeguard Security Team
4 min read

CVE-2025-1947 is a medium severity (6.3) command injection in hzmanyun Education and Training System 2.1.3. The scorm function in UploadImageController.java handles the param argument unsafely. The record names no fix, so limit access to the upload feature and ask the vendor for a patch.

What's affected

The record lists hzmanyun Education and Training System, version 2.1.3. The vulnerable function is scorm, in the file UploadImageController.java, and the argument involved is param. The weaknesses are CWE-77, command injection, and CWE-74, the wider class of injection flaws.

The CVSS vector is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L. That means a network attacker with a low privilege account and a low complexity attack, with low rated impact. The description says the exploit has been disclosed to the public and may be used. The record is not on the CISA Known Exploited Vulnerabilities list, and I found no source that says it is exploited in the wild.

This is a second command injection in the same product. The first is CVE-2025-1946, in the exportPDF function of version 2.1.

Fixed versions: none are named in the record. I could not confirm a vendor patch.

How to check if you're exposed

Confirm that you run hzmanyun and note the exact version. Then look at the SCORM feature, which handles packaged course content that instructors upload to a learning system.

grep -i "scorm" /var/log/nginx/access.log | less

Adjust the path for your server. Look for use of the SCORM and image upload routes from accounts that do not teach, from outside your user base, or with unusual values in the parameters. If you can read the source, find the scorm method and trace the param value. Any path where it is placed into a command string or passed to a shell is the pattern behind this weakness.

Check what the application account can do on the server, and whether the upload folder contains anything you did not expect.

What to do now

  1. Find every deployment of the system and its version.
  2. Restrict the application to the people who need it. Use a VPN or an allowlist where you can.
  3. If you do not use SCORM packages, block that route at your proxy until a fix is released.
  4. Limit which accounts can upload content, and remove old or shared accounts.
  5. In the code, avoid the shell. Use library calls and pass values as arguments, validated against an allowlist.
  6. Run the application as an unprivileged account and limit its network access.
  7. Contact the vendor and ask for a fixed release that covers both this CVE and CVE-2025-1946.

Why it matters

Learning systems accept content from many people, such as instructors, administrators and sometimes students. Content packages are unpacked and processed on the server, often by calling external tools. Each step where a value reaches a command line is a place where input can become instructions.

When one product has two command injection flaws in different features, the likely cause is a habit, not an accident. Fixing one function is rarely enough. A code review of every place that starts a process is the efficient response, and so is removing features you do not use.

Quick check

Why would two command injection CVEs appear in the same product?

It usually points to a shared coding habit, such as building command strings from request values. A review of every place that starts a process is the lasting fix.

The score is medium. How urgent is this?

Moderate, but the exploit is public and the vector needs only a low privilege account. If your accounts are easy to obtain, treat it as high priority and limit access now.

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.