Repository navigation
Pillow 12.3.0 has 20 open advisories, and fastembed's cap blocks 13.0.0 #526
Description
Dependabot now reports 20 advisories against Pillow 12.3.0, two of them critical: a heap buffer overflow in ImagingJpegDecode (GHSA-8g5g-8vmr-9782) and argument injection into the Ghostscript call (GHSA-w889-685w-c8fh). About eleven are high. Every one is fixed only in Pillow 13.0.0 (16 October), and each is raised once per requirements manifest, so there are 100 open alerts.
Pillow 13 cannot resolve. fastembed 0.9.0, the newest release, declares pillow<13.0 on every Python, so Dependabot's #522 failed the backend install with ResolutionImpossible, and #524 added a pillow >=13.0.0 ignore to .github/dependabot.yml. That hold now sits under open advisories, which "Held Pins and Unfixable Advisories" in DEVELOPMENT.md says to avoid by dropping the blocker once the risk is above what the project accepts.
The path is reachable. backend/processing/documents/ocr.py opens images taken from uploaded documents with PIL.Image.open in the parse worker. The API image also carries Pillow for export charts and reportlab. scripts/release.py fails on fixed CRITICAL and HIGH findings, so the next release is blocked until this moves.
fastembed is used only for TextEmbedding (backend/processing/text_embedding.py). Its Pillow dependency serves its image models, which Nojoin never loads.
Proposed: move Pillow to 13.0.0 everywhere and stop fastembed's cap from deciding it, for example by installing fastembed without its declared dependencies (Dockerfile.worker already does that for other packages) while keeping CI, scripts/check.py and the dev requirements consistent, then remove the Dependabot ignore. Dropping fastembed for a direct ONNX text embedding is the fallback if that cannot be made consistent.
Activity
Valtora commentedon Oct 21, 2026
Fixed by #532 (87e5d1d). Pillow is 13.0.0 on every install surface, and fastembed now installs without its declared dependencies, with the ones it needs pinned in worker.txt and a test that fails once fastembed lifts its cap. Embeddings, OCR text and export charts come out identical on 12.3.0 and 13.0.0. #531 tracks the two remaining CRITICAL findings in the worker base image, which also block the next release.