OptionTree Security & Risk Analysis

wordpress.org/plugins/option-tree

Theme Options UI Builder for WordPress. A simple way to create & save Theme Options and Meta Boxes for free or premium themes.

50K active installs v2.7.3 PHP 5.3.0+ WP 3.8+ Updated May 19, 2019
meta-boxesoptionssettingstheme-options
82
B · Generally Safe
CVEs total5
Unpatched0
Last CVEAug 16, 2019
Safety Verdict

Is OptionTree Safe to Use in 2026?

Mostly Safe

Score 82/100

OptionTree is generally safe to use though it hasn't been updated recently. 5 past CVEs were resolved.

5 known CVEsLast CVE: Aug 16, 2019Updated 7yr ago
Risk Assessment

The Option Tree plugin, despite having a substantial attack surface of 10 AJAX handlers, appears to implement proper authentication checks on all of them. This is a strong security practice. The code analysis also reveals a healthy percentage of SQL queries using prepared statements and a significant amount of output escaping, indicating good coding habits. However, the presence of unsanitized paths in the taint analysis, even if not flagged as critical or high severity, warrants attention as it represents a potential avenue for input manipulation.

The plugin's vulnerability history is a significant concern. With a total of 5 known CVEs, including 3 high and 2 medium severity vulnerabilities, and a last recorded vulnerability in 2019, it suggests a past pattern of security weaknesses. The common vulnerability types of deserialization and XSS are particularly worrying, as they can lead to severe compromise. While there are currently no unpatched CVEs, the historical prevalence of these types of issues indicates a need for ongoing vigilance and potential for undiscovered vulnerabilities or regressions.

In conclusion, Option Tree v2.7.3 demonstrates some good security practices, particularly in its handling of AJAX entry points. However, the significant historical vulnerability record, combined with a concerning taint analysis result regarding unsanitized paths, presents a notable risk. Users should be aware of the past security issues and the potential for future ones, even though current patching status is clean. A cautious approach is recommended.

Key Concerns

  • Flows with unsanitized paths found
  • High severity vulnerabilities in history (3)
  • Medium severity vulnerabilities in history (2)
  • Taint analysis indicating potential input issues
Vulnerabilities
5 published

OptionTree Security Vulnerabilities

CVEs by Year

1 CVE in 2015
2015
4 CVEs in 2019
2019
Patched Has unpatched

Severity Breakdown

High
3
Medium
2

5 total CVEs

CVE-2016-10895medium · 6.1Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Option Tree <= 2.5.5 - Cross-Site Scripting

Aug 16, 2019 Patched in 2.6 (1621d)
CVE-2019-15320high · 8.1Deserialization of Untrusted Data

Option Tree <= 2.7.2 - Object Injection Bypass

May 19, 2019 Patched in 2.7.3 (1710d)
CVE-2019-15321high · 8.1Deserialization of Untrusted Data

Option Tree <= 2.7.2 - Object Injection Bypass

May 19, 2019 Patched in 2.7.3 (1710d)
CVE-2019-15319high · 8.1Deserialization of Untrusted Data

Option Tree <= 2.6.0 - PHP Object Injection

Apr 16, 2019 Patched in 2.7.0 (1743d)
CVE-2015-9320medium · 6.1Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Option Tree <= 2.5.3 - Cross-Site Scripting

Apr 22, 2015 Patched in 2.5.4 (3198d)
Code Analysis
Analyzed Mar 16, 2026

OptionTree Code Analysis

Dangerous Functions
0
Raw SQL Queries
4
8 prepared
Unescaped Output
393
716 escaped
Nonce Checks
20
Capability Checks
4
File Operations
13
External Requests
3
Bundled Libraries
0

SQL Query Safety

67% prepared12 total queries

Output Escaping

65% escaped1109 total outputs
Data Flows · Security
1 unsanitized

Data Flow Analysis

12 flows1 with unsanitized paths
display_page (includes\class-ot-settings.php:227)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface

OptionTree Attack Surface

Entry Points10
Unprotected0

AJAX Handlers 10

authwp_ajax_add_sectionot-loader.php:406
authwp_ajax_add_settingot-loader.php:409
authwp_ajax_add_the_contextual_helpot-loader.php:412
authwp_ajax_add_choiceot-loader.php:415
authwp_ajax_add_list_item_settingot-loader.php:418
authwp_ajax_add_layoutot-loader.php:421
authwp_ajax_add_list_itemot-loader.php:424
authwp_ajax_add_social_linksot-loader.php:427
authwp_ajax_ot_google_fontot-loader.php:430
authwp_ajax_gallery_updateot-loader.php:436
WordPress Hooks 54
actionadmin_headincludes\class-ot-cleanup.php:37
actionadmin_menuincludes\class-ot-cleanup.php:40
actionot_pre_consolidate_postsincludes\class-ot-cleanup.php:43
actionadmin_noticesincludes\class-ot-cleanup.php:78
actionadd_meta_boxesincludes\class-ot-meta-box.php:55
actionsave_postincludes\class-ot-meta-box.php:57
actionadmin_initincludes\class-ot-post-formats.php:43
filterpre_pingincludes\class-ot-post-formats.php:46
actionadmin_menuincludes\class-ot-settings.php:74
actionadmin_initincludes\class-ot-settings.php:77
actionadmin_initincludes\class-ot-settings.php:80
actionadmin_initincludes\class-ot-settings.php:83
actionadmin_initincludes\class-ot-settings.php:86
actionadmin_noticesincludes\ot-functions-admin.php:107
filtersafe_style_cssincludes\ot-functions-admin.php:599
filterwp_kses_allowed_htmlincludes\ot-functions-admin.php:600
filterot_recognized_font_familiesincludes\ot-functions-admin.php:2415
actionot_after_theme_options_saveincludes\ot-functions-admin.php:5170
actionsplit_shared_termincludes\ot-functions-admin.php:6087
actionadmin_initincludes\ot-functions-compat.php:13
filterot_option_types_arrayincludes\ot-functions-compat.php:14
filterot_recognized_font_stylesincludes\ot-functions-compat.php:15
filterot_recognized_font_weightsincludes\ot-functions-compat.php:16
filterot_recognized_font_variantsincludes\ot-functions-compat.php:17
filterot_recognized_font_familiesincludes\ot-functions-compat.php:18
filterot_recognized_background_repeatincludes\ot-functions-compat.php:19
filterot_recognized_background_positionincludes\ot-functions-compat.php:20
filterot_measurement_unit_typesincludes\ot-functions-compat.php:21
filterot_theme_modeot-loader.php:17
actionadmin_noticesot-loader.php:26
actionafter_setup_themeot-loader.php:47
actioninitot-loader.php:303
actioninitot-loader.php:307
actionadmin_headot-loader.php:310
actioninitot-loader.php:346
actioninitot-loader.php:351
actioninitot-loader.php:356
actionadmin_print_scripts-post-new.phpot-loader.php:363
actionadmin_print_scripts-post.phpot-loader.php:364
actionadmin_print_styles-post-new.phpot-loader.php:367
actionadmin_print_styles-post.phpot-loader.php:368
actionadmin_bar_menuot-loader.php:373
actionadmin_initot-loader.php:376
actionadmin_initot-loader.php:379
actionadmin_initot-loader.php:382
actionadmin_initot-loader.php:385
actionadmin_initot-loader.php:388
actionadmin_initot-loader.php:391
actionadmin_initot-loader.php:394
actionwp_enqueue_scriptsot-loader.php:397
actionwp_enqueue_scriptsot-loader.php:400
actionot_after_theme_options_saveot-loader.php:403
filtermedia_view_settingsot-loader.php:433
filtergettextot-loader.php:439
Maintenance & Trust

OptionTree Maintenance & Trust

Maintenance Signals

WordPress version tested5.2.24
Last updatedMay 19, 2019
PHP min version5.3.0
Downloads1.3M

Community Trust

Rating94/100
Number of ratings105
Active installs50K
Developer Profile

OptionTree Developer Profile

Derek Herman

1 plugin · 50K total installs

66
trust score
Avg Security Score
82/100
Avg Patch Time
1996 days
View full developer profile
Detection Fingerprints

How We Detect OptionTree

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

Asset Fingerprints

HTML / DOM Fingerprints

FAQ

Frequently Asked Questions about OptionTree