PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes Security & Risk Analysis

wordpress.org/plugins/revisionary

Control how published content is updated. Users can duplicate posts and submit changes. Then editors can approve, reject or schedule those changes.

10K active installs v3.7.24 PHP 7.2.5+ WP 5.5+ Updated Apr 9, 2026
approve-changesduplicate-postrevisionscheduled-changessubmit-changes
93
A · Safe
CVEs total4
Unpatched0
Last CVEMar 20, 2026
Safety Verdict

Is PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes Safe to Use in 2026?

Generally Safe

Score 93/100

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes has a strong security track record. Known vulnerabilities have been patched promptly. It's a solid choice for most WordPress installations.

4 known CVEsLast CVE: Mar 20, 2026Updated 1mo ago
Risk Assessment

The plugin "revisionary" v3.7.24 presents a mixed security posture. While it demonstrates good practices like a high percentage of prepared SQL statements and properly escaped output, there are significant concerns. The presence of an unprotected AJAX handler is a critical vulnerability, providing an easy entry point for unauthenticated attackers. The taint analysis reveals a substantial number of flows with unsanitized paths, including nine high-severity flows, indicating potential for input manipulation leading to unintended behavior or security bypasses. Although there are no currently unpatched vulnerabilities, the history of two medium-severity CVEs, specifically related to Missing Authorization and Cross-site Scripting, suggests a recurring pattern of issues that require attention. The plugin has strengths in its code hygiene for SQL and output, but the critical unprotected AJAX endpoint and the high number of high-severity taint flows, coupled with past vulnerabilities, elevate the overall risk.

Key Concerns

  • Unprotected AJAX handler
  • High severity taint flows
  • Unsanitized paths in taint flows
  • Past vulnerabilities (medium severity)
Vulnerabilities
4 published

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes Security Vulnerabilities

CVEs by Year

2 CVEs in 2024
2024
2 CVEs in 2026
2026
Patched Has unpatched

Severity Breakdown

High
1
Medium
3

4 total CVEs

CVE-2026-32539high · 7.5Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes <= 3.7.23 - Unauthenticated SQL Injection

Mar 20, 2026 Patched in 3.7.24 (7d)
CVE-2026-25322medium · 4.3Cross-Site Request Forgery (CSRF)

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes <= 3.7.22 - Cross-Site Request Forgery

Jan 29, 2026 Patched in 3.7.23 (96d)
CVE-2024-11154medium · 4.3Missing Authorization

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes <= 3.5.15 - Missing Authorization to Authenticated (Subscriber+) Sensitive Information Exposure

Nov 19, 2024 Patched in 3.5.16 (2d)
CVE-2024-9436medium · 6.1Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes <= 3.5.14 - Reflected Cross-Site Scripting

Oct 10, 2024 Patched in 3.5.15 (1d)
Version History

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes Release Timeline

Code Analysis
Analyzed Mar 16, 2026

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes Code Analysis

Dangerous Functions
0
Raw SQL Queries
37
94 prepared
Unescaped Output
78
680 escaped
Nonce Checks
23
Capability Checks
131
File Operations
0
External Requests
1
Bundled Libraries
0

SQL Query Safety

72% prepared131 total queries

Output Escaping

90% escaped758 total outputs
Data Flows · Security
16 unsanitized

Data Flow Analysis

25 flows16 with unsanitized paths
echo_filter_link (admin\class-list-table-archive.php:940)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
1 unprotected

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes Attack Surface

Entry Points2
Unprotected1

AJAX Handlers 2

authwp_ajax_get-revision-diffsadmin\history_rvy.php:26
authwp_ajax_rvy_dismiss_msgrvy_init-functions.php:1302
WordPress Hooks 242
filterposts_clauses_requestadmin\admin-dashboard_rvy.php:7
actioninitadmin\admin-init_rvy.php:4
actionwp_loadedadmin\admin-init_rvy.php:395
actionwp_loadedadmin\admin-init_rvy.php:399
actionwp_loadedadmin\admin-init_rvy.php:416
actionwp_loadedadmin\admin-init_rvy.php:420
actionwp_loadedadmin\admin-init_rvy.php:424
actionwp_loadedadmin\admin-init_rvy.php:428
actionwp_loadedadmin\admin-init_rvy.php:432
filterqueryadmin\admin-init_rvy.php:448
actionall_admin_noticesadmin\admin-posts_rvy.php:10
actionadmin_enqueue_scriptsadmin\admin-posts_rvy.php:13
filterdisplay_post_statesadmin\admin-posts_rvy.php:15
filterpage_row_actionsadmin\admin-posts_rvy.php:16
filterpost_row_actionsadmin\admin-posts_rvy.php:17
filterdisplay_post_statesadmin\admin-posts_rvy.php:21
filterget_comments_numberadmin\admin-posts_rvy.php:22
filterqueryadmin\admin-posts_rvy.php:54
filterposts_whereadmin\admin-posts_rvy.php:56
filterposts_resultsadmin\admin-posts_rvy.php:59
actionmanage_product_posts_custom_columnadmin\admin-posts_rvy.php:60
filterget_edit_post_linkadmin\admin-posts_rvy.php:61
filteruser_has_capadmin\admin-posts_rvy.php:77
filteruser_has_capadmin\admin-posts_rvy.php:106
actionadmin_print_footer_scriptsadmin\admin-posts_rvy.php:134
actionrevisionary_page_rvy-net_optionsadmin\admin_lib-mu_rvy.php:11
actionrevisionary_page_rvy-default_optionsadmin\admin_lib-mu_rvy.php:22
actionadmin_headadmin\admin_rvy.php:26
filteradmin_body_classadmin\admin_rvy.php:27
actionadmin_enqueue_scriptsadmin\admin_rvy.php:28
actionrevisionary_admin_footeradmin\admin_rvy.php:29
actionadmin_print_scriptsadmin\admin_rvy.php:31
actionrevisionary_menuadmin\admin_rvy.php:36
actionadmin_menuadmin\admin_rvy.php:39
filterplugin_row_metaadmin\admin_rvy.php:42
actionadmin_print_scriptsadmin\admin_rvy.php:49
actionwp_loadedadmin\admin_rvy.php:62
actionthe_postadmin\admin_rvy.php:76
filterdashboard_glance_itemsadmin\admin_rvy.php:96
filterdashboard_recent_posts_query_argsadmin\admin_rvy.php:105
actionpre_get_postsadmin\admin_rvy.php:109
filterpresspermit_status_control_scriptsadmin\admin_rvy.php:112
filtercme_plugin_capabilitiesadmin\admin_rvy.php:114
filtercme_capability_descriptionsadmin\admin_rvy.php:115
filterrelevanssi_whereadmin\admin_rvy.php:117
actioninitadmin\admin_rvy.php:119
filterpublishpress_wp_reviews_display_banner_revisionaryadmin\admin_rvy.php:163
filterposts_clauses_requestadmin\admin_rvy.php:171
actionrevisionary_page_revisionary-settingsadmin\admin_rvy.php:394
filtermanage_revisionary-q_columnsadmin\class-list-table_rvy.php:26
actionmanage_posts_custom_columnadmin\class-list-table_rvy.php:28
actionmanage_pages_custom_columnadmin\class-list-table_rvy.php:29
actionadmin_footeradmin\class-list-table_rvy.php:93
filterpresspermit_skip_postmeta_filteringadmin\class-list-table_rvy.php:96
filterpresspermit_posts_where_extra_exception_opsadmin\class-list-table_rvy.php:215
filterpresspermit_posts_clauses_interceptadmin\class-list-table_rvy.php:318
filterposts_whereadmin\class-list-table_rvy.php:380
actionadmin_print_scriptsadmin\edit-revision-block-ui_rvy.php:10
actionadmin_headadmin\edit-revision-classic-ui_rvy.php:10
actionadmin_headadmin\edit-revision-classic-ui_rvy.php:11
filterpost_updated_messagesadmin\edit-revision-classic-ui_rvy.php:13
actionadd_meta_boxesadmin\edit-revision-classic-ui_rvy.php:15
filterpresspermit_editor_ui_statusadmin\edit-revision-classic-ui_rvy.php:17
filterpresspermit_post_editor_immediate_captionadmin\edit-revision-classic-ui_rvy.php:18
actionpost_submitbox_misc_actionsadmin\edit-revision-classic-ui_rvy.php:20
actionadmin_print_footer_scriptsadmin\edit-revision-classic-ui_rvy.php:23
actionadmin_headadmin\edit-revision-ui_rvy.php:10
filterpre_option_expirationdateGutenbergSupportadmin\edit-revision-ui_rvy.php:13
actionadmin_headadmin\filters-admin-ui-item_rvy.php:13
actionadmin_headadmin\filters-admin-ui-item_rvy.php:14
actionadmin_headadmin\filters-admin-ui-item_rvy.php:15
filterpresspermit_disable_exception_uiadmin\filters-admin-ui-item_rvy.php:17
actionload-revision.phpadmin\history_rvy.php:15
actionadmin_enqueue_scriptsadmin\history_rvy.php:17
actionadmin_headadmin\history_rvy.php:18
actionadmin_headadmin\history_rvy.php:19
actionadmin_print_scriptsadmin\history_rvy.php:20
actionadmin_print_footer_scriptsadmin\history_rvy.php:21
filterwp_prepare_revision_for_jsadmin\history_rvy.php:23
filterwp_get_revision_ui_diffadmin\history_rvy.php:25
actionparse_queryadmin\history_rvy.php:28
filterposts_clausesadmin\history_rvy.php:341
filterposts_whereadmin\history_rvy.php:343
filterposts_clausesadmin\history_rvy.php:393
filterpp_module_dirsadmin\post-edit-block-ui_rvy.php:12
actionenqueue_block_editor_assetsadmin\post-edit-block-ui_rvy.php:44
actionenqueue_block_editor_assetsadmin\post-edit-block-ui_rvy.php:45
filterpermalink_manager_show_uri_editor_postadmin\post-edit-block-ui_rvy.php:59
actionadmin_print_footer_scriptsadmin\post-edit-block-ui_rvy.php:101
actionadmin_headadmin\post-edit_rvy.php:8
filterpresspermit_preview_post_labeladmin\post-edit_rvy.php:11
filterpresspermit_preview_post_titleadmin\post-edit_rvy.php:12
actionpost_submitbox_misc_actionsadmin\post-edit_rvy.php:14
actionpost_submitbox_misc_actionsadmin\post-edit_rvy.php:15
filteruser_has_capadmin\post-edit_rvy.php:17
filterrevisionary_apply_revision_allowanceadmin\post-edit_rvy.php:19
actionadmin_print_footer_scriptsadmin\post-edit_rvy.php:111
action_wp_put_post_revisionadmin\revision-action_rvy.php:5
actionadmin_print_footer_scriptsadmin\revision-queue_rvy.php:37
actionadmin_initclasses\PublishPress\Revisionary.php:25
filterpreview_post_linkclasses\PublishPress\Revisions\Planner.php:13
filterget_delete_post_linkclasses\PublishPress\Revisions\Planner.php:24
filterpublishpress_item_action_linksclasses\PublishPress\Revisions\Planner.php:42
actionadmin_print_scriptsclasses\PublishPress\Revisions\Planner.php:54
actioninitclasses\PublishPress\Revisions\Planner.php:82
filterpublishpress_user_post_status_optionsclasses\PublishPress\Revisions\Planner.php:86
actioninitclasses\PublishPress\Revisions\Planner.php:89
filterpreview_post_linkclasses\PublishPress\Revisions\Planner.php:91
filter_presspermit_get_post_statusesclasses\PublishPress\Revisions\Planner.php:104
actionadmin_print_scriptsclasses\PublishPress\Revisions\Planner.php:106
filterpublishpress_content_board_new_post_statusesclasses\PublishPress\Revisions\Planner.php:127
filterpublishpress_content_overview_new_post_statusesclasses\PublishPress\Revisions\Planner.php:128
filterpublishpress_calendar_post_statusesclasses\PublishPress\Revisions\Planner.php:130
filterPP_Content_Overview_posts_query_argsclasses\PublishPress\Revisions\Planner.php:132
filterpp_calendar_posts_query_argsclasses\PublishPress\Revisions\Planner.php:133
filterPP_Content_Overview_item_actionsclasses\PublishPress\Revisions\Planner.php:254
filterposts_whereclasses\PublishPress\Revisions\Planner.php:296
actioninitclasses\PublishPress\Revisions\PlannerContentBoard.php:14
filterPP_Content_Board_item_actionsclasses\PublishPress\Revisions\PlannerContentBoard.php:16
filterpublishpress_user_post_status_optionsclasses\PublishPress\Revisions\PlannerContentBoard.php:30
actionadmin_print_scriptsclasses\PublishPress\Revisions\PlannerContentBoard.php:51
filterPP_Content_Board_posts_query_argsclasses\PublishPress\Revisions\PlannerContentBoard.php:93
filterposts_whereclasses\PublishPress\Revisions\PlannerContentBoard.php:100
filterposts_fieldsclasses\PublishPress\Revisions\PlannerContentBoard.php:139
filterposts_whereclasses\PublishPress\Revisions\PlannerContentBoard.php:140
filterwp_insert_post_dataclasses\PublishPress\Revisions\PluginCompat.php:9
actionpp_post_insert_editorial_commentclasses\PublishPress\Revisions\PluginCompat.php:12
filterpublishpress_notif_workflow_receiver_post_authorsclasses\PublishPress\Revisions\PluginCompat.php:14
filterpresspermit_exception_clauseclasses\PublishPress\Revisions\PluginCompat.php:16
filterqueryclasses\PublishPress\Revisions\PluginCompat.php:21
filtercustom_permalinks_request_ignoreclasses\PublishPress\Revisions\PluginCompat.php:30
filterqueryclasses\PublishPress\Revisions\PluginCompat.php:31
filtercp_remove_like_queryclasses\PublishPress\Revisions\PluginCompat.php:35
filterauthors_default_authorclasses\PublishPress\Revisions\PluginCompat.php:41
filterthe_authorclasses\PublishPress\Revisions\PostPreview.php:6
filterthe_authorclasses\PublishPress\Revisions\PostPreview.php:19
filterdefault_options_rvycompat_rvy.php:5
filteroptions_sitewide_rvycompat_rvy.php:6
filterrevisionary_post_revision_statuscompat_rvy.php:8
filterrevisionary_require_base_statusescompat_rvy.php:9
filteruser_has_capcompat_rvy.php:11
filtermap_meta_capcompat_rvy.php:36
filterpresspermit_maybe_override_authors_changecompat_rvy.php:64
actionsave_postcompat_rvy.php:66
actionadd_meta_boxescompat_rvy.php:68
filterpresspermit_get_exception_itemscompat_rvy.php:70
filterpresspermit_get_exception_itemscompat_rvy.php:83
filteroption_page_on_frontfront_rvy.php:11
actionparse_queryfront_rvy.php:14
actionparse_queryfront_rvy.php:15
filterposts_clauses_requestfront_rvy.php:18
filterbody_classfront_rvy.php:21
filteracf/load_valuefront_rvy.php:23
filterget_post_metadatafront_rvy.php:24
filterposts_requestfront_rvy.php:27
actiontemplate_redirectfront_rvy.php:28
filterthe_authorfront_rvy.php:32
actiontemplate_redirectfront_rvy.php:36
filterposts_resultsfront_rvy.php:39
filterthe_postsfront_rvy.php:40
actioninitfront_rvy.php:44
filterposts_requestfront_rvy.php:290
filterredirect_canonicalfront_rvy.php:411
actionwp_headfront_rvy.php:737
actionwp_enqueue_scriptsfront_rvy.php:739
actionwp_enqueue_scriptsfront_rvy.php:742
actionwp_print_footer_scriptsfront_rvy.php:746
actionadmin_print_scriptsincludes\CoreAdmin.php:6
actionpublishpress_revisions_settings_sidebarincludes\CoreAdmin.php:8
filterpublishpress_revisions_settings_sidebar_classincludes\CoreAdmin.php:9
filterpp_rest_post_cap_requirementrest_rvy.php:15
filterpre_wp_update_comment_count_nowrevision-creation_rvy.php:242
actionadmin_noticesrevisionary.php:54
actionadmin_noticesrevisionary.php:71
filterplugin_row_metarevisionary.php:115
actionadmin_noticesrevisionary.php:128
actioninitrevisionary.php:178
actionadmin_footerrevisionary.php:233
actioninitrevisionary.php:272
actioninitrevisionary.php:275
actionwp_loadedrevisionary.php:276
actioninitrevisionary.php:279
actionplugins_loadedrevisionary.php:288
actioninitrevisionary_main.php:39
filterpre_wp_update_comment_count_nowrevisionary_main.php:48
filterpresspermit_is_previewrevisionary_main.php:114
filterpresspermit_query_post_statusesrevisionary_main.php:115
filtermap_meta_caprevisionary_main.php:117
filtermap_meta_caprevisionary_main.php:120
filtermap_meta_caprevisionary_main.php:122
filterpresspermit_posts_clauses_interceptrevisionary_main.php:123
filterpresspermit_apply_posts_teaserrevisionary_main.php:125
filteruser_has_caprevisionary_main.php:127
filtermap_meta_caprevisionary_main.php:129
filterpresspermit_exception_clauserevisionary_main.php:132
filterpresspermit_additions_clauserevisionary_main.php:172
actionwpmu_new_blogrevisionary_main.php:202
actiontrashed_postrevisionary_main.php:204
actiondeleted_postrevisionary_main.php:206
filterwp_insert_post_datarevisionary_main.php:210
filterwp_insert_post_datarevisionary_main.php:213
filterwp_insert_post_datarevisionary_main.php:215
filterrest_pre_dispatchrevisionary_main.php:218
actionwp_default_scriptsrevisionary_main.php:226
actionwp_default_scriptsrevisionary_main.php:234
filterget_comments_numberrevisionary_main.php:238
actionsave_postrevisionary_main.php:240
actiondelete_postrevisionary_main.php:241
actionpost_updatedrevisionary_main.php:243
actionpost_updatedrevisionary_main.php:244
filterwp_revisions_to_keeprevisionary_main.php:246
filterposts_clausesrevisionary_main.php:248
actionadmin_bar_menurevisionary_main.php:251
filterwp_dropdown_pagesrevisionary_main.php:254
filterwp_dropdown_pagesrevisionary_main.php:319
actionrest_api_initrvy_init-functions.php:430
actionrest_api_initrvy_init-functions.php:441
filtergettext_with_contextrvy_init-functions.php:708
actionwp_loadedrvy_init-functions.php:1336
actionrvy_initrvy_init-functions.php:1359
actioninitrvy_init-functions.php:1599
filterwp_rest_cache/skip_cachingrvy_init-functions.php:1631
actioninitrvy_init.php:7
filterrank_math/excluded_post_typesrvy_init.php:9
actionwp_loadedrvy_init.php:30
filterredirect_canonicalrvy_init.php:55
actioninitrvy_init.php:59
actionrvy_mail_buffer_hookrvy_init.php:60
filtercron_schedulesrvy_init.php:61
actionpublish_revision_rvyrvy_init.php:64
actionupdate_option_rvy_scheduled_publish_cronrvy_init.php:66
actionbefore_delete_postrvy_init.php:68
actionrvy_delete_revisionrvy_init.php:78
actionuntrash_postrvy_init.php:79
actioninitrvy_init.php:85
filteracf/pre_load_post_idrvy_init.php:101
actioninitrvy_init.php:120
actioninitrvy_init.php:166
filterwpseo_should_save_indexablervy_init.php:177
actioninitsubmittee_rvy.php:72
filteruse_block_editor_for_post_typeutils.php:135
filteruse_block_editor_for_post_typeutils.php:214

Scheduled Events 5

publish_revision_rvy
publish_revision_rvy
publish_revision_rvy
rvy_mail_buffer_hook
publish_revision_rvy
Maintenance & Trust

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedApr 9, 2026
PHP min version7.2.5
Downloads727K

Community Trust

Rating92/100
Number of ratings64
Active installs10K
Developer Profile

PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes Developer Profile

PublishPress

11 plugins · 272K total installs

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

How We Detect PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/revisionary/assets/css/common.css/wp-content/plugins/revisionary/assets/css/editor.css/wp-content/plugins/revisionary/assets/css/admin.css/wp-content/plugins/revisionary/assets/js/editor.js/wp-content/plugins/revisionary/assets/js/admin.js/wp-content/plugins/revisionary/assets/js/common.js
Script Paths
/wp-content/plugins/revisionary/assets/js/common.js/wp-content/plugins/revisionary/assets/js/editor.js/wp-content/plugins/revisionary/assets/js/admin.js
Version Parameters
revisionary/assets/css/common.css?ver=revisionary/assets/css/editor.css?ver=revisionary/assets/css/admin.css?ver=revisionary/assets/js/editor.js?ver=revisionary/assets/js/admin.js?ver=revisionary/assets/js/common.js?ver=

HTML / DOM Fingerprints

CSS Classes
rvy-usersrevisionaryrev-user-statusrev-post-statusrev-post-typerev-workflowrevisionary-metaboxrev-post-lock
HTML Comments
<!-- revisionary: metabox --><!-- END revisionary: metabox --><!-- revisionary: admin page --><!-- END revisionary: admin page -->+2 more
Data Attributes
data-rvy-post-iddata-rvy-user-iddata-revisionary-field
JS Globals
Revisionaryrvy_vars
REST Endpoints
/wp-json/revisionary/v1/posts/wp-json/revisionary/v1/users/wp-json/revisionary/v1/settings
FAQ

Frequently Asked Questions about PublishPress Revisions: Duplicate Posts, Submit, Approve and Schedule Content Changes