Skip to content

fix(deps): bump phpcsstandards/phpcsutils to 1.2.3 (CVE-2026-65954) - #812

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/phpcsutils-cve-2026-65954
Aug 11, 2026
Merged

fix(deps): bump phpcsstandards/phpcsutils to 1.2.3 (CVE-2026-65954)#812
rubenvdlinde merged 1 commit into
developmentfrom
fix/phpcsutils-cve-2026-65954

Conversation

@rubenvdlinde

@rubenvdlinde rubenvdlinde commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

What

Bumps phpcsstandards/phpcsutils 1.2.2 → 1.2.3 in composer.lock.

Package:  phpcsstandards/phpcsutils
CVE:      CVE-2026-65954 — Arbitrary code execution
Affected: >=1.0.0-alpha1,<1.2.3
Reported: 2026-07-27

It's a transitive dev dependency, pulled in by phpcsstandards/phpcsextra (^1.2.0), so nothing in composer.json changes — only the lock.

Why it suddenly appears

development's last green Code Quality run predates the advisory reaching the audit database. The gate didn't fail then and does now. Nothing regressed — the check got new information.

That's why it started appearing on unrelated rename PRs whose diffs contain no dependency manifest at all.

Blast radius

Exactly one package version line in composer.lock, verified by counting changed "version" keys in the diff.

The bump is exercised, not merely installed

phpcsutils is the library phpcs itself runs on, so composer audit reporting clean isn't the only evidence: phpcs was executed against a real source file after the bump and ran to completion.

A dependency bump that no build exercises is not a verified bump.

Verification

  • composer audit"No security vulnerability advisories found."
  • phpcsutils 1.2.2 → 1.2.3; one package changed
  • vendor/bin/phpcs runs clean against lib/Service/TermijnService.php

Scope across the fleet — measured, not assumed

My first instinct was "phpcs is everywhere, so this is fleet-wide." That was wrong. Reading composer.lock from each app's origin/development:

status apps
VULNERABLE (1.2.2) procest (this PR), openconnector, shillinq
SAFE (1.2.3) openregister, opencatalogi, docudesk, decidesk, pipelinq, openbuild, softwarecatalog
no composer.lock hrmq

3 of 11, not all of them. Companion fixes are needed for openconnector and shillinq only.

Worth noting: openconnector's Security (composer) check passed as recently as today despite locking 1.2.2 — so a green audit is evidence about when the job ran, not about the lock being clean.

composer audit fails on development and on every open PR:

  Package:  phpcsstandards/phpcsutils
  CVE:      CVE-2026-65954  — Arbitrary code execution
  Affected: >=1.0.0-alpha1,<1.2.3
  Reported: 2026-07-27

The lock pinned 1.2.2. It is a transitive dev dependency, pulled in by
phpcsstandards/phpcsextra (^1.2.0), so nothing in composer.json needed to
change — only the lock.

WHY IT SUDDENLY APPEARS. development's last green Code Quality run predates the
advisory reaching the audit database, so the gate did not fail then and does now.
Nothing regressed; the check got new information. This is why it started
appearing on unrelated rename PRs whose diffs contain no dependency manifest at
all.

BLAST RADIUS OF THE FIX: exactly one package version line in composer.lock.
Verified by counting the changed "version" keys in the diff.

THE BUMP IS EXERCISED, NOT JUST INSTALLED. phpcsutils is the library phpcs
itself runs on, so `composer audit` reporting clean is not the only evidence:
phpcs was executed against a real source file after the bump and ran to
completion. A dependency bump that no build exercises is not a verified bump.

VERIFIED
  - composer audit: "No security vulnerability advisories found."
  - phpcsutils 1.2.2 -> 1.2.3 in composer.lock; one package changed.
  - vendor/bin/phpcs runs clean against lib/Service/TermijnService.php.
@rubenvdlinde
rubenvdlinde merged commit 7048096 into development Aug 11, 2026
30 checks passed
@rubenvdlinde
rubenvdlinde deleted the fix/phpcsutils-cve-2026-65954 branch August 11, 2026 21:56
rubenvdlinde added a commit to ConductionNL/openconnector that referenced this pull request Aug 11, 2026
…1221)

Package:  phpcsstandards/phpcsutils
  CVE:      CVE-2026-65954 — Arbitrary code execution
  Affected: >=1.0.0-alpha1,<1.2.3
  Reported: 2026-07-27

The lock pinned 1.2.2. It is a transitive dev dependency pulled in by
phpcsstandards/phpcsextra, so nothing in composer.json changes — only the lock.

WHY IT SURFACES NOW. The advisory reached the audit database after this repo's
last green Code Quality run, so the gate did not fail then and does now. Nothing
regressed; the check got new information. Note this repo's Security (composer)
job passed as recently as today while locking 1.2.2 — a green audit is evidence
about WHEN the job ran, not about the lock being clean.

BLAST RADIUS: exactly one package version line in composer.lock, verified by
counting changed "version" keys in the diff.

THE BUMP IS EXERCISED, NOT JUST INSTALLED. phpcsutils is the library phpcs
itself runs on, so `composer audit` reporting clean is not the only evidence:
phpcs was executed over lib/ after the bump and ran to completion. A dependency
bump that no build exercises is not a verified bump.

Found by a measured sweep of every app's composer.lock at origin/development:
procest, openconnector and shillinq pinned 1.2.2; the other seven apps with a
lock were already on 1.2.3. Companion PR: ConductionNL/procest#812.
rubenvdlinde added a commit to ConductionNL/shillinq that referenced this pull request Aug 11, 2026
…521)

Package:  phpcsstandards/phpcsutils
  CVE:      CVE-2026-65954 — Arbitrary code execution
  Affected: >=1.0.0-alpha1,<1.2.3
  Reported: 2026-07-27

The lock pinned 1.2.2. It is a transitive dev dependency pulled in by
phpcsstandards/phpcsextra, so nothing in composer.json changes — only the lock.

WHY IT SURFACES NOW. The advisory reached the audit database after this repo's
last green Code Quality run, so the gate did not fail then and does now. Nothing
regressed; the check got new information. Note this repo's Security (composer)
job passed as recently as today while locking 1.2.2 — a green audit is evidence
about WHEN the job ran, not about the lock being clean.

BLAST RADIUS: exactly one package version line in composer.lock, verified by
counting changed "version" keys in the diff.

THE BUMP IS EXERCISED, NOT JUST INSTALLED. phpcsutils is the library phpcs
itself runs on, so `composer audit` reporting clean is not the only evidence:
phpcs was executed over lib/ after the bump and ran to completion. A dependency
bump that no build exercises is not a verified bump.

Found by a measured sweep of every app's composer.lock at origin/development:
procest, openconnector and shillinq pinned 1.2.2; the other seven apps with a
lock were already on 1.2.3. Companion PR: ConductionNL/procest#812.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/procest @ f46ba3a

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
check-manifest
check-vue3-compile
test-l10n
composer ✅ 100/100
npm ✅ 552/552
PHPUnit
Newman ⏭️
Playwright
Hydra gates

Quality workflow — 2026-08-11 22:09 UTC

Download the full PDF report from the workflow artifacts.

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