{"schema":"threatline.record/2","record":{"id":"CVE-2026-92115","aliases":[],"summary":"WP Photo Album Plus <= 9.3.02.002 - Authenticated (Custom+) Command Injection via 'value' Parameter (crop item) in update-photo AJAX Action","details":"The WP Photo Album Plus plugin for WordPress is vulnerable to authenticated Command Injection in all versions up to, and including, 9.3.02.002 via the `value` parameter of the `update-photo` AJAX action. This is due to insufficient shell escaping within the `wppa_image_magick_a()` function, where the attacker-controlled `value` parameter is concatenated raw — without `escapeshellarg()` — into an ImageMagick command string before being passed to `exec()`; further, `wppa_decode()` actively restores percent-encoded shell metacharacters (e.g., `%26`→`&`, `%23`→`#`) rather than stripping them, allowing crafted payloads to survive sanitization and break out of the ImageMagick argument context. This makes it possible for authenticated attackers holding the plugin-defined `wppa_upload` capability to execute arbitrary operating-system commands as the web-server user, achieving full remote code execution on the underlying server. Exploitation requires ImageMagick to be enabled on the server; the `wppa_upload` capability is a plugin-level privilege that site administrators may grant to lower-privileged WordPress roles via the plugin's Users settings, broadening the pool of potential attackers beyond administrators.","categories":["Unclassified"],"product":"WP Photo Album Plus","vendor":"opajaap","ecosystem":null,"affected_ranges":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-92115","source_modified_at":"2026-10-16T15:09:37.836Z","fetched_at":"2026-10-23T18:48:36.087640Z","product":"WP Photo Album Plus","vendor":"opajaap","versions":[{"version":"0","status":"affected","lessThanOrEqual":"9.3.02.002","versionType":"semver"}],"defaultStatus":"unaffected"}],"fixed_versions":[],"cvss":8.8,"severity":"High","kev":{"listed":false},"epss":{"probability":0.01475,"percentile":0.73648,"score_date":"2026-10-23"},"published_at":"2026-10-16T06:41:08.509Z","modified_at":"2026-10-16T15:09:37.836Z","provenance":[{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-92115","fetched_at":"2026-10-23T18:48:36.087640Z","source_modified_at":"2026-10-16T15:09:37.836Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-92115","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["CVE List","EPSS"],"references":[{"source":"CVE List","url":"https://www.wordfence.com/threat-intel/vulnerabilities/id/fc663d68-ca52-4012-847f-09817c121890?source=cve"},{"source":"CVE List","url":"https://plugins.trac.wordpress.org/browser/wp-photo-album-plus/tags/9.3.01.003/wppa-photo-files.php#L874"},{"source":"CVE List","url":"https://plugins.trac.wordpress.org/browser/wp-photo-album-plus/tags/9.3.01.003/wppa-photo-files.php#L859"},{"source":"CVE List","url":"https://plugins.trac.wordpress.org/browser/wp-photo-album-plus/tags/9.3.01.003/wppa-ajax.php#L2557"},{"source":"CVE List","url":"https://plugins.trac.wordpress.org/browser/wp-photo-album-plus/tags/9.3.01.003/wppa-ajax.php#L2211"},{"source":"CVE List","url":"https://plugins.trac.wordpress.org/browser/wp-photo-album-plus/tags/9.3.01.003/wppa-ajax.php#L2223"},{"source":"CVE List","url":"https://downloads.wordpress.org/plugin/wp-photo-album-plus.9.3.02.003.zip"}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","cvss_source":"CVE List","ssvc":{"exploitation":"none","automatable":"no","technical_impact":"total","assessed_at":"2026-10-16T14:53:46.430953Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":null,"confidence":"unknown","reviewed":false},"change_timestamp":"2026-10-16T15:09:37.836Z","content_hash":"deb0cd8a49f898148fcd368988dcad87dd3fd60d9a04a46347c291478790b6b3"}}
