Opal Service Security & Risk Analysis

wordpress.org/plugins/opal-service

Opal Service is a flexible WordPress plugin that lets you display your company’s services in a variety of ways: as single pages, and even as embedded …

900 active installs v1.9.1 PHP + WP + Updated Feb 6, 2023
services
63
C · Use Caution
CVEs total1
Unpatched1
Last CVESep 30, 2025
Safety Verdict

Is Opal Service Safe to Use in 2026?

Use With Caution

Score 63/100

Opal Service has 1 unpatched vulnerability. Evaluate alternatives or apply available mitigations.

1 known CVE 1 unpatched Last CVE: Sep 30, 2025Updated 3yr ago
Risk Assessment

The "opal-service" plugin v1.9.1 presents a mixed security posture. While it demonstrates good practices in areas like SQL query sanitization and avoids dangerous functions or file operations, significant concerns arise from its attack surface and vulnerability history. The presence of three AJAX handlers without authentication checks represents a direct entry point for potential attackers, and this is further highlighted by the taint analysis showing flows with unsanitized paths, indicating that user-supplied data may not be handled securely. The plugin's vulnerability history is particularly alarming, with one unpatched medium-severity CVE, specifically Cross-Site Scripting (XSS). This suggests a recurring issue with input validation and output escaping, even though the static analysis reports some output escaping is in place.

Key Concerns

  • Unpatched CVE (medium severity)
  • AJAX handlers without auth checks (3)
  • Taint flows with unsanitized paths (3)
  • Output escaping only 55% properly done
Vulnerabilities
1

Opal Service Security Vulnerabilities

CVEs by Year

1 CVE in 2025 · unpatched
2025
Patched Has unpatched

Severity Breakdown

Medium
1

1 total CVE

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

Opal Service <= 1.9.1 - Authenticated (Contributor+) Stored Cross-Site Scripting

Sep 30, 2025Unpatched
Code Analysis
Analyzed Mar 16, 2026

Opal Service Code Analysis

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

Output Escaping

55% escaped317 total outputs
Data Flows
3 unsanitized

Data Flow Analysis

3 flows3 with unsanitized paths
render_ajax (inc\vendors\cmb2\custom-fields\agent_info.php:55)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
3 unprotected

Opal Service Attack Surface

Entry Points9
Unprotected3

AJAX Handlers 9

authwp_ajax_property_change_agent_infoinc\vendors\cmb2\custom-fields\agent_info.php:11
authwp_ajax_opalrealestate_upload_imagesinc\vendors\cmb2\custom-fields\upload\upload.php:33
noprivwp_ajax_opalrealestate_upload_imagesinc\vendors\cmb2\custom-fields\upload\upload.php:34
authwp_ajax_opalrealestate_upload_user_avatarinc\vendors\cmb2\custom-fields\upload\upload.php:36
noprivwp_ajax_opalrealestate_upload_user_avatarinc\vendors\cmb2\custom-fields\upload\upload.php:37
authwp_ajax_opalrealestate_delete_property_imageinc\vendors\cmb2\custom-fields\upload\upload.php:40
noprivwp_ajax_opalrealestate_delete_property_imageinc\vendors\cmb2\custom-fields\upload\upload.php:41
authwp_ajax_opalrealestate_user_uploadinc\vendors\cmb2\custom-fields\user_upload\user_upload.php:33
noprivwp_ajax_wp_ajax_opalrealestate_user_uploadinc\vendors\cmb2\custom-fields\user_upload\user_upload.php:34
WordPress Hooks 60
actionadmin_menuinc\admin\register-settings.php:52
actionadmin_initinc\admin\register-settings.php:54
actioncmb2_render_opalservice_titleinc\admin\register-settings.php:57
actioncmb2_render_apiinc\admin\register-settings.php:59
actioncmb2_render_license_keyinc\admin\register-settings.php:60
actioncmb2_save_options-page_fieldsinc\admin\register-settings.php:61
actionadmin_print_styles-opalservice_service_page_opalservice-settingsinc\admin\register-settings.php:64
filtercmb2_get_metabox_form_formatinc\admin\register-settings.php:642
actionopalservice_settings_tab_api_keysinc\admin\register-settings.php:740
actioncustomize_registerinc\class-opalservice-customizer.php:110
actionafter_setup_themeinc\class-opalservice-customizer.php:115
actionwp_headinc\class-opalservice-scripts.php:24
actionwp_enqueue_scriptsinc\class-opalservice-scripts.php:26
actionadmin_enqueue_scriptsinc\class-opalservice-scripts.php:27
actioninitinc\class-opalservice-scripts.php:28
actionwidgets_initinc\class-opalservice-widgets.php:3
filtertemplate_includeinc\class-template-loader.php:27
filteropalservice_areasize_unit_formatinc\mixes-functions.php:110
actionafter_switch_themeinc\mixes-functions.php:249
actioninitinc\post-types\class-posttype-service.php:25
filtermanage_opal_service_posts_columnsinc\post-types\class-posttype-service.php:27
actionmanage_opal_service_posts_custom_columninc\post-types\class-posttype-service.php:28
filtercmb2_meta_boxesinc\post-types\class-posttype-service.php:30
actioninitinc\taxonomies\class-taxomony-tags.php:24
filteropalservice_taxomony_tags_metaboxesinc\taxonomies\class-taxomony-tags.php:25
actioninitinc\taxonomies\class-taxonomy-category-service.php:24
actioninitinc\template-functions.php:29
actionopalservice_single_service_contentinc\template-functions.php:66
filteropalservice_sidebar_archive_positioninc\template-functions.php:80
filtercmb2_render_agent_infoinc\vendors\cmb2\custom-fields\agent_info.php:10
filtercmb2_render_opal_button_setinc\vendors\cmb2\custom-fields\button_set.php:15
filtercmb2_render_fontpicker_serviceinc\vendors\cmb2\custom-fields\fontpicker.php:29
filtercmb2_sanitize_fontpicker_serviceinc\vendors\cmb2\custom-fields\fontpicker.php:31
filtercmb2_render_opal_mapinc\vendors\cmb2\custom-fields\map\map.php:30
filtercmb2_sanitize_opal_mapinc\vendors\cmb2\custom-fields\map\map.php:31
filtercmb2_render_opal_switchinc\vendors\cmb2\custom-fields\switch\switch.php:18
filtercmb2_render_text_passwordinc\vendors\cmb2\custom-fields\text_password.php:10
filtercmb2_render_opal_text_priceinc\vendors\cmb2\custom-fields\text_price.php:10
filtercmb2_render_opal_uploadinc\vendors\cmb2\custom-fields\upload\upload.php:30
filtercmb2_sanitize_opal_uploadinc\vendors\cmb2\custom-fields\upload\upload.php:31
filtercmb2_render_adduserinc\vendors\cmb2\custom-fields\user\user.php:30
filtercmb2_sanitize_adduserinc\vendors\cmb2\custom-fields\user\user.php:31
filtercmb2_render_user_uploadinc\vendors\cmb2\custom-fields\user_upload\user_upload.php:30
filtercmb2_sanitize_user_uploadinc\vendors\cmb2\custom-fields\user_upload\user_upload.php:31
filtercmb2_render_opal_mapinc\vendors\cmb2\map\map.php:29
filtercmb2_sanitize_opal_mapinc\vendors\cmb2\map\map.php:30
actioninitinc\vendors\kingcomposer\elements.php:3
actioninitinc\vendors\kingcomposer.php:9
actioninitinc\vendors\kingcomposer.php:10
actionopalservice_category_service_add_form_fieldsinc\vendors\taxonomy_image.php:18
actioncreated_opalservice_category_serviceinc\vendors\taxonomy_image.php:19
actionopalservice_category_service_edit_form_fieldsinc\vendors\taxonomy_image.php:20
actionedited_opalservice_category_serviceinc\vendors\taxonomy_image.php:21
actionadmin_enqueue_scriptsinc\vendors\taxonomy_image.php:22
actionadmin_footerinc\vendors\taxonomy_image.php:23
actionvc_after_mappinginc\vendors\visualcomposer\class-vc-elements.php:6
actionadmin_initinstall.php:73
actionplugins_loadedopalservice.php:72
actionelementor/widgets/registeropalservice.php:73
actionwidgets_initopalservice.php:216
Maintenance & Trust

Opal Service Maintenance & Trust

Maintenance Signals

WordPress version tested5.0.25
Last updatedFeb 6, 2023
PHP min version
Downloads26K

Community Trust

Rating0/100
Number of ratings0
Active installs900
Developer Profile

Opal Service Developer Profile

wpopal

19 plugins · 3K total installs

81
trust score
Avg Security Score
90/100
Avg Patch Time
50 days
View full developer profile
Detection Fingerprints

How We Detect Opal Service

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/opal-service/assets/css/frontend.css/wp-content/plugins/opal-service/assets/css/style.css/wp-content/plugins/opal-service/assets/js/frontend.js/wp-content/plugins/opal-service/assets/js/vendors/owl-carousel/owl.carousel.min.js/wp-content/plugins/opal-service/assets/js/vendors/isotope/isotope.pkgd.min.js/wp-content/plugins/opal-service/assets/js/vendors/waypoints/waypoints.min.js
Script Paths
/wp-content/plugins/opal-service/assets/js/frontend.js
Version Parameters
opal-service/assets/css/frontend.css?ver=opal-service/assets/css/style.css?ver=opal-service/assets/js/frontend.js?ver=opal-service/assets/js/vendors/owl-carousel/owl.carousel.min.js?ver=opal-service/assets/js/vendors/isotope/isotope.pkgd.min.js?ver=opal-service/assets/js/vendors/waypoints/waypoints.min.js?ver=

HTML / DOM Fingerprints

CSS Classes
opal-service-slider
HTML Comments
<!-- Opal Service Team Slider --><!-- Opal Service Accordion -->
Data Attributes
data-owl-navdata-owl-dotsdata-owl-margindata-owl-loopdata-owl-centerdata-owl-items+9 more
JS Globals
opal_service_params
Shortcode Output
[opal_service_team][opal_service_service][opal_service_testimonials][opal_service_accordions]
FAQ

Frequently Asked Questions about Opal Service