Skip to content

Pillow 12.3.0 has 20 open advisories, and fastembed's cap blocks 13.0.0 #526

Closed

Description

@Valtora

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

  1. added
    bugSomething isn't working
    dependenciesDependency update (used by Dependabot pull requests).
    severity:criticalData loss, security exposure, or the product is unusable.
    scope:workerCelery worker, ML, and the processing pipeline.
    scope:securityAuth, session, token, or encryption boundaries.
    on Oct 21, 2026
  2. Valtora commented on Oct 21, 2026

    @Valtora
    OwnerAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdependenciesDependency update (used by Dependabot pull requests).scope:securityAuth, session, token, or encryption boundaries.scope:workerCelery worker, ML, and the processing pipeline.severity:criticalData loss, security exposure, or the product is unusable.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions