You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This release backports the PHP version work from the 13.x branch (#4547) to the 12.x LTS line. When a PHP security release lands, the first thing everyone asks is which PHP they are running, and until now a cdxgen SBOM could not tell them. Composer SBOMs now keep the PHP facts their lock file carries, --include-formulation records the PHP and Composer of the machine that generated the BOM, and container and OS scans read the version of PHP that was built from source. Two new audit rules use that version to flag builds affected by CVE-2026-109618 and CVE-2026-109619, the unauthenticated remote code execution bugs fixed in PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12. (#4539, #4540)
Composer projects
A composer.lock knows more than cdxgen used to keep. Its platform, platform-dev and platform-overrides entries now become properties on the project's component, such as cdx:composer:platform:php = ^8.1 and cdx:composer:platformOverride:php = 8.1.27. When the composer.json in the scanned directory has no name, they go in the document's metadata.properties instead. Each locked package also keeps its own php, hhvm, ext-* and lib-* requirements as cdx:composer:require:* properties, so psr/log now carries cdx:composer:require:php = >=8.0.0. These are constraints, not the PHP that runs, so none of them becomes a component and the dependency graph is unchanged.
Formulation
With --include-formulation, the toolchain list now includes php and composer as platform components with generic purls and CPEs, for example pkg:generic/php@8.5.11 with cpe:2.3:a:php:php:8.5.11:*:*:*:*:*:*:*, and pkg:generic/composer@2.10.3 with cpe:2.3:a:getcomposer:composer:2.10.3:*:*:*:*:*:*:*. cdxgen runs php -n -v, which loads no php.ini, and composer --version --no-plugins --no-scripts --no-interaction. The PHP path that Composer prints is never recorded. A distro build such as Ubuntu's 8.1.2-1ubuntu2.14 keeps the version it reports but gets no CPE, because distros backport fixes under the old upstream number. Like the other toolchains, these components have no bom-ref, and they describe the build machine rather than the runtime of whatever the BOM describes. Set PHP_CMD or COMPOSER_CMD to choose which commands are run.
Container images and OS scans
Images built on the official php images, FrankenPHP and other /usr/local builds compile PHP from source, so no package database records it. Container and rootfs scans now read the version compiled into php, php-fpm, php-cgi, phpdbg, libphp*.so and frankenphp, or from the installed php_version.h. They tag those file components with cdx:php:buildVersion, cdx:php:buildVersionSource and cdx:php:sapi, and add one pkg:generic/php@<version> platform component with a CPE for each version found. -t os and obom do the same for a short, fixed list of directories, looking at no more than 64 files and executing nothing. PHP installed by a package manager (deb, rpm, apk, Homebrew, Nix, Guix or Chocolatey) is still identified by its package, and gets neither the generic component nor the properties.
Audit rules
PHP-RCE-001 (critical) flags a source-built PHP-FPM, php-cgi, libphp or FrankenPHP older than 8.2.35, 8.3.36, 8.4.27 or 8.5.12, or an 8.6.0 pre-release before RC4. PHP-RCE-002 (medium) flags the same builds of the CLI and phpdbg, which aren't reachable from the network themselves but share the vulnerable code with the web SAPIs built alongside them. Turn them on with --bom-audit --bom-audit-categories php-security. Builds from the php-src CVE backport branches keep their old version number, so the rules can't tell them apart from vulnerable builds; the finding text says so. Distro PHP is left to your vulnerability database.
Other changes
oci:image:appLanguage now names the language of an image's command. The check compared array positions instead of language names, so a command containing 0 , such as a port number, was labelled 0, and no image was ever labelled php, node or any other language.
One behaviour differs from 13.x: when --project-name replaces the main component in a multi-type scan, the Composer project component it displaces is dropped, and its platform properties go with it. The per-package cdx:composer:require:* properties are unaffected.
This release finishes what 12.8.8 set out to do: the October 2026 Node.js security fixes are now in every cdxgen standalone binary and container image.
12.8.8 updated our Node.js version pins but missed .nvmrc, the one file the binary build reads. Its binaries went out with Node.js 24.18.0, and its container images failed to build. If you upgraded to 12.8.8 for the Node.js fixes, please upgrade again.
The issue is described in GHSA-5266-jm88-3grm. The bundled runtimes contained the Node.js Brotli decoder bug (CVE-2026-111497). cdxgen can feed that decoder untrusted data in two ways: when it scans a repository whose Podfile.lock points at an attacker-controlled host, and when someone posts to cdxgen --server. If you install cdxgen from npm, it runs on your own Node.js; upgrade Node.js to 22.23.4, 24.22.1 or 26.12.1.
What changed
Every standalone binary (cdxgen, cbom, obom, hbom, cdx-*, aibom, saasbom, tracebom, on every platform) bundles Node.js 24.22.1. CI now fails if .nvmrc, .versions/node_24 and the ppc64 image's Node.js version disagree. (#4541)
cdxgen-secure is built on the cdxgen image from the same release. Previously every cdxgen-secure tag was built on a cdxgen:master image from August, so it ran that month's master code on Node.js 24.18.0 regardless of its tag. (#4545)
cdxgen-ppc64 installs the official Node.js 24.22.1 build. AlmaLinux's own nodejs package hasn't picked up the fixes yet. (#4543)
cdxgen-bun is built with Bun 1.4.4, whose bundled Brotli includes the same decoder fix.
The container builds install timezonedb from a checksum-pinned tarball. pecl.php.net's release lookup started failing, which is what broke the 12.8.8 images. (#4543)
undici is updated to 7.30.1, along with fast-uri 3.1.8, brace-expansion 5.0.12 and qs 6.16.1. (#4541)
Checking your copy
Run cdxgen --version; it should print Runtime: Node.js, Version: 24.22.1. Every *-postbuild.cdx.json attached to this release lists pkg:generic/nodejs/node@24.22.1.
This LTS release updates bundled runtimes and container images for upstream security fixes.
Node.js bumped to 22.23.4, 24.22.1 and 26.12.1 (October 2026 security releases), including the CI and Alpine node images.
PHP container images rebased on PHP 8.3.36, 8.4.27 and 8.5.12 (CVE-2026-109618, CVE-2026-109619), along with the PHP containers used by the binary builds.
This LTS release hardens server mode, tracked as GHSA-259h-c659-9x53. The git host allowlist checked a different host than the one git connected to for some URLs, and a request could turn on deep or installDeps even in secure mode or with --no-install-deps, which let a cloned project's build scripts run. Both are fixed, along with related gaps in redirects, host-wide project types, serverUrl handling and symlinked paths. Upgrading is recommended for anyone running cdxgen --server.
136a28eaa (#16305 by @Chaosnico9000) Skip the --target validation when rustup target list fails, e.g. when rustup is on PATH but has no toolchain installed, instead of rejecting every target as missing.
52081e04a (#16333 by @amrbashir) Rename the misspelled choowHowToInstall NSIS language string to chooseHowToInstall. A custom language file in bundle.windows.nsis.customLanguageFiles that only defines the old name keeps working for now, but users should migrate to the new name.
Dependencies
Upgraded to tauri-cli@2.12.4
4a6f51251 (#16317 by @lazerg) Updated zip to v9 to fix RUSTSEC-2026-0367, RUSTSEC-2026-0368 and RUSTSEC-2026-0369.
Support Temporal.Instant and Temporal.ZonedDateTime in vi.setSystemTime() - by @Prajwal2246, Prajwal2246, Claude Opus 5.5 (1M context), @hi-ogawa and Codex (GPT-6) in #11321(f150f)
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
dependenciesPull requests that update a dependency filejavascriptrustPull requests that update rust code
0 participants
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.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
6.20.3→6.20.46.43.14→6.43.1512.8.6→12.9.012.9.12.12.3→2.12.466.11.0→66.12.066.11.0→66.12.05.0.4→5.1.00.10→0.110.11.0→0.11.13.6.1→3.7.00.22→0.2310.12.0→10.14.01.1.9→1.1.110.3.32→0.3.3417.13.0→17.14.00.12→0.131.48.0→1.49.00.2.186→0.2.1910.9→0.103.3.18→3.3.200.12→0.131.10.0→1.10.31.10.0→1.10.310.12.1→10.34.90.9→0.100.10.1→0.10.31.12.3→1.13.10.13.4→0.13.51.96.0→1.99.11.0.228→1.0.2291.0.150→1.0.1540.10→0.115.6.1→5.7.15.8.07.5.21→7.5.222.12.4→2.12.52.7.3→2.7.42.7.1→2.8.42.3.2→2.4.12.3.3→2.8.02.5.4→2.7.22.4.2→2.5.52.4.1→2.5.01.1.2+spec-1.1.0→1.2.00.28→0.3266.11.0→66.12.01.23.2→1.29.08.1.6→8.3.58.3.68.3.4→8.3.58.3.65.0.4→5.1.00.59→0.610.52→0.568.21.1→8.22.1Release Notes
cdxgen/cdxgen (@cyclonedx/cdxgen)
v12.9.0Compare Source
This release backports the PHP version work from the 13.x branch (#4547) to the 12.x LTS line. When a PHP security release lands, the first thing everyone asks is which PHP they are running, and until now a cdxgen SBOM could not tell them. Composer SBOMs now keep the PHP facts their lock file carries,
--include-formulationrecords the PHP and Composer of the machine that generated the BOM, and container and OS scans read the version of PHP that was built from source. Two new audit rules use that version to flag builds affected by CVE-2026-109618 and CVE-2026-109619, the unauthenticated remote code execution bugs fixed in PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12. (#4539, #4540)Composer projects
A
composer.lockknows more than cdxgen used to keep. Itsplatform,platform-devandplatform-overridesentries now become properties on the project's component, such ascdx:composer:platform:php=^8.1andcdx:composer:platformOverride:php=8.1.27. When thecomposer.jsonin the scanned directory has noname, they go in the document'smetadata.propertiesinstead. Each locked package also keeps its ownphp,hhvm,ext-*andlib-*requirements ascdx:composer:require:*properties, sopsr/lognow carriescdx:composer:require:php=>=8.0.0. These are constraints, not the PHP that runs, so none of them becomes a component and the dependency graph is unchanged.Formulation
With
--include-formulation, the toolchain list now includesphpandcomposerasplatformcomponents with generic purls and CPEs, for examplepkg:generic/php@8.5.11withcpe:2.3:a:php:php:8.5.11:*:*:*:*:*:*:*, andpkg:generic/composer@2.10.3withcpe:2.3:a:getcomposer:composer:2.10.3:*:*:*:*:*:*:*. cdxgen runsphp -n -v, which loads nophp.ini, andcomposer --version --no-plugins --no-scripts --no-interaction. The PHP path that Composer prints is never recorded. A distro build such as Ubuntu's8.1.2-1ubuntu2.14keeps the version it reports but gets no CPE, because distros backport fixes under the old upstream number. Like the other toolchains, these components have nobom-ref, and they describe the build machine rather than the runtime of whatever the BOM describes. SetPHP_CMDorCOMPOSER_CMDto choose which commands are run.Container images and OS scans
Images built on the official
phpimages, FrankenPHP and other/usr/localbuilds compile PHP from source, so no package database records it. Container and rootfs scans now read the version compiled intophp,php-fpm,php-cgi,phpdbg,libphp*.soandfrankenphp, or from the installedphp_version.h. They tag those file components withcdx:php:buildVersion,cdx:php:buildVersionSourceandcdx:php:sapi, and add onepkg:generic/php@<version>platform component with a CPE for each version found.-t osandobomdo the same for a short, fixed list of directories, looking at no more than 64 files and executing nothing. PHP installed by a package manager (deb, rpm, apk, Homebrew, Nix, Guix or Chocolatey) is still identified by its package, and gets neither the generic component nor the properties.Audit rules
PHP-RCE-001 (critical) flags a source-built PHP-FPM, php-cgi, libphp or FrankenPHP older than 8.2.35, 8.3.36, 8.4.27 or 8.5.12, or an 8.6.0 pre-release before RC4. PHP-RCE-002 (medium) flags the same builds of the CLI and phpdbg, which aren't reachable from the network themselves but share the vulnerable code with the web SAPIs built alongside them. Turn them on with
--bom-audit --bom-audit-categories php-security. Builds from the php-src CVE backport branches keep their old version number, so the rules can't tell them apart from vulnerable builds; the finding text says so. Distro PHP is left to your vulnerability database.Other changes
oci:image:appLanguagenow names the language of an image's command. The check compared array positions instead of language names, so a command containing0, such as a port number, was labelled0, and no image was ever labelledphp,nodeor any other language.One behaviour differs from 13.x: when
--project-namereplaces the main component in a multi-type scan, the Composer project component it displaces is dropped, and its platform properties go with it. The per-packagecdx:composer:require:*properties are unaffected.Checking your copy
With PHP 8.5.11 and Composer 2.10.3 from Homebrew on macOS, this prints:
What's Changed
Full Changelog: cdxgen/cdxgen@v12.8.9...v12.9.0
v12.8.9Compare Source
This release finishes what 12.8.8 set out to do: the October 2026 Node.js security fixes are now in every cdxgen standalone binary and container image.
12.8.8 updated our Node.js version pins but missed
.nvmrc, the one file the binary build reads. Its binaries went out with Node.js 24.18.0, and its container images failed to build. If you upgraded to 12.8.8 for the Node.js fixes, please upgrade again.The issue is described in GHSA-5266-jm88-3grm. The bundled runtimes contained the Node.js Brotli decoder bug (CVE-2026-111497). cdxgen can feed that decoder untrusted data in two ways: when it scans a repository whose
Podfile.lockpoints at an attacker-controlled host, and when someone posts tocdxgen --server. If you install cdxgen from npm, it runs on your own Node.js; upgrade Node.js to 22.23.4, 24.22.1 or 26.12.1.What changed
cdxgen,cbom,obom,hbom,cdx-*,aibom,saasbom,tracebom, on every platform) bundles Node.js 24.22.1. CI now fails if.nvmrc,.versions/node_24and the ppc64 image's Node.js version disagree. (#4541)cdxgen-secureis built on thecdxgenimage from the same release. Previously everycdxgen-securetag was built on acdxgen:masterimage from August, so it ran that month's master code on Node.js 24.18.0 regardless of its tag. (#4545)cdxgen-ppc64installs the official Node.js 24.22.1 build. AlmaLinux's ownnodejspackage hasn't picked up the fixes yet. (#4543)cdxgen-bunis built with Bun 1.4.4, whose bundled Brotli includes the same decoder fix.timezonedbfrom a checksum-pinned tarball. pecl.php.net's release lookup started failing, which is what broke the 12.8.8 images. (#4543)undiciis updated to 7.30.1, along withfast-uri3.1.8,brace-expansion5.0.12 andqs6.16.1. (#4541)Checking your copy
Run
cdxgen --version; it should printRuntime: Node.js, Version: 24.22.1. Every*-postbuild.cdx.jsonattached to this release listspkg:generic/nodejs/node@24.22.1.v12.8.8Compare Source
This LTS release updates bundled runtimes and container images for upstream security fixes.
v12.8.7Compare Source
This LTS release hardens server mode, tracked as GHSA-259h-c659-9x53. The git host allowlist checked a different host than the one git connected to for some URLs, and a request could turn on
deeporinstallDepseven in secure mode or with--no-install-deps, which let a cloned project's build scripts run. Both are fixed, along with related gaps in redirects, host-wide project types,serverUrlhandling and symlinked paths. Upgrading is recommended for anyone runningcdxgen --server.Thanks to @varandaa for the report.
tauri-apps/tauri (@tauri-apps/cli)
v2.12.4: @tauri-apps/cli v2.12.4Compare Source
[2.12.4]
Bug Fixes
136a28eaa(#16305 by @Chaosnico9000) Skip the--targetvalidation whenrustup target listfails, e.g. whenrustupis onPATHbut has no toolchain installed, instead of rejecting every target as missing.52081e04a(#16333 by @amrbashir) Rename the misspelledchoowHowToInstallNSIS language string tochooseHowToInstall. A custom language file inbundle.windows.nsis.customLanguageFilesthat only defines the old name keeps working for now, but users should migrate to the new name.Dependencies
tauri-cli@2.12.44a6f51251(#16317 by @lazerg) Updatedzipto v9 to fix RUSTSEC-2026-0367, RUSTSEC-2026-0368 and RUSTSEC-2026-0369.unocss/unocss (@unocss/cli)
v66.12.0Compare Source
🚀 Features
🐞 Bug Fixes
un-prefixed attributes withorder- by @zaderlyl and @zyyv in #5381 (7224d)getCSSfrom lsp - by @Jungzl in #5382 (eeaee)basis-*- by @AliBaig-xD in #5386 (92703)uno.cssentry indist-chunkbuild mode - by @x-labb in #5388 (59bc2)vue-scoped- by @Jungzl and @zyyv in #4829 (e0c82)🏎 Performance
View changes on GitHub
vitest-dev/vitest (@vitest/coverage-v8)
v5.1.0Compare Source
🚀 Features
--last-failedto run only failed tests - by @sheremet-va in #11558 (82f63)Temporal.InstantandTemporal.ZonedDateTimeinvi.setSystemTime()- by @Prajwal2246, Prajwal2246, Claude Opus 5.5 (1M context), @hi-ogawa and Codex (GPT-6) in #11321 (f150f)--since-last-runflag - by @sheremet-va in #11516 (08bd9)node:timersandnode:timers/promise- by @hi-ogawa, OpenCode and Codex (GPT-6) in #10899 (fbe97)pointerAPI - by @macarie in #10780 (5dc09)ignoreNodeoption - by @erickserra and @AriPerkkio in #11688 (e02db)🐞 Bug Fixes
--changedfiltering - by @sheremet-va in #11621 (3a39c)watchfrom the root config in projects - by @nstepien and Claude Opus 5.5 (1M context) in #11724 (77c12)page.viewport()- by @sheremet-va in #11738 (49ff4)Configuration
📅 Schedule: (in timezone Asia/Shanghai)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.