fix(deps): PHPCS 3.13.6 security release and Renovate - #123
Merged
Conversation
Bumps squizlabs/php_codesniffer from ^3.13.5 to ^3.13.6 to pull in the fix for GHSA-hmqg-cxww-wqhq / CVE-2026-67434 (high): the Gitblame, Hgblame and Svnblame reports built shell commands from file names without escaping, allowing command injection when scanning files with shell metacharacters in their names. The floor is raised rather than only the lockfile refreshed, so consuming projects cannot resolve back to a vulnerable version.
Documents the PHPCS 3.13.6 floor bump for GHSA-hmqg-cxww-wqhq / CVE-2026-67434 and adds the 3.1.2 compare link.
Adds a Security Audit job running `composer audit --locked` so a vulnerable lockfile fails pull requests, plus a Monday cron so newly published advisories surface here instead of downstream: PHPCS GHSA-hmqg-cxww-wqhq was only caught by a consuming project's CI. Abandoned packages are reported, not failed, keeping the job scoped to security advisories.
The config has been in the repo since March but never produced a PR because the Renovate app was not installed; these changes make its output fit this repo once it is. - vulnerabilityAlerts uses rangeStrategy "bump" so a security update raises the composer.json floor instead of only refreshing the lockfile, matching the documented policy that consumers must not be able to resolve back to a vulnerable version. - osvVulnerabilityAlerts sources advisories from OSV directly, so detection does not depend on Dependabot alerts being enabled. - An explicit "at any time" schedule keeps security PRs from being held back by the Monday window. - lockFileMaintenance refreshes transitive dependencies, which is where an unpatched advisory can otherwise sit unnoticed. - Commit templates drop the vendor prefix and the version so subjects stay within the 50-character limit; longest case renders at 49. Versions move to the commit body and PR table. - Dev-dependency patch automerge now waits 3 days, limiting exposure to a compromised release.
Check Version Bump and Check CHANGELOG Entry expect a release decision that dependency PRs do not carry, so both failed on every Renovate PR and blocked the automerge configured for dev-dependency patches. Check CHANGELOG Entry skips along with it via `needs`.
Documents the Security Audit job, the Renovate config tuning and the Renovate exemption from the version checks under 3.1.2.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #123 +/- ##
=========================================
Coverage 93.87% 93.87%
Complexity 577 577
=========================================
Files 31 31
Lines 1599 1599
=========================================
Hits 1501 1501
Misses 98 98 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Security fix
squizlabs/php_codesnifferis raised from^3.13.5to^3.13.6forGHSA-hmqg-cxww-wqhq
/ CVE-2026-67434 (high). The
Gitblame,HgblameandSvnblamereports built shell commands from file nameswithout escaping, so scanning a file whose name contains shell metacharacters could execute attacker-controlled
commands on the scanning host. Runs on the default
Fullreport are unaffected.The floor is raised rather than only the lockfile refreshed, so consuming projects cannot resolve back to a
vulnerable version — same approach as 3.1.1.
Why it was not caught here
This repo had no security check of its own; the advisory only surfaced in a consuming project's CI. Renovate's
config has been in
.github/renovate.jsonsince March but has never produced a PR — no Dependency Dashboardissue, no bot PRs. The config file alone does nothing; the GitHub App was never installed.
Security Auditjob runscomposer audit --lockedon pull requests and pushes, plus a Monday cron soadvisories published against versions already in the lockfile surface without needing a code change.
renovate.jsontuned so that security updates raise thecomposer.jsonfloor (rangeStrategy: bump) insteadof only refreshing the lockfile, advisories come from OSV directly (no dependency on Dependabot alerts), and
security PRs bypass the Monday window. Adds
lockFileMaintenancefor transitive updates and a three-dayminimumReleaseAgebefore dev-dependency patches automerge.(longest case renders at 49); versions move to the commit body and the PR table.
Check Version Bump/Check CHANGELOG Entryare skipped for Renovate PRs. Both expect a release decisionthat dependency PRs do not carry, and their failure would permanently block the dev-dependency automerge that
the config already requested.
Still required (cannot be done from here)
Install the Renovate GitHub App on the
apermoorg: https://github.com/apps/renovate — until then the configstays inert and the weekly
composer auditis the only safety net.Verification
composer audit --locked— no advisoriescomposer test— 78 tests, 245 assertions, all passingcomposer analyse— no PHPStan errorsrenovate-config-validator(latest) — config valid, no warnings