Skip to content

fix(qt): update py7zr to 1.1.3, closing six advisories the toolchain carried - #184

Merged
rldyourmnd merged 1 commit into
mainfrom
fixtures/py7zr-advisories
Aug 15, 2026
Merged

fix(qt): update py7zr to 1.1.3, closing six advisories the toolchain carried#184
rldyourmnd merged 1 commit into
mainfrom
fixtures/py7zr-advisories

Conversation

@rldyourmnd

Copy link
Copy Markdown
Contributor

Follow-up to #183, found by the scanners that could finally see the closure.

What locking revealed

dependency-review and fixture / osv-scan both failed on #183. Not on anything the
PR introduced — on what the Qt toolchain had been installing all along:

py7zr==1.0.0
  GHSA-q6rc-2cgv-63h7   Arbitrary File Write
  GHSA-gjrg-mpp7-g774   Decompression bomb (zip bomb) DoS   (also PYSEC-2026-2972)
  GHSA-h4gh-22qq-72r7   O(n²) algorithmic complexity DoS    (also PYSEC-2026-2973)
  PYSEC-2026-2974

All fixed in 1.1.3.

The exposure predates the lock. uvx --with 'py7zr==1.0.0' installed exactly that
version. What changed is that an uninventoried closure cannot be scanned: dependency
review and OSV had no manifest to read, so six advisories in the library aqtinstall
uses to unpack Qt archives — including arbitrary file write — went unreported.

That is the argument for locking, made by the locking.

After

27 packages checked against OSV, 0 with advisories

requirements-qt.inpy7zr==1.1.3, recompiled with hashes. aqtinstall declares
py7zr>=0.22.0, so it is satisfied. qt-ci.yml's published LOCK_SHA256,
catalog/tools.yml's lock_sha256 and pin, and
tests/fixtures/sdk-runtime-spec.yml's py7zr_version all moved together —
check_qt_toolchain_lock.py fails if they do not.

Evidence

Run 31856452245:

success  fixture / qt-ci / qt (6.8.3)
success  observe / qt-ci

The SDK byte manifest was regenerated through the launcher, and proven_digest and
last_run updated only after the run succeeded.

Remaining, not fixed here

dependency-review also warns that texttable has an OpenSSF Scorecard of 2.1 against
this repository's threshold of 3. That is a warning rather than a failure, it is a
transitive dependency of aqtinstall with no alternative available, and swapping it is a
separate decision from patching a known-vulnerable package. Stated rather than left to
be rediscovered.

Verification

  • validate_all — all tiers OK with GH_TOKEN · actionlint — clean
  • every package in the closure re-queried against OSV

…carried

Locking the Qt closure made it visible to dependency review and OSV for the
first time, and both failed on py7zr==1.0.0:

  GHSA-q6rc-2cgv-63h7   arbitrary file write
  GHSA-gjrg-mpp7-g774   decompression bomb (also PYSEC-2026-2972)
  GHSA-h4gh-22qq-72r7   O(n^2) complexity DoS (also PYSEC-2026-2973)
  PYSEC-2026-2974

All fixed in 1.1.3.

The exposure was not introduced by locking. `uvx --with 'py7zr==1.0.0'`
installed exactly that version, and an arbitrary-file-write flaw in the
library aqtinstall uses to unpack Qt archives is the one that matters most.
What changed is that an uninventoried closure cannot be scanned, and this one
now is: 27 packages, zero advisories.

Re-proven by fixture run 31856452245 before the ledger was updated.
@github-actions github-actions Bot added ci Continuous integration and removed ci Continuous integration labels Aug 15, 2026
@rldyourmnd
rldyourmnd merged commit 0a3f3a7 into main Aug 15, 2026
115 checks passed
@rldyourmnd
rldyourmnd deleted the fixtures/py7zr-advisories branch August 15, 2026 01:38
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