Quick answers
- Is CVE-2026-81931 exploited in the wild?
- No. Junglewise Threat Intelligence has no report of CVE-2026-81931 being exploited in the wild.
- How severe is CVE-2026-81931?
- Informational severity, with a CVSS score of 4.8, published 27 August 2026.
- Which products and versions are affected?
- Roskus Prospero Flow CRM before 5.16.0.
- Is there a fix for CVE-2026-81931?
- A patch was published on 2026-08-27: Fix available in main branch; version 5.16.0 not yet released with tag Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
- How is CVE-2026-81931 attacked?
- It is attacked over the network, in a web application.
- Am I affected by CVE-2026-81931?
- Check whether you run Roskus Prospero Flow CRM at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.
Technical details
The vulnerability is a stored cross-site scripting (CWE-79) flaw resulting from unrestricted file upload (CWE-434) in the ProductSaveController::save() method. The photo validation rule classifies files by content (magic bytes) and maintains a denylist of dangerous PHP extensions (php, php3-php8, phtml, phar), but fails to prevent HTML extensions. The vulnerable code uses getClientOriginalExtension() to derive the stored filename from the client-supplied extension rather than the validated content type, and stores the file in the public web root at public/asset/upload/product/. An attacker with create product permission can upload a file starting with valid image magic bytes but named with an .html extension; it passes validation, is stored as <uuid>.html, and served by nginx with Content-Type: text/html without requiring authentication, enabling first-party JavaScript execution. The fix in version 5.16.0 replaces getClientOriginalExtension() with extension() and adds an ExtensionMatchesContent validation rule; however, the fix is not yet released in a tagged version and users must deploy from the main branch.
Affected products
- Roskus Prospero Flow CRM before 5.16.0
Timeline
- 2026-08-27: disclosed
- 2026-08-27: patched: Fix available in main branch; version 5.16.0 not yet released with tag