Updated Drupal core to 11.4.7 and contrib modules, closing two security advisories. - #331
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Team Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
Included review availability: 1 review is currently available. Your included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour. 📝 WalkthroughWalkthroughThe pull request updates Composer constraints for Drupal core, contributed modules, runtime packages, testing tools, static analysis tools, and coding tools. ChangesComposer Dependency Updates
Priority: ⬆️ High Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The dependency update is mergeable with no confirmed current-head risk; normal install and test checks should still run. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
| "drupal/config_update": "^2@alpha", | ||
| "drupal/core-composer-scaffold": "~11.4.6", | ||
| "drupal/core-recommended": "~11.4.6", | ||
| "drupal/core-composer-scaffold": "~11.4.7", |
There was a problem hiding this comment.
SA-CORE-2026-013: https://www.drupal.org/sa-core-2026-na0isdadth
SA-CONTRIB-2026-138 / CVE-2026-87940: https://www.drupal.org/sa-contrib-2026-xa9cdychdu
Two of the constraint bumps in this file are security fixes, and both advisories were live against this site rather than theoretical.
drupal/core-recommended and drupal/core-composer-scaffold move ~11.4.6 to ~11.4.7, the release that patches a moderately-critical XSS in the bundled CKEditor 5 engine. The advisory's wording is what makes it matter here: "an attacker that can create or edit content (even without access to CKEditor themselves)" can target anyone who later opens that content in the editor, including administrators. This site is in scope - ckeditor5 is enabled in config/default/core.extension.yml and four formats configure an editor (basic_html, civictheme_rich_text, full_html, webform_default).
drupal/key_auth moves ^2.2.3 to ^2.2.4, patching an access bypass where the module omitted per-user caching and one account could read another account's authentication keys. The advisory notes exploitation requires dynamic_page_cache, which it treats as a non-default mitigation - but on this site that module is enabled alongside key_auth, so the precondition is met. key_auth is what authenticates the do_content_api endpoints described in docs/content-api.md, so the keys at risk are the ones used to post content.
The remaining constraints moved because config.bump-after-update is true, so Composer rewrites the floor to whatever the lock resolved - that is why this file changed at all rather than only composer.lock. Worth a reviewer's attention among them:
mglaman/phpstan-drupal^2.1.2to^2.2.0made five previously always-on legacy rules configurable and corrected a wrong error identifier, either of which can shift what static analysis reports. Verified locally:ahoy lintis green, with PHPStan and Rector both reporting no errors, so no baseline or config change was needed.behat/behat^3.32.0to^3.33.0adds Cucumber tag expressions - the reasoncucumber/tag-expressionsappears as a new lock entry with no matching line here, since it is a transitive dependency. It also adds a deprecation when a step definition's parameter count disagrees with its function signature, and fixes scenarios that failed only inside a hook never being re-run, so a previously-hidden failure can surface in CI.drupal/entity_usage^2.2@betato^2.3@betais the only minor contrib bump.drush updatedb:statusreports no database updates required, so it ships nothing this site has to run on deploy.
No extra.patches entry needed re-rolling - all six patches still apply, and patches.lock.json is unchanged. There is no config.audit.ignore block in this file, so nothing was pruned there. composer audit --locked reports these two advisories against the develop lock and none against this branch.
|
Code coverage (threshold: 80%) Per-class coverage |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #331 +/- ##
========================================
Coverage 86.56% 86.56%
========================================
Files 28 28
Lines 655 655
========================================
Hits 567 567
Misses 88 88 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Summary
This PR closes two published, moderately-critical security advisories outstanding on
develop: SA-CORE-2026-013, a Cross-Site Scripting flaw in the CKEditor 5 engine bundled with Drupal core, and SA-CONTRIB-2026-138 (CVE-2026-87940), an access-bypass flaw indrupal/key_auth, the module that authenticates thedo_content_apicontent-authoring endpoints documented indocs/content-api.md.Both preconditions are met on this site:
ckeditor5is enabled with four configured text formats (basic_html,civictheme_rich_text,full_html,webform_default) inconfig/default/core.extension.yml, andkey_authruns alongside the enableddynamic_page_cachemodule that SA-CONTRIB-2026-138 names as the precondition for one account reading another account's authentication keys.composer audit --lockedreports these two advisories againstdevelop'scomposer.lockand reports none against this branch's lock, with Drupal core moving11.4.6to11.4.7anddrupal/key_authmoving2.2.3to2.2.4as the fixes; noextra.patchesentry was re-rolled, noconfig.audit.ignoreentries exist, and no file outsidecomposer.json/composer.lockis touched.Before / After
What changed
11.4.6to11.4.7, which is the release carrying the editor security fix rather than a routine maintenance drop.v7.4.15-v7.4.18range tov7.4.19, all patch releases.Key highlights
11.4.7, up from11.4.6, which is the release that patches the bundled editor library.drupal/key_authis now2.2.4, which patches the access bypass affecting authentication keys.7.4LTS components converge onv7.4.19across console, finder, HTTP foundation, HTTP kernel, mailer, MIME, process, serializer, string and validator.symfony/http-clientv6.4.46andopenai-php/clientv0.21.0, withdrupal/aiat1.4.9.drupal/linkit7.0.17,drupal/entity_usage2.3.0,drupal/views_bulk_operations4.4.8anddrupal/key_auth2.2.4.drush/drush13.8.0,behat/behatv3.33.0,phpstan/phpstan2.2.14,mglaman/phpstan-drupal2.2.0,vincentlanglet/twig-cs-fixer4.1.1andergebnis/composer-normalize2.53.0.Testing focus
Overall impact
This is a security update wearing the clothes of a routine one. Every package moved within its existing major version, so no interfaces were withdrawn and no migration work is implied, but two of those small version moves each close a published vulnerability that applied to this site as configured.
The first affects the rich-text editor. A contributor able to create or edit content could use it to attack anyone who later opened that content in the editor, including administrators. The second affects the module that authenticates the content API, where one account could read another account's API keys. Neither is theoretical here: the site runs the configuration each advisory names as the precondition. This should be deployed promptly rather than held for the next cycle.
Expected regressions are minimal. The areas most worth a look after deployment are the rich-text editor, authenticated API access, editorial linking and bulk content operations, since those are the surfaces whose supporting code moved. Everything else is transitive library maintenance that should be invisible to visitors and editors alike.
Changes
behat/behat updated from
v3.32.0tov3.33.0minorSee changes: Behat/Behat@v3.32.0...v3.33.0
Release notes: https://github.com/Behat/Behat/releases/tag/v3.33.0
cucumber/tag-expressions installed in version
v11.0.1Release notes: https://github.com/cucumber/tag-expressions-php/releases/tag/v11.0.1
drupal/ai updated from
1.4.8to1.4.9patchdrupal/core updated from
11.4.6to11.4.7patchSee changes: drupal/core@11.4.6...11.4.7
Release notes: https://github.com/drupal/core/releases/tag/11.4.7
drupal/core-composer-scaffold updated from
11.4.6to11.4.7patchSee changes: drupal/core-composer-scaffold@11.4.6...11.4.7
Release notes: https://github.com/drupal/core-composer-scaffold/releases/tag/11.4.7
drupal/core-recommended updated from
11.4.6to11.4.7patchSee changes: drupal/core-recommended@11.4.6...11.4.7
Release notes: https://github.com/drupal/core-recommended/releases/tag/11.4.7
drupal/entity_usage updated from
2.2.0to2.3.0minordrupal/key_auth updated from
2.2.3to2.2.4patchdrupal/linkit updated from
7.0.16to7.0.17patchdrupal/views_bulk_operations updated from
4.4.7to4.4.8patchdrush/drush updated from
13.7.7to13.8.0minorSee changes: drush-ops/drush@13.7.7...13.8.0
Release notes: https://github.com/drush-ops/drush/releases/tag/13.8.0
ergebnis/composer-normalize updated from
2.52.0to2.53.0minorSee changes: ergebnis/composer-normalize@2.52.0...2.53.0
Release notes: https://github.com/ergebnis/composer-normalize/releases/tag/2.53.0
ezyang/htmlpurifier updated from
v4.19.0tov4.19.1patchSee changes: ezyang/htmlpurifier@v4.19.0...v4.19.1
Release notes: https://github.com/ezyang/htmlpurifier/releases/tag/v4.19.1
league/html-to-markdown updated from
5.1.1to5.1.2patchSee changes: thephpleague/html-to-markdown@5.1.1...5.1.2
Release notes: https://github.com/thephpleague/html-to-markdown/releases/tag/5.1.2
mglaman/phpstan-drupal updated from
2.1.2to2.2.0minorSee changes: mglaman/phpstan-drupal@2.1.2...2.2.0
Release notes: https://github.com/mglaman/phpstan-drupal/releases/tag/2.2.0
monolog/monolog updated from
3.11.0to3.12.0minorSee changes: Seldaek/monolog@3.11.0...3.12.0
Release notes: https://github.com/Seldaek/monolog/releases/tag/3.12.0
nikic/php-parser updated from
v5.8.0tov5.9.0minorSee changes: nikic/PHP-Parser@v5.8.0...v5.9.0
Release notes: https://github.com/nikic/PHP-Parser/releases/tag/v5.9.0
openai-php/client updated from
v0.20.1tov0.21.0minorSee changes: openai-php/client@v0.20.1...v0.21.0
Release notes: https://github.com/openai-php/client/releases/tag/v0.21.0
phpstan/phpstan updated from
2.2.13to2.2.14patchsymfony/console updated from
v7.4.18tov7.4.19patchSee changes: symfony/console@v7.4.18...v7.4.19
Release notes: https://github.com/symfony/console/releases/tag/v7.4.19
symfony/finder updated from
v7.4.17tov7.4.19patchSee changes: symfony/finder@v7.4.17...v7.4.19
Release notes: https://github.com/symfony/finder/releases/tag/v7.4.19
symfony/http-client updated from
v6.4.45tov6.4.46patchSee changes: symfony/http-client@v6.4.45...v6.4.46
Release notes: https://github.com/symfony/http-client/releases/tag/v6.4.46
symfony/http-foundation updated from
v7.4.18tov7.4.19patchSee changes: symfony/http-foundation@v7.4.18...v7.4.19
Release notes: https://github.com/symfony/http-foundation/releases/tag/v7.4.19
symfony/http-kernel updated from
v7.4.18tov7.4.19patchSee changes: symfony/http-kernel@v7.4.18...v7.4.19
Release notes: https://github.com/symfony/http-kernel/releases/tag/v7.4.19
symfony/mailer updated from
v7.4.17tov7.4.19patchSee changes: symfony/mailer@v7.4.17...v7.4.19
Release notes: https://github.com/symfony/mailer/releases/tag/v7.4.19
symfony/mime updated from
v7.4.18tov7.4.19patchSee changes: symfony/mime@v7.4.18...v7.4.19
Release notes: https://github.com/symfony/mime/releases/tag/v7.4.19
symfony/process updated from
v7.4.18tov7.4.19patchSee changes: symfony/process@v7.4.18...v7.4.19
Release notes: https://github.com/symfony/process/releases/tag/v7.4.19
symfony/serializer updated from
v7.4.18tov7.4.19patchSee changes: symfony/serializer@v7.4.18...v7.4.19
Release notes: https://github.com/symfony/serializer/releases/tag/v7.4.19
symfony/string updated from
v7.4.15tov7.4.19patchSee changes: symfony/string@v7.4.15...v7.4.19
Release notes: https://github.com/symfony/string/releases/tag/v7.4.19
symfony/validator updated from
v7.4.18tov7.4.19patchSee changes: symfony/validator@v7.4.18...v7.4.19
Release notes: https://github.com/symfony/validator/releases/tag/v7.4.19
vincentlanglet/twig-cs-fixer updated from
4.1.0to4.1.1patchSee changes: VincentLanglet/Twig-CS-Fixer@4.1.0...4.1.1
Release notes: https://github.com/VincentLanglet/Twig-CS-Fixer/releases/tag/4.1.1
Checklist before requesting a review
[#123] Verb in past tense.#123added to descriptionChangedsectionScreenshots
N/A - dependency-only change (
composer.jsonandcomposer.lock), nothing user-visible to capture.Summary by CodeRabbit