Safeguard
Vulnerability Analysis•

CVE-2025-13030: Unauthenticated Upload in django-mdeditor

CVE-2025-13030 is a high severity missing authentication flaw in the django-mdeditor image upload endpoint. Update the package and require login.

Safeguard Security Team
3 min read

CVE-2025-13030 is a high severity (7.1) missing authentication flaw in the image upload endpoint of the django-mdeditor package. All versions are listed as affected. A change merged in June 2025 adds an authentication option and a file format check, so update to a release that has it and enable it.

What's affected

The record says all versions of django-mdeditor (pylixm) are vulnerable. The image upload endpoint has no authentication and does not properly clean file names, and the record says this can lead to arbitrary code execution.

The project pull request 185 was merged into master on 25 June 2025. It adds a file format check that uses Pillow, and an upload_require_auth option in MDEDITOR_CONFIGS that can require authentication for uploads. According to the commit messages, the option defaults to false. The pull request page does not say which release first contains the change, so check the package release history on PyPI and the repository.

The CVSS vector is AV:N/AC:L/PR:N/UI:R/S:C, with low impact on each of confidentiality, integrity and availability.

How to check if you're exposed

Check your Python environments.

pip show django-mdeditor
pip list | grep -i mdeditor

For a project using a lock file, search it for the package.

grep -i mdeditor requirements.txt poetry.lock Pipfile.lock

Then check whether the editor upload URL is routed in your project, and whether anonymous users can reach it. You can also paste your lock file into the free scan at gold.safeguard.sh/scan.

What to do now

  1. Find every Django project that uses django-mdeditor.
  2. Upgrade to a release that includes the June 2025 change, after confirming on the project release page which one that is.
  3. Set the upload authentication option in MDEDITOR_CONFIGS so only signed in users can upload.
  4. Store uploads outside the web root or on object storage, and make sure the web server never executes files from the upload directory.
  5. Review the upload directory for files that are not images.

Why it matters

The weakness is CWE-306, missing authentication for a critical function. File upload is a function that should never be open to anyone. Combined with weak handling of the file name, an uploaded file can end up somewhere the server treats as code.

The safe pattern has three parts. Require a login for uploads, check that the content really is the type you expect, and never serve the upload directory with execution enabled. The fix here covers the first two. The third depends on how you deploy.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Is authentication on by default now?

According to the pull request commit messages, the upload_require_auth option defaults to false. You need to turn it on.

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.