CVE-2026-5524 Exposes a Public Executable Upload Path
Divi Form Builder accepts images and file attachments from frontend forms. In versions through 5.1.8, an unauthenticated visitor can reach `do_image_upload()` after collecting a nonce from any public page that contains one of those forms. The visitor supplies both a file and the `acceptFileTypes` POST parameter used to decide whether its extension is allowed. Accepted files are written beneath `/wp-content/uploads/de_fb_uploads/`, a location that can be requested directly over HTTP. If the server treats the selected extension as PHP, opening the uploaded file executes attacker-controlled code. The pre-authentication path and potential full compromise account for the 9.8 CVSS score.
Client Input Rewrites the File-Type Allowlist
The central validation error is a trust-boundary failure. `do_image_upload()` directly interpolates `acceptFileTypes` into the regular expression that validates the uploaded filename. That parameter comes from the visitor's POST request, so the client effectively chooses which extensions pass the server's check. An attacker can specify `.phtml`, `.phar`, `.php5`, or `.php7` and submit a matching executable script. Safe handling must ignore the browser's claimed accepted types, extract the final extension, reject every PHP-executable format, and compare the result with the form configuration stored on the server. Divi Form Builder 5.1.9 changed uploads so visitors can no longer override the file types configured for the form.
A Public Nonce Is Not Upload Authorization
The request requires a nonce, but any anonymous visitor can obtain one by loading a public page containing a Divi Form Builder form. Satisfying that check therefore does not establish a trusted identity or permission to choose executable file types. A nonce helps WordPress validate request intent and resist cross-site request forgery; it is not authentication, authorization, or file validation. The server must still enforce its own immutable extension policy. Version 5.1.3 partially addressed the vulnerability, but the attacker-controlled extension path remained exploitable through 5.1.8.
.htaccess Does Not Provide a Portable Security Boundary
The plugin's secondary defense is incomplete in two independent ways. On Apache-compatible configurations, its `.htaccess` protection targets `.php` specifically, leaving alternative PHP-executable suffixes such as `.phtml`, `.phar`, `.php5`, and `.php7` outside that rule. On Nginx, the entire file is inert because Nginx does not read per-directory `.htaccess` directives. Once an executable upload reaches the public directory, an HTTP request can invoke it wherever the server maps that suffix to PHP. Administrators can reduce exposure by disabling script execution throughout upload directories, but server configuration does not correct the application-level validation flaw.
BitFire Stops the Request and the Filesystem Outcome
Automated exploitation sends an attacker-controlled POST containing `acceptFileTypes`, a file attachment, and the public-form values needed to reach the handler. BitFire bot protection detects unknown automation and browser impersonation when those clients submit unknown GET or POST parameters, rejecting the request before Divi Form Builder processes it. BitFire PRO RASP then supplies an independent final boundary: its filesystem protection prevents unauthorized PHP file creation or modification from any request vector. That runtime policy protects the outcome even when a valid nonce and vulnerable regular expression allow the request to advance, and it does not rely on Apache, `.htaccess`, a particular PHP suffix, or a CVE-specific signature.
Conclusion: Enforce Upload Controls Beyond Form Code
The vendor changelog records the server-side file-type correction in version 5.1.9. Administrators can verify their installed release, inspect `/wp-content/uploads/de_fb_uploads/` for unexpected executable files, review requests involving `acceptFileTypes`, and confirm that the web server never executes scripts from upload directories. CVE-2026-5524 demonstrates why site administrators need a security solution with built-in access controls and zero-day protection when a plugin trusts browser-controlled validation data. BitFire's behavior-based bot controls can stop unknown automated requests before vulnerable code runs, while PRO RASP denies the unauthorized PHP file creation required for remote code execution even before a vulnerability-specific rule exists.