Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,22 @@
"drupal/components": "^3.2",
"drupal/config_split": "^2.0.2",
"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",

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.2 to ^2.2.0 made 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 lint is green, with PHPStan and Rector both reporting no errors, so no baseline or config change was needed.
  • behat/behat ^3.32.0 to ^3.33.0 adds Cucumber tag expressions - the reason cucumber/tag-expressions appears 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@beta to ^2.3@beta is the only minor contrib bump. drush updatedb:status reports 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.

"drupal/core-recommended": "~11.4.7",
"drupal/csp": "^2.2.4",
"drupal/devel": "^5.5.0",
"drupal/diff": "^2.1.1",
"drupal/drupal_helpers": "^2.1.1",
"drupal/entity_clone": "^2.1@beta",
"drupal/entity_usage": "^2.2@beta",
"drupal/entity_usage": "^2.3@beta",
"drupal/environment_indicator": "^4.0.25",
"drupal/field_group": "^4",
"drupal/gemini_provider": "^1.0.1",
"drupal/generated_content": "^2.1.1",
"drupal/gin": "^5.0.15",
"drupal/google_tag": "^2.0.9",
"drupal/highlight_js": "^1.3",
"drupal/key_auth": "^2.2.3",
"drupal/key_auth": "^2.2.4",
"drupal/lagoon_logs": "^3.0.1",
"drupal/menu_trail_by_path": "^2.2",
"drupal/metatag": "^2.2",
Expand All @@ -58,15 +58,15 @@
"drupal/stage_file_proxy": "^4.0.0",
"drupal/subrequests": "^3.0.12",
"drupal/testmode": "^2.7.2",
"drupal/views_bulk_operations": "^4.4.7",
"drupal/views_bulk_operations": "^4.4.8",
"drupal/webform": "^6.3@beta",
"drupal/xmlsitemap": "^2.0",
"drush/drush": "^13.7.7",
"symfony/http-client": "^6.4.45",
"drush/drush": "^13.8.0",
"symfony/http-client": "^6.4.46",
"webflo/drupal-finder": "^1.3.1"
},
"require-dev": {
"behat/behat": "^3.32.0",
"behat/behat": "^3.33.0",
"dantleech/gherkin-lint": "^0.2.4",
"drevops/behat-format-progress-fail": "^1.5.1",
"drevops/behat-screenshot": "^2.6.0",
Expand All @@ -75,18 +75,18 @@
"drupal/coder": "^9.0.1",
"drupal/drupal-driver": "^3.3.1@alpha",
"drupal/drupal-extension": "^6.1",
"ergebnis/composer-normalize": "^2.52.0",
"mglaman/phpstan-drupal": "^2.1.2",
"ergebnis/composer-normalize": "^2.53.0",
"mglaman/phpstan-drupal": "^2.2.0",
"mikey179/vfsstream": "^1.6.12",
"palantirnet/drupal-rector": "^1.1.3",
"phpcompatibility/php-compatibility": "^10.0@alpha",
"phpspec/prophecy-phpunit": "^2.5",
"phpstan/extension-installer": "^1.4.3",
"phpstan/phpstan": "^2.2.13",
"phpstan/phpstan": "^2.2.14",
"phpunit/phpunit": "^11.5.56",
"pyrech/composer-changelogs": "^2.2",
"softcreatr/jsonpath": "^0.10 || ^1.0",
"vincentlanglet/twig-cs-fixer": "^4.1.0"
"vincentlanglet/twig-cs-fixer": "^4.1.1"
},
"conflict": {
"drupal/drupal": "*"
Expand Down
Loading
Loading