Supply Chain Watch

Closed logFriday, October 23, 2026·Last watch 22:45 ET

What changed in the open-source supply chain

Compromised releases, malicious packages and exploited bugs that touch your dependencies and pipelines, with what to do about each. Checked four times a day.

7 entries4 critical2 high1 medium
  1. Dawn watch
    06:00 ET

    No log for this watch

  2. Midday watch
    12:00 ET

    No log for this watch

  3. Evening watch
    18:00 ET

    No log for this watch

  4. Night watch
    21:00 ET · ran 22:45 · 7 new

    First log of the new watch. Patch tonight: PHP2Shell (exploited), GitLab/Ruby regex RCE, and Node's Brotli bug, now shown to run code. LiteLLM carried in from Oct 21.

Your stack

Paste package names (one per line), or load a manifest or lockfile: package.json, package-lock.json, requirements.txt, poetry.lock, Pipfile.lock, Cargo.lock, go.mod, Gemfile.lock, composer.json. Matching entries get a "Matches your stack" label on every page, and you can filter to just those.

Your list stays in this browser (local storage). Files are read on your device and never uploaded. Matching is by package name, not version, so a match means "check this", not "you are vulnerable".

  1. CriticalPublic exploitActive · timelineVulnerability · Runtimes · Packagist23:05 ET

    PHP2Shell: unauthenticated RCE in PHP is under mass exploitation; emergency fixes out since Oct 21

    PHP shipped emergency releases on Oct 21 for two critical flaws that let an attacker without an account run code on a server. Exploit attempts reported since then number in the millions, with attackers trying to install Mirai botnet malware. On Oct 23 PHP flagged a separate, lower-risk session issue that the emergency builds do not fix; it only affects unusual session-handler configurations.

    php < 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35
    Am I affected?
    PHP versionphp -v | head -1
    Stopgap setting in effectphp -i | grep session.upload_progress.enabled
    PHP base imagesdocker images --format '{{.Repository}}:{{.Tag}}' | grep -E '(^|/)php:'
    What to do

    Upgrade to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35, including container base images. As a stopgap (and to cover the Oct 23 issue), set session.upload_progress.enabled=0.

  2. CriticalFix available · timelineCompromised release · PyPI · Docker · AI models22:45 ET

    LiteLLM 1.107.0 shipped a credential stealer on PyPI and in its Docker images

    On Oct 21 a release built from a lookalike repository pushed backdoored litellm 1.107.0 wheels to PyPI and matching images to GHCR and Docker Hub. The payload runs on every Python start via a .pth file, harvests cloud, CI, SSH and AI-tool credentials (and proxy provider keys when DATABASE_URL is set), and polls for remote code hourly. PyPI pulled the release in under two hours; the latest and main-stable Docker tags pointed at the bad image for roughly 2.5 hours. Researchers report the 1.106.x line as clean.

    litellm==1.107.0ghcr.io/berriai/litellm:v1.107.0docker.io/litellm/litellm:v1.107.0
    Am I affected?
    Installed versionpip show litellm 2>/dev/null | grep -i '^version'
    Lockfiles and requirementsgrep -rnE 'litellm.{0,4}1\.107\.0' --include='*.txt' --include='*.lock' --include='*.toml' --include='*.cfg' .
    Backdoor files on diskfind / -path '*site-packages*' \( -name cook.pth -o -name cook.py \) 2>/dev/null
    Container imagesdocker images --digests | grep -i litellm
    What to do

    Search lockfiles, image digests and mirrors for 1.107.0. If it ran anywhere with network access, rebuild that environment, pin litellm==1.106.2, block litellm.dev, and rotate every credential the host could reach.

  3. CriticalFix available · timelineVulnerability · Dev infrastructure · RubyGems · Runtimes22:45 ET

    GitLab CVSS 10 RCE through Ruby's regex engine; Ruby ships matching fixes

    GitLab's Oct 21 critical patch release fixes an unauthenticated remote code execution bug triggered by a crafted Org-mode file, rooted in an integer overflow in Onigmo, the regex engine inside Ruby. Fixed GitLab versions are 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 and 18.11.13; GitLab.com is already patched. On Oct 23 the Ruby team released 4.0.9, 3.4.12 and 3.3.13 with fixes for the underlying regex bugs. It is not in CISA KEV yet, but public repositories claiming proofs of concept have appeared.

    GitLab CE/EE < 19.5.1ruby < 4.0.9 / 3.4.12 / 3.3.13
    Am I affected?
    GitLab version (Omnibus)cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
    Ruby versionruby -v
    What to do

    Upgrade self-managed GitLab now (older than 18.11 means following upgrade stops to 18.11.13 or later). Update Ruby on self-compiled installs and on any service that compiles regexes from untrusted input.

    ReferencesCVE-2026-110264

    SourcesKonfirmity, Convika, ruby-lang.org

  4. CriticalFix available · timelineVulnerability · Runtimes · npm22:45 ET · updated 23:05

    Node.js Brotli bug (Node2Shell) shown to run code on an official build; patch to 24.22.1 and peers

    Node's Oct 21 security release fixed 10 CVEs across the 22.x, 24.x and 26.x lines. The worst, an out-of-bounds write in the bundled Brotli decoder, is no longer theoretical: on Oct 23 Imperva reported code execution on the official Node.js 24.22.0 Linux arm64 build, including through Express 5.0-5.3 and body-parser 2.0-2.3 request handling, though not on every attempt. Three high-severity TLS and DNS bugs in the same release let certificates match the wrong host or let a NUL byte truncate a hostname. No in-the-wild exploitation reported yet; Node 20.x and older are end-of-life and get no fix.

    node 26.12.1node 24.22.1node 22.23.4
    Am I affected?
    Local Node versionnode -v
    Node base imagesdocker images --format '{{.Repository}}:{{.Tag}}' | grep -E '(^|/)node:'
    Pinned versions in repogrep -rnE '(node-version|FROM node|"node":)' --include='*.yml' --include='*.yaml' --include='Dockerfile*' --include='package.json' --include='.nvmrc' .
    What to do

    Move to 26.12.1, 24.22.1 or 22.23.4 everywhere, including base images, CI runners and serverless runtimes; replace any Node 20.x. Until then, limit untrusted Brotli traffic at the edge.

  5. HighPublic exploitVulnerability · PyPI23:05 ET

    Pillow 13.0.0 fixes image-parsing bugs rated up to CVSS 9.2, including command execution paths

    Pillow 13.0.0, released Oct 16, fixes several flaws now drawing attention: command execution through EPS files when Ghostscript is installed (versions 2.6.0 to 12.3.0), a crafted FPX file that can run commands on a single Image.open() when olefile is present, and memory overflows in lossless JPEG thumbnails and in-memory TIFF saves, the latter with a public proof of concept. The 9.2 scores overstate some of these, since each needs specific conditions; maintainers rate the EPS issue moderate. No exploitation reported.

    pillow < 13.0.0
    Am I affected?
    Installed versionpip show pillow 2>/dev/null | grep -i '^version'
    Requirements and lockfilesgrep -rniE '^pillow|name = "pillow"' --include='*.txt' --include='*.lock' --include='*.toml' -A1 .
    What to do

    Upgrade pillow to 13.0.0 (it requires Python 3.11+). If you can't yet, avoid opening untrusted EPS/FPX files, and remove ghostscript and olefile from images that don't need them.

  6. HighAdvisory · npm22:45 ET · updated 23:05

    Electron distrusts compromised CA intermediates that allowed TLS impersonation

    eMudhra said on Oct 22 it will leave the global TLS certificate business after eight of its intermediate CA keys were found to be easily guessable. Electron published fixes that stop trusting the affected intermediates; until then, an attacker on the network holding a certificate from one of them could impersonate servers to Electron apps through Chromium networking or Node's tls, https and fetch. Rated CVSS 7.4; no known exploitation.

    electron 44.9.1electron 43.8.1electron 42.11.16electron 45.0.0-beta.6
    Am I affected?
    Electron version in a projectnpm ls electron
    What to do

    Bump electron to a fixed release for your major line and ship an app update, especially for apps that auto-update or call internal APIs over TLS.

  7. MediumVulnerability · crates.io22:45 ET

    tokio 1.54.0 timer race can corrupt memory in safe Rust; fixed in 1.54.1

    A race between Interval ticking and the multi-threaded runtime's time driver could drop a timer entry while it was firing, causing a use-after-free. Symptoms range from assertion panics to heap corruption. Only 1.54.0 is affected; local, high-complexity, CVSS 5.8.

    tokio 1.54.0
    Am I affected?
    Resolved tokio versiongrep -A1 'name = "tokio"' Cargo.lock
    What to do

    If Cargo.lock pins tokio 1.54.0, run cargo update -p tokio to reach 1.54.1 or later.

    ReferencesCVE-2026-115567, GHSA-5wjr-9356-4wc8, RUSTSEC-2026-0384

    Sourcescve.now

No entries for this day match those filters.

How this works

Critical: act nowHigh: this weekMedium: check exposureContext

Four times a day (06:00, 12:00, 18:00 and 21:00 Eastern), Claude reads advisory and malware feeds, including cve.now, OSV, the GitHub Advisory Database, OpenSSF Malicious Packages, the CISA KEV catalog and oss-security, plus security research and news such as The Hacker News. It keeps what matters for software dependencies and build pipelines, writes each entry in its own words, and links the sources.

Entries are triage notes, not full advisories. "Am I affected?" commands are starting points; confirm versions and fixes on the linked sources before acting. EPSS is FIRST's estimate of the chance of exploitation in the next 30 days.

RSS feeds