SpeakOut! Email Petitions Security & Risk Analysis

wordpress.org/plugins/speakout

SpeakOut! Email Petitions makes it easy to add petitions to your website and rally your community to Speak Out about a cause by using direct action.

3K active installs v4.6.5.1 PHP 7.4+ WP 5.0+ Updated Mar 4, 2026
activismcommunityemailpetitionsocial-media
95
A · Safe
CVEs total4
Unpatched0
Last CVEJan 6, 2025
Safety Verdict

Is SpeakOut! Email Petitions Safe to Use in 2026?

Generally Safe

Score 95/100

SpeakOut! Email Petitions has a strong security track record. Known vulnerabilities have been patched promptly.

4 known CVEsLast CVE: Jan 6, 2025Updated 1mo ago
Risk Assessment

The SpeakOut plugin v4.6.5.1 presents a mixed security posture. On the positive side, it demonstrates good practices by consistently using prepared statements for its SQL queries and has a high percentage of properly escaped output. The plugin also includes nonce checks for all identified AJAX handlers and capability checks for several functions, indicating some awareness of security principles. However, several significant concerns emerge from the static analysis. The presence of 4 unprotected AJAX handlers creates a substantial attack surface. Furthermore, the taint analysis reveals 8 high-severity flows with unsanitized paths, suggesting a critical risk of vulnerabilities if these flows are exploitable. The vulnerability history, with 4 known CVEs including one critical and three medium, and the recent critical vulnerability dating to early 2025, indicates a pattern of past security weaknesses that have required significant patching. While there are currently no unpatched CVEs, the historical prevalence of critical and medium vulnerabilities, particularly those related to XSS and SQL injection, is a considerable red flag. The use of the `unserialize` function, while not explicitly flagged as a vulnerability in the taint analysis, is often associated with security risks if not handled with extreme caution and proper input validation.

Key Concerns

  • 4 unprotected AJAX handlers
  • 8 high severity taint flows with unsanitized paths
  • 1 critical CVE in vulnerability history
  • 3 medium CVEs in vulnerability history
  • 4 dangerous functions (unserialize)
Vulnerabilities
4

SpeakOut! Email Petitions Security Vulnerabilities

CVEs by Year

1 CVE in 2021
2021
2 CVEs in 2022
2022
1 CVE in 2025
2025
Patched Has unpatched

Severity Breakdown

Critical
1
Medium
3

4 total CVEs

CVE-2025-22309medium · 6.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

SpeakOut! Email Petitions <= 4.4.2 - Authenticated (Contributor+) Stored Cross-Site Scripting

Jan 6, 2025 Patched in 4.5.0 (10d)
WF-624af5e1-dc40-4d33-bfac-1a409b81a096-speakoutmedium · 6.1Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

SpeakOut! Email Petitions <= 4.0.3 - Reflected Cross-Site Scripting

Nov 20, 2022 Patched in 4.0.4 (429d)
CVE-2022-0846critical · 9.8Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

SpeakOut! Email Petitions < 2.14.15.1 - Unauthenticated SQL Injection

Mar 7, 2022 Patched in 2.14.15.1 (687d)
WF-be44a7e0-f0e0-4e2e-ac1e-0550d8e5d994-speakoutmedium · 6.1Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

SpeakOut! Email Petitions <= 2.13.1.1 - Cross-Site Scripting

Aug 9, 2021 Patched in 2.13.3 (897d)
Code Analysis
Analyzed Mar 16, 2026

SpeakOut! Email Petitions Code Analysis

Dangerous Functions
4
Raw SQL Queries
0
90 prepared
Unescaped Output
148
635 escaped
Nonce Checks
11
Capability Checks
6
File Operations
12
External Requests
0
Bundled Libraries
1

Dangerous Functions Found

unserialize$this->address_fields = unserialize( $petition->address_fields );includes\class.petition.php:968
unserialize$signature_columns = unserialize( $this->signaturelist_columns );includes\class.settings.php:380
unserialize$columns = unserialize( $options['signaturelist_columns'] );includes\class.signaturelist.php:47
unserialize$columns = unserialize( $options['signaturelist_columns'] );includes\class.signaturelist.php:195

Bundled Libraries

Guzzle

SQL Query Safety

100% prepared90 total queries

Output Escaping

81% escaped783 total outputs
Data Flows
11 unsanitized

Data Flow Analysis

13 flows11 with unsanitized paths
dk_speakout_paginate_signaturelist (includes\ajax.php:96)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
4 unprotected

SpeakOut! Email Petitions Attack Surface

Entry Points11
Unprotected4

AJAX Handlers 5

authwp_ajax_dk_speakout_sendmailincludes\ajax.php:6
noprivwp_ajax_dk_speakout_sendmailincludes\ajax.php:7
authwp_ajax_dk_speakout_paginate_signaturelistincludes\ajax.php:94
noprivwp_ajax_dk_speakout_paginate_signaturelistincludes\ajax.php:95
authwp_ajax_dk_speakout_hide_mailerlite_formincludes\ajax.php:112

Shortcodes 6

[signaturecount] includes\emailpetition.php:11
[signaturegoal] includes\emailpetition.php:30
[petitiontitle] includes\emailpetition.php:49
[petitionmessage] includes\emailpetition.php:68
[emailpetition] includes\emailpetition.php:147
[signaturelist] includes\signaturelist.php:4
WordPress Hooks 11
actionadmin_menuincludes\admin.php:4
actionadmin_headincludes\admin.php:87
actionadmin_enqueue_scriptsincludes\admin.php:109
actiontemplate_redirectincludes\confirmations.php:9
actionadmin_menuincludes\csv.php:8
filterthe_postsincludes\emailpetition.php:237
actionplugins_loadedincludes\install.php:261
filterthe_postsincludes\signaturelist.php:75
actionwidgets_initincludes\widget.php:3
actioninitspeakout-email-petitions.php:40
filterplugin_row_metaspeakout-email-petitions.php:72
Maintenance & Trust

SpeakOut! Email Petitions Maintenance & Trust

Maintenance Signals

WordPress version tested6.8.5
Last updatedMar 4, 2026
PHP min version7.4
Downloads326K

Community Trust

Rating96/100
Number of ratings43
Active installs3K
Developer Profile

SpeakOut! Email Petitions Developer Profile

RopeSwingHld

1 plugin · 3K total installs

76
trust score
Avg Security Score
95/100
Avg Patch Time
506 days
View full developer profile
Detection Fingerprints

How We Detect SpeakOut! Email Petitions

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/speakout/css/speakout.css/wp-content/plugins/speakout/css/petitionlist.css/wp-content/plugins/speakout/css/widget.css/wp-content/plugins/speakout/css/donate.css/wp-content/plugins/speakout/js/petitionform.js/wp-content/plugins/speakout/js/petitionlist.js/wp-content/plugins/speakout/js/widget.js/wp-content/plugins/speakout/js/donate.js
Script Paths
/wp-content/plugins/speakout/js/petitionform.js/wp-content/plugins/speakout/js/petitionlist.js/wp-content/plugins/speakout/js/widget.js/wp-content/plugins/speakout/js/donate.js
Version Parameters
speakout/css/speakout.css?ver=speakout/css/petitionlist.css?ver=speakout/css/widget.css?ver=speakout/css/donate.css?ver=speakout/js/petitionform.js?ver=speakout/js/petitionlist.js?ver=speakout/js/widget.js?ver=speakout/js/donate.js?ver=

HTML / DOM Fingerprints

CSS Classes
dk-speakout-petition-formdk-speakout-petition-listdk-speakout-widgetdk-speakout-donate-buttondk_speakout_admin_menu
HTML Comments
SpeakOut! Email Petitions pluginAdmin menu
Data Attributes
data-petition-iddata-target-emaildata-thank-you-messagedata-signature-count
JS Globals
SpeakOutPetitionsdk_speakout_ajax_object
REST Endpoints
/wp-json/speakout/v1/petition//wp-json/speakout/v1/signature/
Shortcode Output
[speakout][speakout_list]
FAQ

Frequently Asked Questions about SpeakOut! Email Petitions