Security1 distinct publisher2 min readPublished
Shai-Hulud is on its fourth iteration. Trivy, Axios and LiteLLM have all shipped compromised releases. ReversingLabs is giving away a plugin that checks every package request against a reputation index inside Artifactory itself.
The Watch · Security desk

Compiled by The WatchSomething wrong?How this is made
Resolver semantics are the weak point here. npm and pip ask for the newest version of a dependency, and a remote repository fronting the public registry will serve one that went up moments earlier [6]. ReversingLabs describes the recurring chain the same way each time: a trusted maintainer's credentials are compromised, a malicious version is published to npm or PyPI, and every repo configured to auto-update pulls it in with no testing in between [5].
The design choice worth reading closely is that the plugin performs a lookup against an already-built index rather than scanning each package itself. The binary analysis already happened when the package was indexed in Spectra Assure Community, which is what keeps a check on every download request from adding noticeable latency [10]. That moves the accuracy question off the request and onto the index. ReversingLabs says Community continuously monitors public repositories including npm and PyPI for new packages, and reanalyzes its whole corpus as new threats emerge, publishing updated reports [15]. A version nobody has analyzed yet gets whatever verdict the index held at the moment it was queried [5].
The age settings are the part that does not depend on detection at all. min_package_age and min_version_age reject a package or version until it has been publicly available for a set number of days, and the plugin's three preset profiles set how strictly the rest of the criteria block [11]. The bill is symmetrical. The same window that strands an attacker's fresh publish also strands a genuine security patch for the same number of days [3]; the delay is a scheduling decision that belongs to whoever owns the pipeline, not whoever owns the scanner.
On volume: the free tier's 100,000 lookups a month is roughly 3,300 a day [2], and Community+ raises the ceiling tenfold [1]. Cold caches and wide CI fan-out are what will eat that, so the honest way to size it is to count resolutions in a week of real builds before assuming the free tier covers the estate.
One caveat that the ledger cannot fix: everything above is ReversingLabs' account of ReversingLabs' plugin [4]. There is no independent figure for block rate, false blocks, or added latency under load, and the vendor's incident list is its own attribution. The age policy, at least, is testable in a staging instance without taking anyone's detection numbers on faith.
Ranked by verification strength, evidence, and original report placement.
ReversingLabs has released a free native plugin for self-managed instances of JFrog Artifactory that checks every open-source package request against insights from Spectra Assure Community before letting it through.
The common thread ReversingLabs describes: a trusted maintainer's credentials get compromised, a malicious version gets published to npm or PyPI, and any repo set up to auto-update pulls in the new version with no testing needed.
Even with JFrog Artifactory proxying public open-source registries, package managers like npm and pip will typically pull the newest version of a dependency, even if it was published moments before.
Repositories stored and shared on Artifactory are typically considered internal to the organization, so it is easy to assume the contents are safe, but repositories do not judge on their own whether a package is safe.
The gap is exploited two ways: compromised packages are pulled into build pipelines and incorporated into releases shipped to customers, or they land on developer workstations that often hold credentials and access to sensitive systems.
The plugin runs in-process with Artifactory rather than as a separate service or proxy, and because it loads as part of Artifactory it sees every incoming artifact request.
Distinct publishers with included, body-backed reporting in this cluster.
1 article · September 2, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
56 build-pipeline attacks, one vendor's alert queue, and the February jump nobody can attribute yet1 distinct publisher
science
A backdoored litellm release turns every CI job that installed it into a credential incident1 distinct publisher
security
The 2,500-org compromise was a Trivy problem. LiteLLM was the closing act.1 distinct publisher
build
Every one of thirteen named 2025-26 incidents ran on a credential that still worked1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Authoritative on its own plugin, unchecked on everything else
ReversingLabs is the only voice in this story, and for half of it that is the right voice — nobody else can tell you that the install is four files or that the free tier allows 100,000 lookups a month. The other half leaves the product: a fourth Shai-Hulud iteration, compromised releases at Trivy, Axios and LiteLLM, a hit Checkmarx extension, 'millions' of indexed packages, and latency low enough to check every download. Those are all checkable specifics, and none of them are checked here. The three policy profiles are announced without ever being named.
A same-day install with no same-day installers on record
Availability is real: the plugin exists, it is downloadable from the Toolbox or GitHub, and the free tier is generous enough that trying it costs nothing but a restart. Beyond that there is nothing to count — not a named user, not a deployment, not a blocked-package figure from anyone's pipeline. ReversingLabs calls it 'a same-day way to start blocking the next Shai-Hulud', which describes how fast it could be adopted, not how far it has been.
Modest mechanism, campaign-scale framing
Strip the worm names away and what remains is a reputation lookup with a date check — a sound idea, and a fairly old one, dressed in the language of stopping the next Shai-Hulud before it reaches a build. The overstatement is less in what the plugin claims to do than in what goes unsaid about the cost: an age-based hold cannot distinguish a patch from a poisoning, so the safest setting also slows your fastest fix. Add an unmeasured latency promise and a lookup that inherits whatever the index knew at query time, and the framing runs ahead of the mechanism by a moderate margin.
A free tier with the funnel visible from outside
This is the vendor's own blog, wrapped in a Spectra Assure trial banner at the top and a four-product cross-sell at the bottom. The giveaway is coherent commercially: put full functionality inside Artifactory at 100,000 lookups a month, let dependency traffic find the ceiling, and keep Community+ ten times higher up the ladder. ReversingLabs says the plain part out loud — no commercial discussion to get started, that comes later if it proves out — which is candour about an incentive rather than an absence of one.
Solid on the how, blank on the how well
We are fairly sure the plugin exists, installs as described and enforces age thresholds, because those details are specific, self-consistent and published against docs and a GitHub repository anyone can open. We are not in a position to say whether it stops anything: no deployment, no false-positive rate, no index-coverage figure, no second account of the incidents that frame the problem. Confidence here tracks the mechanics and stops at the outcome.