Skip to content

Pin build & runtime deps for reproducible, CVE-clean releases - #8

Merged
ckuma merged 1 commit into
mainfrom
chore/pin-build-deps
Jun 17, 2026
Merged

Pin build & runtime deps for reproducible, CVE-clean releases#8
ckuma merged 1 commit into
mainfrom
chore/pin-build-deps

Conversation

@ckuma

@ckuma ckuma commented Jun 17, 2026

Copy link
Copy Markdown
Owner

Why

Issue #5 shipped a broken Linux build purely because of version drift: CI ran unpinned pip install pyinstaller, and the version it happened to grab at release time did not bundle PIL._tkinter_finder. Pinning the toolchain makes that class of "worked yesterday, broken today" failure impossible.

CVE audit (pip-audit, OSV / PyPI advisory DB)

  • Current resolved versions: clean (0 vulnerabilities across all 11 packages).
  • requirements.txt floors were not: pillow>=9.0.0 allows 12 known CVEs, including:
    • CVE-2023-50447 / CVE-2022-22817ImageMath.eval arbitrary code execution
    • CVE-2023-4863 — libwebp heap buffer overflow
    • CVE-2024-28219 — buffer overflow in _imagingcms
    • plus several DoS issues; all fixed by 12.2.0.
    • python-dateutil and ttkbootstrap floors were clean (pinned for reproducibility only).

Changes

  • pyinstaller==6.21.0 — CI build jobs + build_exe.bat (the Binary does not run on Linux #5 root-cause guard).
  • pillow==12.2.0 — clears all 12 CVEs above.
  • python-dateutil==2.9.0.post0, ttkbootstrap==1.20.3.

These are the exact versions that built the verified-working v4.2 artifacts, so the build output is unchanged — this only locks it.

Follow-up suggestion

Enable Dependabot (pip + github-actions) so these pins get automated update PRs instead of silently aging.

Issue #5 shipped a broken Linux build because the unpinned PyInstaller
version installed at release time did not bundle PIL._tkinter_finder.
Pin the toolchain so a release can no longer silently regress on version
drift, and lock runtime deps to audited, vulnerability-free versions.

- pyinstaller==6.21.0 (CI build jobs + build_exe.bat)
- pillow==12.2.0 (pillow<12.2.0 has 12 known CVEs, incl. ImageMath.eval
  RCE CVE-2023-50447 and libwebp heap overflow CVE-2023-4863)
- python-dateutil==2.9.0.post0, ttkbootstrap==1.20.3

All verified clean with pip-audit (OSV / PyPI advisory DB).
@ckuma
ckuma merged commit 88f49ac into main Jun 17, 2026
5 checks passed
@ckuma
ckuma deleted the chore/pin-build-deps branch June 17, 2026 18:55
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