Enhanced Media Library Security & Risk Analysis

wordpress.org/plugins/enhanced-media-library

This plugin would be handy for those who need to manage a lot of media files.

70K active installs v2.9.4 PHP 5.6+ WP 6.0+ Updated Jul 15, 2024
media-categoriesmedia-foldersmedia-librarymedia-tagsmime-types
91
A · Safe
CVEs total1
Unpatched0
Last CVEApr 15, 2024
Safety Verdict

Is Enhanced Media Library Safe to Use in 2026?

Generally Safe

Score 91/100

Enhanced Media Library has a strong security track record. Known vulnerabilities have been patched promptly.

1 known CVELast CVE: Apr 15, 2024Updated 1yr ago
Risk Assessment

The 'enhanced-media-library' plugin v2.9.4 exhibits a generally strong security posture, with excellent practices in place regarding SQL query preparation and a significant number of nonce and capability checks. The static analysis shows no critical or high-severity taint flows, and all identified entry points (AJAX handlers) appear to have authentication checks, which is a positive indicator. The absence of direct SQL injection risks due to prepared statements is a notable strength. However, the plugin does have a history of a medium-severity Cross-Site Scripting (XSS) vulnerability, which, while currently patched, suggests a potential area for careful monitoring. Furthermore, the output escaping is not perfect, with 13% of outputs not properly escaped, which could, under specific circumstances and with crafted input, lead to XSS issues, though the taint analysis did not uncover any active exploitable paths. The presence of file operations and external HTTP requests, while not inherently insecure, warrants attention for potential misconfigurations or vulnerabilities in how they are handled.

Key Concerns

  • Medium severity XSS vulnerability in history
  • Output escaping not fully implemented (13% not escaped)
  • Presence of file operations
  • Presence of external HTTP requests
Vulnerabilities
1

Enhanced Media Library Security Vulnerabilities

CVEs by Year

1 CVE in 2024
2024
Patched Has unpatched

Severity Breakdown

Medium
1

1 total CVE

CVE-2024-2840medium · 5.4Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Enhanced Media Library <= 2.8.9 - Authenticated (Author+) Stored Cross-Site Scripting

Apr 15, 2024 Patched in 2.8.10 (18d)
Code Analysis
Analyzed Mar 16, 2026

Enhanced Media Library Code Analysis

Dangerous Functions
0
Raw SQL Queries
0
19 prepared
Unescaped Output
23
153 escaped
Nonce Checks
11
Capability Checks
30
File Operations
1
External Requests
1
Bundled Libraries
0

SQL Query Safety

100% prepared19 total queries

Output Escaping

87% escaped176 total outputs
Data Flows
All sanitized

Data Flow Analysis

3 flows
wpuxss_eml_settings_import (core\options-pages.php:1266)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface

Enhanced Media Library Attack Surface

Entry Points5
Unprotected0

AJAX Handlers 5

authwp_ajax_eml-apply-settings-to-networkcore\options-pages.php:1126
authwp_ajax_eml-admin-notice-dismisscore\options-pages.php:2948
authwp_ajax_save-attachment-compatcore\taxonomies.php:934
authwp_ajax_delete-postcore\taxonomies.php:1030
authwp_ajax_save-attachment-ordercore\taxonomies.php:1086
WordPress Hooks 50
actionelementor/editor/before_enqueue_scriptscore\compatibility.php:17
actionelementor/editor/after_enqueue_scriptscore\compatibility.php:19
actionafter_setup_themecore\compatibility.php:44
actionwp_loadedcore\compatibility.php:60
filtershortcode_atts_av_masonry_gallerycore\compatibility.php:101
filtershortcode_atts_av_masonry_entriescore\compatibility.php:104
filterfoogallery_shortcode_attscore\compatibility.php:116
actionprint_media_templatescore\media-templates.php:15
filtershortcode_atts_gallerycore\medialist.php:8
filtershortcode_atts_playlistcore\medialist.php:9
filtershortcode_atts_slideshowcore\medialist.php:10
filterpost_mime_typescore\mime-types.php:109
filterupload_mimescore\mime-types.php:144
filtermime_typescore\mime-types.php:186
filterwp_check_filetype_and_extcore\mime-types.php:218
filterwp_generate_attachment_metadatacore\mime-types.php:335
filterwp_prepare_attachment_for_jscore\mime-types.php:359
actionadmin_initcore\options-pages.php:15
actionadmin_menucore\options-pages.php:77
actionadmin_menucore\options-pages.php:144
actionnetwork_admin_menucore\options-pages.php:177
actionadmin_menucore\options-pages.php:204
filteradmin_body_classcore\options-pages.php:269
filteradmin_titlecore\options-pages.php:270
actionnetwork_admin_menucore\options-pages.php:1183
actionadmin_initcore\options-pages.php:1219
actionadmin_initcore\options-pages.php:1264
actionadmin_initcore\options-pages.php:1344
actionadmin_initcore\options-pages.php:1394
actionadmin_initcore\options-pages.php:2661
actionadmin_noticescore\options-pages.php:2839
actionnetwork_admin_noticescore\options-pages.php:2840
filterajax_query_attachments_argscore\taxonomies.php:210
actionrestrict_manage_postscore\taxonomies.php:329
actionload-upload.phpcore\taxonomies.php:407
filterdisable_months_dropdowncore\taxonomies.php:415
filterwp_dropdown_catscore\taxonomies.php:430
actionparse_tax_querycore\taxonomies.php:495
actionparse_tax_querycore\taxonomies.php:533
filterattachment_fields_to_editcore\taxonomies.php:660
filterthe_postscore\taxonomies.php:1305
actionpre_get_postscore\taxonomies.php:1358
actionplugins_loadedenhanced-media-library.php:146
filterplugin_row_metaenhanced-media-library.php:180
actioninitenhanced-media-library.php:192
actionwp_loadedenhanced-media-library.php:247
actionadmin_enqueue_scriptsenhanced-media-library.php:332
actionwp_loadedenhanced-media-library.php:437
actionwp_enqueue_mediaenhanced-media-library.php:473
filtermedia_library_infinite_scrollingenhanced-media-library.php:982
Maintenance & Trust

Enhanced Media Library Maintenance & Trust

Maintenance Signals

WordPress version tested6.5.8
Last updatedJul 15, 2024
PHP min version5.6
Downloads2.6M

Community Trust

Rating86/100
Number of ratings297
Active installs70K
Developer Profile

Enhanced Media Library Developer Profile

webbistro

2 plugins · 76K total installs

86
trust score
Avg Security Score
88/100
Avg Patch Time
18 days
View full developer profile
Detection Fingerprints

How We Detect Enhanced Media Library

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/enhanced-media-library/css/eml-admin-gallery.css/wp-content/plugins/enhanced-media-library/css/eml-admin-image.css/wp-content/plugins/enhanced-media-library/css/eml-admin.css/wp-content/plugins/enhanced-media-library/css/eml-gallery.css/wp-content/plugins/enhanced-media-library/css/eml-icon.css/wp-content/plugins/enhanced-media-library/css/eml-image.css/wp-content/plugins/enhanced-media-library/css/eml-media-button.css/wp-content/plugins/enhanced-media-library/css/eml-modal.css+23 more
Script Paths
/wp-content/plugins/enhanced-media-library/js/eml-admin-gallery.js/wp-content/plugins/enhanced-media-library/js/eml-admin.js/wp-content/plugins/enhanced-media-library/js/eml-admin-media-editor.js/wp-content/plugins/enhanced-media-library/js/eml-admin-modal.js/wp-content/plugins/enhanced-media-library/js/eml-admin-new-media.js/wp-content/plugins/enhanced-media-library/js/eml-admin-plugin-install.js+10 more
Version Parameters
enhanced-media-library/css/eml-admin-gallery.css?ver=enhanced-media-library/css/eml-admin-image.css?ver=enhanced-media-library/css/eml-admin.css?ver=enhanced-media-library/css/eml-gallery.css?ver=enhanced-media-library/css/eml-icon.css?ver=enhanced-media-library/css/eml-image.css?ver=enhanced-media-library/css/eml-media-button.css?ver=enhanced-media-library/css/eml-modal.css?ver=enhanced-media-library/css/eml-new-media.css?ver=enhanced-media-library/css/eml-plugin-install.css?ver=enhanced-media-library/css/eml-settings.css?ver=enhanced-media-library/css/eml-single.css?ver=enhanced-media-library/css/eml-sortable.css?ver=enhanced-media-library/css/eml-styles.css?ver=enhanced-media-library/css/eml-tinymce.css?ver=enhanced-media-library/js/eml-admin-gallery.js?ver=enhanced-media-library/js/eml-admin.js?ver=enhanced-media-library/js/eml-admin-media-editor.js?ver=enhanced-media-library/js/eml-admin-modal.js?ver=enhanced-media-library/js/eml-admin-new-media.js?ver=enhanced-media-library/js/eml-admin-plugin-install.js?ver=enhanced-media-library/js/eml-admin-settings.js?ver=enhanced-media-library/js/eml-admin-single.js?ver=enhanced-media-library/js/eml-admin-tinymce.js?ver=enhanced-media-library/js/eml-async-upload.js?ver=enhanced-media-library/js/eml-gallery.js?ver=enhanced-media-library/js/eml-icon.js?ver=enhanced-media-library/js/eml-image.js?ver=enhanced-media-library/js/eml-media-button.js?ver=enhanced-media-library/js/eml-modal.js?ver=enhanced-media-library/js/eml-sortable.js?ver=

HTML / DOM Fingerprints

CSS Classes
eml-iconeml-galleryeml-modaleml-media-buttoneml-image-containereml-sortableeml-settings-page
HTML Comments
<!-- Enhanced Media LibraryEML: Add taxonomies to media library -->
Data Attributes
data-eml-iddata-eml-type
JS Globals
wpuxss_eml_settingseml_vars
REST Endpoints
/wp-json/eml/v1/taxonomies/wp-json/eml/v1/attachments
FAQ

Frequently Asked Questions about Enhanced Media Library