Safeguard
Vulnerability Analysis•

CVE-2025-6776: High Path Traversal in openvpn-cms-flask

openvpn-cms-flask 1.2.7 and earlier has a path traversal in its file upload plugin. Upgrade to 1.2.8, which carries the fix, and restrict the interface.

Safeguard Security Team
3 min read

CVE-2025-6776 is a high severity (CVSS 7.3) path traversal in openvpn-cms-flask up to 1.2.7. The image argument of the file upload function can reach outside the intended folder. A public exploit is noted in the record. Upgrade to version 1.2.8.

What's affected

xiaoyunjie openvpn-cms-flask versions up to and including 1.2.7. The record says upgrading to 1.2.8 addresses the issue and names the patch commit e23559b98c8ea2957f09978c29f4e512ba789eb6. The code involved is the Upload function in app/plugins/oss/app/controller.py, in the file upload component.

The record states that the attack can be started remotely and that an exploit has been disclosed publicly. It does not list the CVE as known exploited by CISA. The record's description also labels the issue critical while the CVSS score of 7.3 is high; this post uses the score.

How to check if you're exposed

Confirm which version of the project you run and whether the patch commit is in your checkout:

git -C /path/to/openvpn-cms-flask describe --tags
git -C /path/to/openvpn-cms-flask branch --contains e23559b

Then look at the upload folder. Files that appear outside it, or files with unexpected names or extensions, are worth a look. Review web server access logs for upload requests with unusual file names.

grep -i "upload" /var/log/nginx/access.log | tail -50

What to do now

  1. Locate all openvpn-cms-flask deployments, including test copies.
  2. Upgrade to 1.2.8 or later, or apply commit e23559b.
  3. Limit access to the web interface and require authentication in front of it.
  4. Check the file system for files that should not be there, and review file permissions for the app account.
  5. In your own code, resolve user supplied file names and confirm the result stays inside the intended directory.

Why it matters

The weakness is CWE-22, path traversal. A file name supplied by a user is joined to a directory path without making sure the final location stays inside that directory. Sequences that move up a directory level can then reach other parts of the file system.

Depending on where the application writes, this can overwrite files or place content in locations the operator did not intend. The usual defence is to generate your own file names, resolve the final path and check it against the allowed folder before writing. The sibling flaw in the same release is CVE-2025-6775.

If you cannot upgrade at once, the least you can do is shrink the audience. Keep the interface off the public internet, require a VPN or an allow list, and run the application under an account that can write only to its own upload folder. Those steps do not replace the fix, but they limit what a path traversal can reach.

Quick check

Which file is involved?

The record names app/plugins/oss/app/controller.py and its Upload function.

Is it exploited in the wild?

The record says an exploit was disclosed publicly. It does not mark the CVE as a CISA KEV entry.

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.