Edition of Friday 30 October 2026

Attackers hijack 42 GitHub repositories in npm worm campaign “testmetest”

Comments on “Attackers hijack 42 GitHub repositories in npm worm campaign “testmetest””

Claim-checked. Scored by all three judges, and its checkable claims were compared with the sources it cites. How far stories are checked

JFrog found 42 GitHub repositories, belonging to 11 legitimate owners, planted with malware tied to the "testmetest" npm worm, which it says resembles Shai-Hulud variants. Project settings for Claude Code, Gemini, Cursor and VS Code can launch a hidden .github/init.js that targets GitHub and npm tokens. One later package variant starts on import, so --ignore-scripts no longer protects. SafeDep's report of a home-directory wiper triggered by token revocation could not be verified. The number of victims is unknown.

Read the original at heise.de. The judges saw only its text, with the site, the author and link domains removed; they are shown again after ranking.

Why it ranked

No. 21 of 127 with a score of 0.75. The panel rated it highest on reader interest (0.87) and practical relevance (0.86), lowest on new information (0.57). Placed No. 21, No. 4 by score alone: the ninth Security story of the day (−0.080), and close to “Native addon camouflage: 42 armed GitHub repos reveal hidden NPM publisher”, No. 1 on Wednesday 28 October 2026 (−0.040). The placement terms move stories; they are not part of the score.

AI judgeJudge 2claude-haiku-5-5
Active npm/GitHub supply-chain worm with concrete IOCs, practical remediation advice and technical detail on concealment; mostly reports JFrog's findings with partial evidence gaps.
AI judgeJudge 3gpt-5.6-luna
A well-sourced report of a large npm/GitHub supply-chain campaign, with concrete execution paths, credential risks, concealment techniques, and response guidance. Some campaign details overlap recently covered security stories.

Each judge wrote its line after answering the rubric, with the site and the author still hidden. Every answer behind this is in the table under Score.

Score

0.75total under rubric v2.3

Judges’ mean answer per question, on a scale from 0 to 1. Questions marked minus count against the score.
  • Significance0.67
  • Reader interest0.87
  • Audience breadth0.67
  • Practical relevance0.86
  • Substantiated0.75
  • Technical depth0.79
  • New information0.57
  • Counts against: Promotional0.03
  • Counts against: Overclaim0.14

Each judge’s answer per question (0–1), their mean and spread, and what the question adds to the score (weight × mean).

QuestionJudge 1Judge 2Judge 3MeanSpreadWeightContribution (weight times mean)
SignificanceHow much does this change what people in tech know or can do?0.710.550.760.670.21+0.24+0.162
Reader interestWould a well-informed senior engineer or tech founder want to read this today, and likely pass it on?0.840.850.910.870.07+0.26+0.225
Audience breadthHow many people who build technology does it concern?0.710.670.620.670.09+0.13+0.087
Practical relevanceHow useful is it to someone who builds software or tech products?0.860.850.860.860.01+0.22+0.189
SubstantiatedHow well is it backed? Consider whether it is the primary source, and whether its main claims come with data, code, a demo, a reproducible method or citations.0.650.750.840.750.19+0.05+0.037
Technical depthHow technically substantive is it?0.780.800.780.790.03+0.05+0.039
New informationDoes it contain information absent from the stories covered in the last 7 days (list provided)?0.720.600.380.570.34+0.05+0.028
PromotionalIs it mainly marketing with little substance (a press release, ad or sponsored post with no real information)? A launch post that carries real news is not promotional.0.050.030.010.030.04−0.19−0.006
OverclaimDo the headline or conclusions claim more than the body supports?0.240.100.080.140.16−0.11−0.015
Sum of contributions+0.746
Claim-check penalty0.000
Total, as published0.746

Spread is the highest minus the lowest judge answer. marks a spread above 0.40: the judges disagree, and the story is marked contested.

The badge for this ranking, for the author's page or anyone's: one line of HTML, and it links back here.

Ranked #21 on Rubric, 30 Oct 2026
<a href="https://rubric.hrih.si/editions/2026-10-30/21/"><img src="https://rubric.hrih.si/badge/2026-10-30/21.svg" alt="Ranked #21 on Rubric, 30 Oct 2026" width="245" height="28"></a>

Claim check

Claim check: 6 matches source · 2 couldn’t check. Each claim is compared with the source the article itself cites; a flag is published only when both checkers agree.

  1. Matches sourceNumber

    JFrog says the 42 compromised GitHub repositories belong to 11 legitimate owners.

    The cited source says the same thing.

    The article says

    “the 42 compromised GitHub repositories belong to 11 legitimate owners”

    The source says

    “JFrog Security Research has identified 42 armed third-party GitHub repositories across 11 legitimate owners connected to the testmetest npm campaign”

    Source cited by the article: research.jfrog.com/post/beyond-testmetest-42-hijacked-github-repos

  2. Matches sourceGeneralization

    JFrog says the planted malware resembles Shai-Hulud variants.

    The cited source says the same thing.

    The article says

    “which JFrog says resembles Shai-Hulud variants”

    The source says

    “our evidence confirms shared tooling and a Shai-Hulud-descendant payload, but does not establish that the original Miasma operators are responsible”

    Source cited by the article: research.jfrog.com/post/beyond-testmetest-42-hijacked-github-repos

  3. Matches sourceDate

    SafeDep described the npm side of the campaign on Oct. 22 but found no compromised third-party packages or victims.

    The cited source says the same thing.

    The article says

    “Security provider SafeDep had already described the campaign’s npm side on Oct. 22, but had found no compromised third-party packages or victims”

    The source says

    “As of 22 October 2026, SafeDep has found no compromised third-party packages or victims”

    Source cited by the article: safedep.io/testmetest-npm-worm-miasma-variant

  4. Matches sourceNumber

    JFrog lists 15 npm packages for which at least one version was deemed malicious.

    The cited source says the same thing.

    The article says

    “JFrog lists 15 npm packages for which at least one version was deemed malicious”

    The source says

    “This list contains only packages that have releases classified as malicious. Benign releases are intentionally excluded”

    Source cited by the article: research.jfrog.com/post/beyond-testmetest-42-hijacked-github-repos

  5. Couldn’t checkCausal conclusion

    SafeDep says the worm installs a wiper that deletes the home directory once victims revoke the stolen GitHub token.

    The source was unreachable, paywalled or too long, or the two checkers disagreed.

    The article says

    “SafeDep says the worm installs a wiper that deletes the home directory as soon as victims revoke the stolen GitHub token”

    The source says

    No passage could be compared.

    Source cited by the article: safedep.io/testmetest-npm-worm-miasma-variant

  6. Couldn’t checkCausal conclusion

    JFrog found Shellpanel workflows in some hijacked repositories that attack cPanel systems via CVE-2026-41940, but no evidence of a continuous attack chain from the npm infection to exploitation.

    The source was unreachable, paywalled or too long, or the two checkers disagreed.

    The article says

    “JFrog also found Shellpanel workflows in some hijacked repositories that attack cPanel systems through the critical vulnerability CVE-2026-41940”

    The source says

    No passage could be compared.

    Source cited by the article: cve.org/CVERecord

  7. Matches sourceNumber

    The payload file .github/init.js was 12.9 to 13.7 MB, so GitHub code search did not index it.

    The cited source says the same thing.

    The article says

    “the file was 12.9 to 13.7 MB, depending on the variant, and GitHub code search does not index files that large”

    The source says

    “GitHub code search did not index the 12.9 to 13.7 MB blobs, and the contents API could not return files of that size”

    Source cited by the article: research.jfrog.com/post/beyond-testmetest-42-hijacked-github-repos

  8. Matches sourceNumber

    The threat actors run 17 campaign infrastructure repositories under the GitHub account CementBeetleSteeple, and as of Oct. 25 stable-scripts-9965 held 27 files believed to be encrypted data packages.

    The cited source says the same thing.

    The article says

    “17 of which are run under the GitHub account CementBeetleSteeple”

    The source says

    “The account CementBeetleSteeple hosted 17 campaign repositories”

    Source cited by the article: research.jfrog.com/post/beyond-testmetest-42-hijacked-github-repos

Also covered by

No other coverage was clustered with this story.

Elsewhere

Elsewhere: HN —

Recorded for context only, checked 30 Oct 2026, 05:47 UTC. It played no part in the ranking.

Panel for this edition

Four AI agents ranked this edition: three judges scored every story blind to its site and author, and a fourth compared the top stories’ claims with the sources they cite. Summaries are written by AI.

Model versions are pinned for every edition. How ranking works describes rubric v2.3.

Comments

Readers’ comments on this story have a page of their own, ranked by a public rubric rather than by votes.

Comments on “Attackers hijack 42 GitHub repositories in npm worm campaign “testmetest””

More on Rubric

From the last 7 editions, chosen by shared topic, score and date.

  1. Score 0.79

    Zlib 1.4