OpenAgenda Security & Risk Analysis

wordpress.org/plugins/openagenda

Display calendars from https://openagenda.com on your site.

300 active installs v3.0.1 PHP 7.4.1+ WP 5.0+ Updated Mar 10, 2026
agendacalendareventeventsopenagenda
100
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is OpenAgenda Safe to Use in 2026?

Generally Safe

Score 100/100

OpenAgenda has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 24d ago
Risk Assessment

The "openagenda" v3.0.1 plugin exhibits a mixed security posture. While it has no recorded vulnerabilities in its history, suggesting a generally well-maintained codebase, the static analysis reveals significant concerns. The presence of two AJAX handlers without authentication checks creates a substantial attack surface, leaving the plugin vulnerable to unauthorized actions by unauthenticated users. Additionally, the lack of prepared statements for all SQL queries poses a risk of SQL injection vulnerabilities. Although the plugin demonstrates good practices in output escaping and nonce checks, these are overshadowed by the critical lack of authorization on its AJAX endpoints. The bundled Guzzle library, while not explicitly flagged for outdatedness in the provided data, is a common component that could introduce vulnerabilities if not kept up-to-date in other contexts. Overall, the plugin has strengths in output sanitization but weaknesses in authentication and authorization for key entry points.

Key Concerns

  • AJAX handlers without auth checks
  • SQL queries not using prepared statements
Vulnerabilities
None known

OpenAgenda Security Vulnerabilities

No known vulnerabilities — this is a good sign.
Code Analysis
Analyzed Mar 16, 2026

OpenAgenda Code Analysis

Dangerous Functions
0
Raw SQL Queries
2
0 prepared
Unescaped Output
51
431 escaped
Nonce Checks
3
Capability Checks
1
File Operations
0
External Requests
3
Bundled Libraries
1

Bundled Libraries

Guzzle

SQL Query Safety

0% prepared2 total queries

Output Escaping

89% escaped482 total outputs
Data Flows
1 unsanitized

Data Flow Analysis

3 flows1 with unsanitized paths
save_permalinks_settings (inc\class-settings.php:553)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
2 unprotected

OpenAgenda Attack Surface

Entry Points2
Unprotected2

AJAX Handlers 2

authwp_ajax_update_eventsinc\class-ajax-handler.php:37
noprivwp_ajax_update_eventsinc\class-ajax-handler.php:38
WordPress Hooks 44
actionadmin_menuinc\class-admin-pages.php:33
actionopenagenda_admin_page_general_tab_contentinc\class-admin-pages.php:34
actionopenagenda_admin_page_integrations_tab_contentinc\class-admin-pages.php:35
actionadmin_post_get_adjacent_eventinc\class-ajax-handler.php:39
actionadmin_post_nopriv_get_adjacent_eventinc\class-ajax-handler.php:40
actioninitinc\class-content-manager.php:26
actioninitinc\class-content-manager.php:27
actionwp_headinc\class-content-manager.php:28
actionwp_headinc\class-content-manager.php:29
filterbody_classinc\class-content-manager.php:30
filterdocument_title_partsinc\class-content-manager.php:31
filterthe_contentinc\class-content-manager.php:32
filterwrite_your_storyinc\class-content-manager.php:33
filterget_pagesinc\class-content-manager.php:34
actionpre_get_postsinc\class-content-manager.php:35
filterget_canonical_urlinc\class-content-manager.php:39
filterget_shortlinkinc\class-content-manager.php:40
filterwpseo_canonicalinc\class-content-manager.php:41
filterwpseo_replacementsinc\class-content-manager.php:42
filterwpseo_metadescinc\class-content-manager.php:43
filterwpseo_twitter_descriptioninc\class-content-manager.php:44
filterwpseo_twitter_imageinc\class-content-manager.php:45
filterwpseo_twitter_titleinc\class-content-manager.php:46
filterwpseo_opengraph_titleinc\class-content-manager.php:47
filterwpseo_opengraph_descinc\class-content-manager.php:48
filterwpseo_opengraph_urlinc\class-content-manager.php:49
filterwpseo_opengraph_imageinc\class-content-manager.php:50
actioncustomize_registerinc\class-customizer-settings.php:44
actioncustomize_preview_initinc\class-customizer-settings.php:45
actionwpinc\class-main.php:82
actionwp_headinc\class-main.php:83
actionwidgets_initinc\class-main.php:84
actionwp_enqueue_scriptsinc\class-main.php:85
actionadmin_enqueue_scriptsinc\class-main.php:86
actionadd_meta_boxesinc\class-metaboxes.php:32
actionsave_post_oa-calendarinc\class-metaboxes.php:33
actionadmin_initinc\class-settings.php:45
actionadmin_initinc\class-settings.php:46
filteropenagenda_event_navigationinc\template-filters.php:9
filteropenagenda_adjacent_event_linkinc\template-filters.php:32
filteropenagenda_back_linkinc\template-filters.php:90
actioninitopenagenda.php:41
actionplugins_loadedopenagenda.php:105
actionplugins_loadedopenagenda.php:151
Maintenance & Trust

OpenAgenda Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedMar 10, 2026
PHP min version7.4.1
Downloads9K

Community Trust

Rating100/100
Number of ratings3
Active installs300
Developer Profile

OpenAgenda Developer Profile

openagenda

1 plugin · 300 total installs

94
trust score
Avg Security Score
100/100
Avg Patch Time
30 days
View full developer profile
Detection Fingerprints

How We Detect OpenAgenda

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/openagenda/css/openagenda-admin.css/wp-content/plugins/openagenda/js/openagenda-admin.js
Script Paths
/wp-content/plugins/openagenda/js/openagenda-admin.js
Version Parameters
openagenda-admin.css?ver=openagenda-admin.js?ver=

HTML / DOM Fingerprints

CSS Classes
oa-calendar-field-wrapper
HTML Comments
OpenAgenda settings pageTabs to register
Data Attributes
data-target-id="openagenda-general-settings"data-target-id="openagenda-integrations-settings"
JS Globals
oa_admin_params
FAQ

Frequently Asked Questions about OpenAgenda