Skip to content

security: bump setuptools to 83.0.0 (GHSA-h35f-9h28-mq5c) - #74

Merged
lab700xdev merged 1 commit into
mainfrom
security/setuptools-83
Jul 26, 2026
Merged

security: bump setuptools to 83.0.0 (GHSA-h35f-9h28-mq5c)#74
lab700xdev merged 1 commit into
mainfrom
security/setuptools-83

Conversation

@lab700xdev

Copy link
Copy Markdown
Contributor

Closes the one open Dependabot alert on this repo: #35, setuptools < 83.0.0 (GHSA-h35f-9h28-mq5c, medium).

The vulnerability

MANIFEST.in exclusion directives (exclude, global-exclude, recursive-exclude, prune) are matched against on-disk filenames byte-for-byte, with no Unicode normalization. On macOS APFS/HFS+ a rule saved in NFC does not match a filename written in NFD even though the filesystem treats them as the same file, so a file the maintainer meant to exclude gets packed into the sdist and, if published, uploaded to the immutable PyPI index. Pure-ASCII rules are unaffected.

The change

poetry.lock only — setuptools 81.0.083.0.0. setuptools is a transitive dev-group dependency (pyinstaller requires >=42.0.0) used when building the standalone binaries; it is not shipped to CLI users. No pyproject.toml constraint was added because 83.0.0 already satisfies pyinstaller's existing range.

Verification (no regression)

  • poetry check --lock clean; lock diff is isolated to the setuptools block (no other package, no content-hash/lock-version churn).
  • Full suite green: 253 passed, coverage 88.64% (gate is 85%).
  • CLI output diffed against a pre-bump baseline across --help/--version/info, scan in terminal/markdown/JSON/SPDX form, --strict, --lint, --no-fail-on-risk, diff, and the missing-target and bad-flag error paths — byte-identical after normalizing inherently volatile fields (timestamps, random bom-refs, SPDX ids).
  • Since setuptools is pyinstaller's dependency, the risk is the binary build rather than the test suite, so scripts/build_binaries.sh was run end-to-end: 17M arm64 binary produced, and the frozen binary still flags mock_malware.pt as CRITICAL (RCE posix.system) and exits 2.

Resolves the open Dependabot alert on poetry.lock. setuptools is a
transitive dev-group dependency (pyinstaller requires >=42.0.0), used
when building the standalone binaries.

GHSA-h35f-9h28-mq5c: MANIFEST.in exclude/prune directives are matched
byte-for-byte with no Unicode normalization, so on macOS APFS/HFS+ an
NFC-written rule fails to match an NFD-written filename and the file is
silently packed into the sdist.

Lock-only change; no pyproject constraint needed since 83.0.0 already
satisfies pyinstaller's >=42.0.0.
@lab700xdev
lab700xdev merged commit 54eb113 into main Jul 26, 2026
2 checks passed
@lab700xdev
lab700xdev deleted the security/setuptools-83 branch July 26, 2026 02:27
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