---
id: "CVE-2026-84999"
kind: "vulnerability"
aliases: ["CVE-2026-84999"]
title: "WordPress Pie Register Premium: unauthenticated file upload leads to remote code execution"
severity: "critical"
cvss: 9.8
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "pie-register", "self-hosted", "wordpress"]
not_affected_if: ["patched-version", "plugin-not-installed"]
published_at: "2026-10-28T03:17:16+00:00"
first_seen_at: "2026-10-28T03:31:02+00:00"
updated_at: "2026-10-28T03:32:18+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-84999", "first_seen_at": "2026-10-28T03:31:02+00:00"}]
---

# WordPress Pie Register Premium: unauthenticated file upload leads to remote code execution

The Pie Register Premium WordPress plugin, up to and including 3.8.4.0, accepts file uploads through its piereg_file_upload AJAX handler without an authentication or nonce check and does not stop uploads that failed file type validation. An unauthenticated attacker can upload a PHP script and run it on the server by requesting the path the response returns.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Pie Register Premium plugin version in the WordPress admin under Plugins, or with `wp plugin get pie-register --field=version` (the slug is unknown from the sources).
- Look for the handler with `grep -r "piereg_file_upload" wp-content/plugins/`.

## Fix

- Update Pie Register Premium to a version later than `3.8.4.0`; the exact fixed version is unknown from the sources.
- Until patched, remove or disable the Pie Register Premium plugin.
- Search the uploads directories for recently added `.php` files and review them.

## Timeline

- 2026-10-28T03:31:02+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-84999

## From the sources

The Pie Register Premium plugin for WordPress is vulnerable to Unrestricted File Type Upload in all versions up to, and including, 3.8.4.0 via the piereg_file_upload function. This is due to the plugin performing file type validation via wp_check_filetype and wp_check_filetype_and_ext but never checking whether those validation calls produced errors before move_uploaded_file() is called, combined with no nonce or capability check on the AJAX handler. This makes it possible for unauthenticated attackers to upload files of dangerous types (e.g. PHP scripts) that may be executable, which makes remote code execution possible. The server returns the generated destination filename in the response, giving the attacker the exact path needed to trigger the uploaded file.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
