BJ Lazy Load Security & Risk Analysis

wordpress.org/plugins/bj-lazy-load

Lazy loading for images and iframes makes your site load faster and saves bandwidth. Uses no external JS libraries and degrades gracefully for non-js …

20K active installs v1.0.9 PHP + WP 3.5+ Updated Nov 28, 2017
iframesimagesjavascriptlazy-loadingoptimize
53
C · Use Caution
CVEs total2
Unpatched1
Last CVEMay 11, 2026
Safety Verdict

Is BJ Lazy Load Safe to Use in 2026?

Use With Caution

Score 53/100

BJ Lazy Load has 1 unpatched vulnerability. Evaluate alternatives or apply available mitigations.

2 known CVEs 1 unpatched Last CVE: May 11, 2026Updated 8yr ago
Risk Assessment

The "bj-lazy-load" plugin v1.0.9 exhibits a mixed security posture. While the static analysis shows a very small attack surface with no identified AJAX handlers, REST API routes, shortcodes, or cron events that are unprotected, this is overshadowed by significant code-level concerns and a concerning vulnerability history. The presence of a dangerous function like "unserialize" without clear context on its usage and sanitization is a red flag. Furthermore, the taint analysis reveals a critical issue: 4 out of 4 analyzed flows have unsanitized paths, all with high severity. This strongly suggests potential vulnerabilities that could allow attackers to manipulate file paths or execute arbitrary code if these flows are exposed to user input. The plugin's vulnerability history is also concerning, with one critical historical CVE categorized as PHP Remote File Inclusion, indicating past exploitable weaknesses. Although this specific CVE is currently patched, it points to a pattern of potentially insecure coding practices that could resurface or manifest in new ways. The lack of capability checks and a low percentage of properly escaped outputs further add to the security concerns. In conclusion, despite a seemingly small attack surface, the plugin has significant underlying code quality issues and a history that warrants caution.

Key Concerns

  • High severity unsanitized taint flows (4)
  • Dangerous function unserialize used
  • SQL queries without prepared statements (4)
  • Low percentage of properly escaped output (41%)
  • No capability checks
  • Critical historical CVE (PHP Remote File Inclusion)
Vulnerabilities
2 published

BJ Lazy Load Security Vulnerabilities

CVEs by Year

1 CVE in 2015
2015
1 CVE in 2026 · unpatched
2026
Patched Has unpatched

Severity Breakdown

Critical
1
Medium
1

2 total CVEs

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

BJ Lazy Load <= 1.0.9 - Authenticated (Contributor+) Stored Cross-Site Scripting via Custom HTML Block

May 11, 2026Unpatched
CVE-2015-9415critical · 9.8Improper Control of Filename for Include/Require Statement in PHP Program ('PHP Remote File Inclusion')

BJ Lazy Load < 1.0 - Remote File Inclusion via TimThumb

Sep 2, 2015 Patched in 1.0 (3065d)
Version History

BJ Lazy Load Release Timeline

Code Analysis
Analyzed Mar 16, 2026

BJ Lazy Load Code Analysis

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

Dangerous Functions Found

unserialize$data = unserialize( $form_data['_error_data_' . $this->id ] );inc\scb\PostMetabox.php:75

SQL Query Safety

0% prepared4 total queries

Output Escaping

41% escaped29 total outputs
Data Flows · Security
4 unsanitized

Data Flow Analysis

4 flows4 with unsanitized paths
form_handler (inc\scb\AdminPage.php:195)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface

BJ Lazy Load Attack Surface

Entry Points0
Unprotected0
WordPress Hooks 35
actionplugins_loadedbj-lazy-load.php:43
actionadd_meta_boxesinc\class-bjll-skip-post.php:27
actionsave_postinc\class-bjll-skip-post.php:28
filterbj_lazy_load_run_filterinc\class-bjll-skip-post.php:30
actionwpinc\class-bjll.php:36
actionwp_enqueue_scriptsinc\class-bjll.php:63
actionwp_enqueue_scriptsinc\class-bjll.php:64
filterbjll/filterinc\class-bjll.php:122
filterbjll/filterinc\class-bjll.php:126
filterthe_contentinc\class-bjll.php:130
filterwidget_textinc\class-bjll.php:134
filterpost_thumbnail_htmlinc\class-bjll.php:138
filterget_avatarinc\class-bjll.php:142
filterbj_lazy_load_htmlinc\class-bjll.php:145
filterbjll/enabledinc\compat\mobilepress.php:5
actionbjll/compatinc\compat\mobilepress.php:9
filterbjll/enabledinc\compat\opera-mini.php:5
actionbjll/compatinc\compat\opera-mini.php:9
filterbjll/enabledinc\compat\wp-print.php:5
actionbjll/compatinc\compat\wp-print.php:9
filterbjll/enabledinc\compat\wptouch.php:5
actionbjll/compatinc\compat\wptouch.php:9
action_admin_menuinc\scb\AdminPage.php:58
actionadmin_initinc\scb\AdminPage.php:116
actionadmin_noticesinc\scb\AdminPage.php:118
actionadmin_menuinc\scb\AdminPage.php:121
filtercontextual_helpinc\scb\AdminPage.php:122
filtercron_schedulesinc\scb\Cron.php:57
actionactivate_plugininc\scb\load.php:32
actionplugins_loadedinc\scb\load.php:38
actionload-post.phpinc\scb\PostMetabox.php:30
actionload-post-new.phpinc\scb\PostMetabox.php:31
actionadd_meta_boxesinc\scb\PostMetabox.php:44
actionsave_postinc\scb\PostMetabox.php:45
actionwidgets_initinc\scb\Widget.php:13
Maintenance & Trust

BJ Lazy Load Maintenance & Trust

Maintenance Signals

WordPress version tested4.9.29
Last updatedNov 28, 2017
PHP min version
Downloads852K

Community Trust

Rating84/100
Number of ratings90
Active installs20K
Developer Profile

BJ Lazy Load Developer Profile

Bjørn Johansen

7 plugins · 20K total installs

65
trust score
Avg Security Score
80/100
Avg Patch Time
3065 days
View full developer profile
Detection Fingerprints

How We Detect BJ Lazy Load

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

Asset Fingerprints

Asset Paths
/wp-content/plugins/bj-lazy-load/js/bj-lazy-load.min.js
Script Paths
/wp-content/plugins/bj-lazy-load/js/bj-lazy-load.min.js

HTML / DOM Fingerprints

CSS Classes
bj-lazy-load
Data Attributes
data-lazy-typedata-lazy-srcdata-lazy-srcsetdata-lazy-sizes
JS Globals
BJLL_options
FAQ

Frequently Asked Questions about BJ Lazy Load