Repository navigation
deps: the XSLT engine at 2.9.0, for an advisory that names the pin we ship - #54
Merged
Merged
Conversation
Takes PhoenixmlDb.Xslt 2.9.0, which carries PhoenixmlDb.XQuery 2.9.0 and PhoenixmlDb.Core 2.5.0. The pin moves two releases: 2.8.0 holds security fixes for a host that compiles or runs a stylesheet from an untrusted party, which is what --stylesheet makes of docmd. All three lock files move with the pin. Regenerated with --force-evaluate, because a lock file records the resolved transitive versions as well as the requested one, and CI restores with --locked-mode. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018wZEgtuzaZPswykiGEBxbz
GHSA-5697-c8qg-472f (high) names every PhoenixmlDb.Xslt up to and including 2.7.0, which is the version 0.2.5 shipped. A shadow attribute, a use-when or a static variable is evaluated while the stylesheet compiles, by a second evaluator, and that one read the environment of the host process; at run time the engine has always answered nothing. --stylesheet compiles a caller's stylesheet in our own process, so the licence key and anything a build put in the environment were readable, with no resource policy needed to reach it. The canary asks three ways -- a shadow attribute, a runtime call, and the list of names -- and expects nothing back each time. Checked against both engines in their own worktrees: on 2.7.0 the shadow attribute writes the value into the result and the test fails; on 2.9.0 it writes an empty string. So the test says something, and the pin cannot slide back under 2.8.0 quietly. The changelog records the bump: byte-identical conversion of the whole corpus, the schema-aware default of 2.9.0, and no performance claim. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018wZEgtuzaZPswykiGEBxbz
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.
Moves
PhoenixmlDb.Xslt2.7.0 -> 2.9.0 (withPhoenixmlDb.XQuery2.9.0 andPhoenixmlDb.Core2.2.0 -> 2.5.0).Why now
GHSA-5697-c8qg-472f(high, published 2026-10-15) names every engine release up to and including 2.7.0 — the pin onmainand the pin 0.2.5 shipped. It is patched in 2.8.0. Two of its items are reachable through--stylesheet, which compiles and runs a caller's stylesheet inside docmd's own process:use-whenor a static variable is evaluated while the stylesheet compiles, by a second evaluator that read the real process environment. At run timefn:environment-variable()has always answered nothing. No resource policy is needed to reach this.xsl:import/xsl:includedirectly — without the policy and without the host's resolver — even where ause-whenexcluded the instruction.Measured here, not taken from the advisory. The same stylesheet, a shadow attribute reading one variable, run on both engines built in their own worktrees:
[a-value-no-stylesheet-may-read][][]— the value is in the output[][][]What is in the branch
Directory.Packages.propsplus all threepackages.lock.jsonfiles, regenerated with--force-evaluate.EnginePremiseTests: a stylesheet asks for the environment three ways — a shadow attribute, a runtime call, and the list of names — and must be answered nothing each time. It fails on 2.7.0, so it is not vacuous and the pin cannot slide back under 2.8.0 quietly.Verification
PhoenixmlDb.Xsltassembly checked against the package of that version first:diff -rover both output trees reports nothing — 52 files, 4,877,492 bytes each side.typeorvalidationnow compiles instead.XsltTransformer.SchemaAware = falseasks for a basic processor.Relation to the other open PRs
--stylesheettime limit and resource policy) needs this. ItsResourcePolicyis read at run time, and on 2.7.0 the compile-time paths go around it: imports open by name, and static expressions see the environment. The policy is only enforceable on >= 2.8.0, so this pin is the floor that PR stands on.NU1004, not on the engine: it movedsrc/Docmd.Word/packages.lock.jsonand left theCentralTransitiveentries in the other two lock files at[2.7.0, ), which--locked-moderefuses.🤖 Generated with Claude Code
https://claude.ai/code/session_018wZEgtuzaZPswykiGEBxbz