Problem/Motivation

Review Drupal 12 and 11.x composer dependencies for allowed versions with CVEs, so we don't release these with constraints that technically allow insecure dependencies to be installed.

Steps to reproduce

Proposed resolution

Raise composer requirements to versions that are not affected by CVEs with the least disruption possible.

Remaining tasks

User interface changes

Introduced terminology

API changes

Data model changes

Release notes snippet

LLM disclosure

LLM was used to define the audit commands to run, commands were run manually :)

Issue fork drupal-3626470

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

gábor hojtsy created an issue. See original summary.

gábor hojtsy’s picture

I used LLM help to figure out the exact commands to run, then ran them manually.

For 11.x, existing lock file based CVEs:

composer audit --locked --no-plugins
> Found 4 security vulnerability advisories affecting composer/composer

Then ran this to move all dependencies to lowest and ignore the implications for security, so it actually happens :D

COMPOSER_NO_SECURITY_BLOCKING=1 composer update --prefer-lowest --no-install --no-plugins --no-scripts --no-audit

Then ran this again, so we get all CVEs affecting the lowest versions.

composer audit --locked --no-plugins
> Found 26 security vulnerability advisories affecting composer/composer, google/protobuf, guzzlehttp/guzzle, guzzlehttp/psr7, squizlabs/php_codesniffer, symfony/runtime, 
gábor hojtsy’s picture

Same commands for Drupal 12 do not show current locked versions with CVEs but when running with lowest:

> Found 14 security vulnerability advisories affecting composer/composer, google/protobuf, guzzlehttp/guzzle, squizlabs/php_codesniffer, symfony/polyfill-intl-idn

gábor hojtsy’s picture

Priority: Normal » Critical

gábor hojtsy’s picture

Issue summary: View changes
Status: Active » Needs review

Now have two branches with proposed minimal needed updates :)

xjm’s picture

These changes make sense to me. Increasing our minor version requirements for both Composer and Guzzle with the minor/major release ensures we're less likely to run into regressions from security updates with those, and increasing miscellaneous patch minima is also sensible.

One small suggestion on both MRs; while we want to increase minimum constraints as allowed by release policies, we probably shouldn't actually declare a conflict with that SF polyfill library unless Drupal really doesn't work with it on those versions. Changing that of course also requires regenerating the lockfile. 🙂

xjm’s picture

Status: Needs review » Needs work
Issue tags: +11.5.0 beta blocker
gábor hojtsy’s picture

Had this Slack discussion with @xjm:

@gábor: Its a transitive dependency. We could also explicitly require "symfony/polyfill-intl-idn": "^1.38.1" or say we don't care of this transitive dependency having the low severity CVE-2026-46644. Both 11.x and main lock above the version with the CVE so its more about there not being a constraint if the core lock is not used. I think this is mostly theoretics, so it can be left out, but if we want to pass CVE checks with lowest versions, then something would need to be done :smile: Drupal works either way I think this is just to satisfy the "no dependency has CVE in lowest allowed versions" task.

@xjm: In the case of that polyfill I would not do either an explicit constraint nor a conflict; that CVE IIRC was really more of a hardening, so if they need 1.37 for some reason let 'em.

gábor hojtsy’s picture

Status: Needs work » Needs review
gábor hojtsy’s picture

FYI I talked to @catch in person about this todayand he said this would be nice for beta1 but is not a requirement :)

longwave’s picture

Status: Needs review » Reviewed & tested by the community

I tested this by applying the patch and running the following steps:

$ composer install
$ composer update --prefer-lowest --no-security-blocking
$ composer audit

On main this reports four problems in three dependencies, but these are all transient dependencies so nothing we can solve directly (unless we explicity turn them into actual dependencies):

 composer audit
Found 4 security vulnerability advisories affecting 3 packages:
+-------------------+----------------------------------------------------------------------------------+
| Package           | google/protobuf                                                                  |
| Severity          | high                                                                             |
| Advisory ID       | PKSA-tcfz-w4fm-hhk9                                                              |
| CVE               | CVE-2026-6409                                                                    |
| Title             | Protobuf: Denial of Service issue through malicious messages containing negative |
|                   | varints or deep recursion                                                        |
| URL               | https://github.com/advisories/GHSA-p2gh-cfq4-4wjc                                |
| Affected versions | <4.33.6                                                                          |
| Reported at       | 2026-03-25T21:02:08+00:00                                                        |
+-------------------+----------------------------------------------------------------------------------+
+-------------------+----------------------------------------------------------------------------------+
| Package           | google/protobuf                                                                  |
| Severity          | high                                                                             |
| Advisory ID       | PKSA-yqjh-6qvh-g493                                                              |
| CVE               | CVE-2015-5237                                                                    |
| Title             | protobuf susceptible to buffer overflow                                          |
| URL               | https://github.com/advisories/GHSA-jwvw-v7c5-m82h                                |
| Affected versions | <3.4.0                                                                           |
| Reported at       | 2022-05-13T01:06:54+00:00                                                        |
+-------------------+----------------------------------------------------------------------------------+
+-------------------+----------------------------------------------------------------------------------+
| Package           | squizlabs/php_codesniffer                                                        |
| Severity          | high                                                                             |
| Advisory ID       | PKSA-rdkp-vv9z-mjkg                                                              |
| CVE               | CVE-2026-67434                                                                   |
| Title             | OS Command injection                                                             |
| URL               | https://github.com/PHPCSStandards/PHP_CodeSniffer/security/advisories/GHSA-hmqg- |
|                   | cxww-wqhq                                                                        |
| Affected versions | <3.13.6|>=4.0.0,<4.0.2                                                           |
| Reported at       | 2026-08-05T23:53:11+00:00                                                        |
+-------------------+----------------------------------------------------------------------------------+
+-------------------+----------------------------------------------------------------------------------+
| Package           | symfony/polyfill-intl-idn                                                        |
| Severity          | low                                                                              |
| Advisory ID       | PKSA-dwsq-ppd2-mb1x                                                              |
| CVE               | CVE-2026-46644                                                                   |
| Title             | CVE-2026-46644: symfony/polyfill-intl-idn accepts xn-- labels whose Punycode     |
|                   | payload decodes to ASCII-only: insecure equivalence                              |
| URL               | https://symfony.com/cve-2026-46644                                               |
| Affected versions | >=1.17.1,<1.38.1                                                                 |
| Reported at       | 2026-05-26T08:00:00+00:00                                                        |
+-------------------+----------------------------------------------------------------------------------+

On 11.x I get a similar result without symfony/polyfill-intl-idn.

Therefore I think this is the correct thing to do and marking RTBC.

  • xjm committed d29add7e on main
    task: #3626470 Review Drupal 12 and 11.x composer dependencies for...

  • xjm committed 951e66a6 on 11.x
    task: #3626470 Review Drupal 12 and 11.x composer dependencies for...
xjm’s picture

Status: Reviewed & tested by the community » Fixed

Committed to main. I ran composer update --lock to verify that the lockfile was correct. I then cherry-picked it to 12.0.x and did a composer update drupal/core to also verify that that the same hash applied to 12.0.x.

Repeated the same for 11.x.

Thanks everyone!

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

  • xjm committed dc99b713 on 12.0.x
    task: #3626470 Review Drupal 12 and 11.x composer dependencies for...
xjm’s picture

Status: Fixed » Patch (to be ported)
Issue tags: +Rotterdam2026

I meant to set this PTBP for lockfile updates on earlier branches, but forgot. (No constraint increases on the stable branches.)

longwave’s picture

Status: Patch (to be ported) » Fixed

@xjm if we are only doing lockfile updates on 11.5.x then that usually happens in a specific issue where we update all dependencies for each minor? I opened #3627487: Update PHP dependencies for 11.5.0 to track this as we haven't done it yet.

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

xjm’s picture

I'm fine with a separate issue, and that makes sense for 11.5 if we didn't do it yet. But it's the specific CVE above that we wanted to fix in the stable branches' lockfiles.