Skip to content

Release 3.4.3 - #114

Merged
puikinsh merged 10 commits into
masterfrom
release/3.4.3
Nov 9, 2026
Merged

puikinsh merged 10 commits into
masterfrom
release/3.4.3

Conversation

@puikinsh

@puikinsh puikinsh commented Nov 9, 2026

Copy link
Copy Markdown
Member

Summary

Security release for CVE-2026-96571, plus the related problems found in a full audit of the plugin.

  • Treat data from lightbox links as untrusted: video template values are escaped, thumbnails are built through the DOM, unsafe URL schemes are refused, and links can set only a fixed list of options
  • Restrict captions and HTML supplied by a link to an allow-list
  • Stop crafted links freezing the page
  • Require unfiltered_html to edit or switch on the custom JavaScript settings
  • Require a click to open another site's page
  • Update DOMPurify to 3.4.17
  • Add inline CSS and JavaScript through the script queues
  • Resolve Plugin Check findings: no errors remain, and the three warnings left are about "WordPress" in the grandfathered plugin name and slug

One commit per feature. The changelog in readme.txt lists the behaviour changes.

Testing

End-to-end in Chromium against real WordPress installs, including a real anonymous comment and Contributor posts:

  • WordPress 7.1.4 on PHP 8.5: 43 of 43 checks pass
  • WordPress 5.6 (jQuery 3.5.1) on PHP 7.4: 43 of 43 checks pass
  • A real multisite network, site administrator against super admin: 13 of 13 checks pass

🤖 Generated with Claude Code

puikinsh and others added 10 commits November 9, 2026 13:33
Comment authors control a link's href and post authors control its data-*
attributes, but those values reached fancyBox's HTML templates and option
merging as if they came from site code. Escape video template values, build
thumbnails through the DOM, refuse unsafe URL schemes, sanitize HTML and Ajax
slides, and let links set only a fixed list of options.

Fixes CVE-2026-96571.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DOMPurify's html profile keeps style elements, form controls and style
attributes, so markup in a link's data-caption could affect the whole page.
Route every caption through one stricter sanitizer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A crafted URL could open a link to an external page in the lightbox straight
away. Deep links to images and same-site content are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The link-matching pattern could backtrack exponentially on a crafted URL,
blocking the main thread for everyone who loaded the page. Smilies, emoji and
avatars also no longer turn a link into a lightbox trigger.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The script fields print on every page, and manage_options alone lets a
multisite site administrator write them. Keep the stored value when the user
lacks unfiltered_html, and show the fields as read-only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
WordPress.org review expects wp_add_inline_style and wp_add_inline_script.
The inline script now always follows the library, which also fixes a dead
lightbox when the plugin and jQuery were both loaded in the footer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove the Tested up to plugin header, which Plugin Check reports as an error,
prefix the variables shared by the admin partials, rename the last unprefixed
function, and record why load_plugin_textdomain() is still required.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
That step receives the SVN password, and `stable` is a moving reference.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown

✅ WordPress Plugin Check Report

✅ Status: Passed

📊 Report

All checks passed! No errors or warnings found.


🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check

@puikinsh
puikinsh merged commit 2df20fc into master Nov 9, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant