GitHub Advisory malware sweep - 2026-10-10 (new `s4yhii` native-binary credential-stealer dep-confusion operator - 16 npm packages across `@galicia-toolkit-nestjs/*`, `@galicia-toolkit-nestjs-20/*`, `@galicia-toolkit-nestjs-20-lite/*`, `@galicia-toolkit-cheques-nc/*`, `@brick-v2/*` loading prebuilds/-/metrics.node ELF+PE that forks+setsid and exfils AWS/GitHub/npm/Azure DevOps/Actions tokens to oob.s4yhii.com/native; `@tunstock/remact-dom@19.2.0` react-dom typosquat with confirmed `tele.metry.orgin.net/api/v1/events` beacon; Baileys/libsignal lure continuation `@fer2809fl/baileys`+`cloud-baileys`+`arsya-baileys`+10-package `asepxyz*` cluster; crates.io `sharpnes` Telegram-Desktop + Chrome-extension/wallet infostealer (first cargo malware advisory this week); 3-package `kmf-*` + 2-package internal-frontend dep-confusion with oast.pro OAST; 5-package `@tvg-mar/*` dep-confusion probes; 2 Tailwind typosquats; plus pypi `ig-gox` Instagram abuse)
GHSA 2026-10-10: ~48 fresh malware advisories across 10 clusters (46 npm, 1 pypi, 1 crates). Headline items: new s4yhii operator native-binary credential-stealer dep-confusion cluster (16 packages across @galicia-toolkit-nestjs* and @brick-v2 scopes, prebuilds/metrics.node ELF+PE forks+setsid and exfils cloud/CI tokens to oob.s4yhii.com/native); first-seen crates.io infostealer sharpnes targeting Telegram Desktop sessions + Chrome extension/wallet data via Telegram Bot API; and @tunstock/remact-dom@19.2.0 react-dom typosquat with confirmed install-time beacon to tele.metry.orgin.net.
- Incident type
- Advisory sweep. A dated batch of GitHub Advisory Database malware entries collected together. A sweep mixes kinds - typosquats, dependency-confusion probes, boilerplate takedowns with no published analysis, and occasionally real payloads - and its severity reflects the worst confirmed item, not the batch as a whole.
- Detected by
- GitHub Advisory Database · OpenSSF malicious-packages · OpenSSF Package Analysis · Amazon Inspector · kam193/bad-packages · npm security · crates.io security
- Also known as
- 2026-10-10 GHSA sweep · s4yhii native-binary credential-stealer operator · @galicia-toolkit-nestjs native ELF addon · @brick-v2 native ELF addon · @tunstock/remact-dom react-dom typosquat · cloud-baileys arsya-baileys asepxyz Baileys lure wave 2 · sharpnes crates.io Telegram Chrome infostealer · kmf-* oast.pro dep-confusion
- Ecosystems
- crates.ionpmPyPI
- Packages tracked
- 47
What happened
Between roughly 2026-10-09 11:00 UTC (end of yesterdays sweep window) and 2026-10-10 11:00 UTC, the GitHub Advisory Database (via OpenSSF malicious-packages, Amazon Inspectors IN-MAL feed, OpenSSF Package Analysis, and kam193/bad-packages) published ~48 fresh malware advisories: 46 npm, 1 pypi, 1 crates.
The sweep breaks into 9 clusters by operator profile and payload family, plus a cross-cluster operator-continuity analysis. The most important new material is a new native-binary credential-stealer dep-confusion operator (nicknamed s4yhii after its exfil host oob.s4yhii.com) and the first crates.io malware advisory of substance this week (sharpnes, a cross-platform Rust infostealer).
Cluster A - npm s4yhii native-binary credential-stealer dep-confusion (16 packages)
| Package | Versions | GHSA | OSV |
|---|---|---|---|
@galicia-toolkit-nestjs/archetype | 999.0.1, 999.0.5, 999.0.6 | GHSA-76rm-2c8x-h676 | MAL-2026-17721 |
@galicia-toolkit-nestjs/paas | 999.0.3, 999.0.4, 999.0.5, 999.0.6 | GHSA-xmvx-x823-fvm2 | MAL-2026-17723 |
@galicia-toolkit-nestjs/swagger | 999.0.1, 999.0.2, 999.0.3 | GHSA-7hxg-fr5p-9hp5 | - |
@galicia-toolkit-nestjs/commons | 999.0.1, 999.0.6, 999.0.7, 999.0.8, 3.0.1 | GHSA-j7v5-rrxc-7jrh | - |
@galicia-toolkit-nestjs-20/paas | 3.0.3, 3.0.5, 3.0.6, 3.0.7, 999.0.1 | GHSA-mgg2-4cpg-5cfj | - |
@galicia-toolkit-nestjs-20/commons | 999.0.1, 999.0.2, 999.0.3 | GHSA-hwv3-5v66-4cvw | - |
@galicia-toolkit-nestjs-20/archetype | 999.0.1, 999.0.2 | GHSA-43v2-p79h-pjp9 | - |
@galicia-toolkit-nestjs-20-lite/paas | 1.0.20, 1.0.21, 1.0.22, 1.0.24 | GHSA-p5pm-8q88-fj6v | - |
@galicia-toolkit-nestjs-20-lite/commons | 999.0.1, 999.0.2, 999.0.3 | GHSA-pw25-gp8h-4cr2 | MAL-2026-17729 |
@galicia-toolkit-cheques-nc/front | 999.0.1, 999.0.2, 999.0.3 | GHSA-xj56-89c6-596g | MAL-2026-17720 |
@brick-v2/table | 999.0.1, 999.0.2, 999.0.3 | GHSA-rmgm-9vm2-v688 | MAL-2026-17718 |
@brick-v2/icons | 999.0.1, 999.0.2, 999.0.3 | GHSA-gm38-f7q8-qc9p | - |
@brick-v2/core | 999.0.1, 999.0.2 | GHSA-49xp-7x68-8hf4 | MAL-2026-17715 |
@brick-v2/form | 999.0.1, 999.0.3 | GHSA-cxh8-f5qg-3jmp | - |
@brick-v2/tour | 999.0.1, 999.0.2, 999.0.3 | GHSA-4w7c-9xc7-gwv7 | - |
@brick-v2/brand | 999.0.1, 999.0.2, 999.0.3 | GHSA-62v9-prv8-q646 | - |
Payload: each packages preinstall hook runs node index.js || true (or in some variants a module-load require() triggers it); index.js loads prebuilds/<platform>-<arch>/metrics.node, a prebuilt native addon with no shipped C/C++ source and no binding.gyp. The ELF (Linux) and PE (Windows) binaries - built as metrics with the entry symbol do_report, the decoy env var _METRICS_PKG, and a src:native JSON field - read AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN, GITHUB_TOKEN, NPM_TOKEN, NODE_AUTH_TOKEN, SYSTEM_ACCESSTOKEN (Azure DevOps), ACTIONS_RUNTIME_TOKEN, ACTIONS_ID_TOKEN_REQUEST_TOKEN, GITHUB_REPOSITORY, plus host identifiers (hostname, uid/pwuid, cwd, uname). The data is POSTed as JSON over a raw socket (manual POST /native HTTP/1.0 request line) to oob.s4yhii.com. The binary then calls fork() + setsid()` from libc and daemonises so the exfiltration process outlives the Node parent.
Operator continuity: the @galicia-toolkit* scope was first seen in yesterdays Cluster G (plain @galicia-toolkit/ 4-package set, CWE-506 boilerplate, no runtime detail). Todays expansion into `@galicia-toolkit-nestjs/ + the s4yhii payload confirms the operator (or a close copy-cat) iterated and shipped a real credential stealer. The @brick-v2` scope is new today.
Classification: dependency-confusion (999.x sentinel versions on scoped names that look like internal corporate NestJS/design-system monorepos). Severity high because the payload is a confirmed cloud+CI credential-stealing native binary with daemonized persistence, not just a beacon.
Cluster B - @tunstock/remact-dom@19.2.0 react-dom typosquat
@tunstock/remact-dom@19.2.0 (GHSA-gjvr-3qjw-56fx, OSV MAL-2026-17745) is a one-character typosquat of react-dom, pinned to the real react-dom@19.2.0 latest for maximum consumer-side confusion. The tarballs package.json falsely identifies itself as react-dom@19.2.0, uses lookalike author/repository metadata (github.com/m00r0ncr33w/act.git + morroncr0w.io), and runs scripts/setup.js as postinstall. The script opens an https.request to tele.metry.orgin.net/api/v1/events carrying the hostname, OS platform+arch, Node version, public IP, cwd, and consuming projects name+version. No second-stage payload is in the tarball; the GHSA assesses this as reconnaissance to support a follow-on supply-chain compromise.
Classify typosquat, severity medium.
Cluster C - Baileys/libsignal lure continuation (13 packages)
@fer2809fl/baileys1.4.5, 1.4.6, 1.4.7, 1.4.9, 7.0.0-rc13, 7.0.0, 7.0.1, 7.0.2, 7.0.4, 7.0.5, 7.0.6, 7.0.7 (GHSA-wv7g-r3r9-ww8v)cloud-baileys1.0.0-1.0.5, 1.1.0-1.1.3, 1.1.33-1.1.42 (GHSA-745p-g872-6x8c)arsya-baileys9.2.0-9.2.4 (GHSA-pv3g-8jvf-qc7x)asepxyz-baileys,asepxyz-signal,razamodsxasepxyz,asepxyz,asepxyz12,asepxyzz,asepxyznew,asepxyz-eslint-config,asepxyzxrazamodsnew-baileys,@aseppxyzz12/baileys- all versions, 10 GHSAs (xv7g, 38rx, f3vq, qvwh, 3rxj, hmqh, m23r, rhjp, v95p, 4pw9)
All 13 packages continue yesterdays @bellaxchuu/* Baileys/libsignal brand-impersonation campaign against the @WhiskeySockets/Baileys` WhatsApp-automation library consumer base. The GHSA bodies are CWE-506 "fully compromised" boilerplate with no runtime IOC published.
Classify malicious-package, severity medium.
Cluster D - crates.io sharpnes Telegram + Chrome infostealer
sharpnes@0.1.0/0.1.1 (GHSA-qq2r-xp7w-5r55, OSV MAL-2026-17713, publisher crows7781-glitch).
The crate exports an async function shortname() which, on invocation, runs two parallel exfil chains:
src/teleg.rs(Windows only): collects the Telegram Desktop session directorytdata, zips it astdata_backup.zip, and uploads via the Telegram Bot APIsendDocumentendpoint using a hardcoded bot token.src/data.rs(Windows + Linux + macOS): reads the Chrome Default profileLocal Extension Settingsdirectory - where browser-wallet extensions (MetaMask, Phantom, Keplr, Rabby, etc.) keep their vaults, and where other extensions keep OAuth tokens and API keys - XOR-obfuscates path strings with key0xAA, zips in memory, and uploads viateloxideusing a second hardcoded bot token.
In 0.1.0 the Chrome stealer code is present but unused; in 0.1.1 it is wired into shortname(). Upstream metadata on crates.io points to the GitHub repository crows7781-glitch/shortneer.
Classify malicious-package, severity high (confirmed cross-platform Telegram Desktop session theft + crypto-wallet-related Chrome extension data theft).
Cluster E - kmf-* + internal-frontend dep-confusion with oast.pro OAST exfil (5 packages)
kmf-bootstrap@100.100.102/100.100.103(GHSA-97h4-9p9c-qhp2, MAL-2026-17746) - OpenSSF Package Analysis flaggedkmf-i18n@100.100.102(GHSA-c93g-xqm8-mjcg, MAL-2026-17747)kmf-vendor-pack@99.0.0(GHSA-575h-jpqc-p8h4, MAL-2026-17744) - disclosed IOC:postinstallrunsnode -eto GETdb4fe7a2e2lvaraia8k0n4amgw4ir83az.oast.prowith hostname + username as query stringtest-account-portal-fe@100.100.102(GHSA-rh76-qjhp-v9m8)@myorder-frontend-commons/analytics@3.0.0/10.0.0/99.0.0(GHSA-rjqp-7c89-4x98, MAL-2026-17749)
The 100.100.102 sentinel version used by kmf-* + test-account-portal-fe is a new fingerprint, not the usual 99.x/999.x seen elsewhere today. All five quarantined.
Classify dependency-confusion, severity medium.
Cluster F - @tvg-mar/* dep-confusion probes (5 packages)
@tvg-mar/storyblok-bridge(GHSA-3wxx-x983-53mg)@tvg-mar/tvg-promos-atomic-ui(GHSA-gj3c-r86r-hr43)@tvg-mar/utils(GHSA-p6w4-mmhj-wc4v)@tvg-mar/promos-context(GHSA-f42w-v662-25cr)@tvg-mar/promos-gtm(GHSA-8g69-976g-h44g)
All five all-versions, CWE-506 boilerplate takedowns, no IOC body published. Scoped names imply an internal registry at a marketing/promotions org (tvg-mar + Storyblok CMS + GTM + "promos" naming). Classify dependency-confusion, severity medium.
Cluster G - Tailwind typosquats (2 packages)
tailwind-animatecss-uniformall versions (GHSA-hxvr-77vv-6r85)tailwind-animatecss-formall versions (GHSA-pp69-57rc-3v49)
Typo of tailwindcss-animatecss/tailwindcss-animated. Continuation of yesterdays tailwindcss-ui-extensions+tailwindcss-effects-kit Tailwind-typosquat operator. Classify typosquat, severity medium`.
Cluster H - npm standalones (3 packages)
pino-testkitall versions (GHSA-9q39-547h-rfpc) - impersonates thepinologger ecosystemhanncapall versions (GHSA-jw9f-6xx8-mj3f)pahinuyall versions (GHSA-hcwg-cqc9-469q)
CWE-506 boilerplate takedowns, no runtime IOC. Classify malicious-package, severity medium.
Cluster I - pypi ig-gox Instagram-abuse dropper
ig-gox@1.0.0 (GHSA-rhpj-mr3r-r4gg, OSV MAL-2026-17712, campaign 2026-10-ig-gox): the package hides obfuscated code aimed at analysis evasion, performs sandbox detection, and downloads a second-stage script that abuses Instagrams API for mass fake-account registration. Flagged by kam193/bad-packages`.
Classify malicious-package, severity medium (confirmed drop-and-exec, Instagram is the harm target, installer host still ran attacker-controlled Python).
Registry state
All 48 packages in this sweep are registry-quarantined at time of writing. Active operator-side infrastructure named today:
oob.s4yhii.com/native- Cluster A (s4yhii native-binary cloud+CI credential stealer, 16 packages, raw-socketPOST /native HTTP/1.0)tele.metry.orgin.net/api/v1/events- Cluster B (@tunstock/remact-domrecon beacon)api.telegram.orgwith two hardcoded bot tokens - Cluster D (sharpnesTelegram + Chrome exfil)db4fe7a2e2lvaraia8k0n4amgw4ir83az.oast.pro- Cluster E (kmf-vendor-packOAST canary)
Discovery credits
GitHub Advisory Database, OpenSSF malicious-packages, OpenSSF Package Analysis, Amazon Inspector, kam193/bad-packages, npm security, crates.io security. Per-package IOC details drawn from GHSA advisory bodies, OSV MAL records, and npm/crates.io registry metadata between 2026-10-09 11:00 UTC and 2026-10-10 11:00 UTC.
Affected packages (47)
- npm@aseppxyzz12/baileys*
- npm@brick-v2/brand999.0.1999.0.2999.0.3
- npm@brick-v2/core999.0.1999.0.2
- npm@brick-v2/form999.0.1999.0.3
- npm@brick-v2/icons999.0.1999.0.2999.0.3
- npm@brick-v2/table999.0.1999.0.2999.0.3
- npm@brick-v2/tour999.0.1999.0.2999.0.3
- npm@fer2809fl/baileys1.4.51.4.61.4.71.4.97.0.0-rc137.0.07.0.17.0.27.0.47.0.57.0.67.0.7
- npm@galicia-toolkit-cheques-nc/front999.0.1999.0.2999.0.3
- npm@galicia-toolkit-nestjs-20-lite/commons999.0.1999.0.2999.0.3
- npm@galicia-toolkit-nestjs-20-lite/paas1.0.201.0.211.0.221.0.24
- npm@galicia-toolkit-nestjs-20/archetype999.0.1999.0.2
- npm@galicia-toolkit-nestjs-20/commons999.0.1999.0.2999.0.3
- npm@galicia-toolkit-nestjs-20/paas3.0.33.0.53.0.63.0.7999.0.1
- npm@galicia-toolkit-nestjs/archetype999.0.1999.0.5999.0.6
- npm@galicia-toolkit-nestjs/commons999.0.1999.0.6999.0.7999.0.83.0.1
- npm@galicia-toolkit-nestjs/paas999.0.3999.0.4999.0.5999.0.6
- npm@galicia-toolkit-nestjs/swagger999.0.1999.0.2999.0.3
- npm@myorder-frontend-commons/analytics3.0.010.0.099.0.0
- npm@tunstock/remact-dom19.2.0
- npm@tvg-mar/promos-context*
- npm@tvg-mar/promos-gtm*
- npm@tvg-mar/storyblok-bridge*
- npm@tvg-mar/tvg-promos-atomic-ui*
- npm@tvg-mar/utils*
- npmarsya-baileys9.2.09.2.19.2.29.2.39.2.4
- npmasepxyz*
- npmasepxyz-baileys*
- npmasepxyz-eslint-config*
- npmasepxyz-signal*
- npmasepxyz12*
- npmasepxyznew*
- npmasepxyzxrazamodsnew-baileys*
- npmasepxyzz*
- npmcloud-baileys1.0.01.0.11.0.21.0.31.0.41.0.51.1.01.1.11.1.21.1.31.1.331.1.341.1.351.1.361.1.371.1.381.1.391.1.401.1.411.1.42
- npmhanncap*
- PyPIig-gox1.0.0
- npmkmf-bootstrap100.100.102100.100.103
- npmkmf-i18n100.100.102
- npmkmf-vendor-pack99.0.0
- npmpahinuy*
- npmpino-testkit*
- npmrazamodsxasepxyz*
- crates.iosharpnes0.1.00.1.1
- npmtailwind-animatecss-form*
- npmtailwind-animatecss-uniform*
- npmtest-account-portal-fe100.100.102
These are usually pulled in as transitive dependencies rather than installed directly. Check your whole tree at once - it runs in your browser and nothing is uploaded.
Impact
- *Cluster A -
s4yhiinative-binary credential-stealer dep-confusion operator: 16-package `@galicia-toolkit-nestjs/+@galicia-toolkit-nestjs-20/+@galicia-toolkit-nestjs-20-lite/+@galicia-toolkit-cheques-nc/+@brick-v2/cluster (dependency-confusion, confirmed credential exfil via prebuilt native ELF+PE addon, cross-platform fork+setsid daemonization, severity-elevating payload)**: a new operator published 16 npm packages on 2026-10-08 / 2026-10-09, all under scoped names that look like internal corporate monorepo registries (Chilean financial-cooperative Banco Galicia "galicia-toolkit-nestjs" dev-tooling monorepo + "brick-v2" design-system) with implausibly high sentinel versions (999.0.1-999.0.8 on most, plus3.0.1-3.0.7on NestJS commons/paas, and1.0.20-1.0.24on nestjs-20-lite/paas). Each package ships apreinstall: node index.js || truehook (and in some variants a module-load trigger viarequire()) that loadsprebuilds/<platform>-<arch>/metrics.node- a prebuilt native addon with no shipped C/C++ source orbinding.gyp. The ELF (Linux) and PE (Windows) binaries read AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN, GITHUB_TOKEN, NPM_TOKEN, NODE_AUTH_TOKEN, SYSTEM_ACCESSTOKEN (Azure DevOps), ACTIONS_RUNTIME_TOKEN, ACTIONS_ID_TOKEN_REQUEST_TOKEN, GITHUB_REPOSITORY, plus host identifiers (hostname, uid/pwuid, cwd, uname) and POST the JSON body via raw socket (request linePOST /native HTTP/1.0) tooob.s4yhii.com. The binary callsfork()+setsid()from libc and daemonises so the exfiltration process outlives the Node parent. Function symbol in the binary isdo_report, decoy env var_METRICS_PKG, JSON fieldsrc:native. OSV MAL-2026-17713..17729 range covers the cluster. All 16 packages quarantined. Classifieddependency-confusion, severityhigh` (confirmed cloud+CI credential exfil + daemonized persistence, not just a beacon) - Cluster B -
@tunstock/remact-dom@19.2.0react-dom typosquat with install-time recon beacon (typosquat, confirmedpostinstallHTTPS beacon to attacker-controlled lookalike domain):@tunstock/remact-dom@19.2.0(GHSA-gjvr-3qjw-56fx, OSV MAL-2026-17745) - a one-character typosquat of the realreact-domnpm package, pinned to the realreact-domlatest19.2.0for maximum consumer-side confusion. The tarballspackage.jsonfalsely identifies itself asreact-dom@19.2.0, uses lookalike author/repository metadata (github.com/m00r0ncr33w/act.gitandmorroncr0w.io), and runs apostinstallscriptscripts/setup.jsthat opens anhttps.requesttotele.metry.orgin.net/api/v1/eventscarrying the hostname, OS platform+arch, Node version, public IP, cwd, and the consuming projects name+version. The GHSA assesses this as reconnaissance intended to support a follow-on supply-chain compromise rather than an endpoint infostealer. Classifiedtyposquat, severitymedium(recon-only beacon disclosed, no second-stage drop in the shipped tarball) - *Cluster C - Baileys/libsignal lure continuation (
@fer2809fl/baileys,cloud-baileys,arsya-baileys, 10-package `asepxyzcluster,@aseppxyzz12/baileys) (malicious-package, continuation of yesterday's@bellaxchuu/+@xayz/libsignal-node+my-baileys+@kxafunc/xbails` 16-package cluster - CWE-506 boilerplate takedowns, no runtime payload analysis in GHSA bodies): today adds@fer2809fl/baileys(12 versions: 1.4.5, 1.4.6, 1.4.7, 1.4.9, 7.0.0-rc13, 7.0.0, 7.0.1, 7.0.2, 7.0.4, 7.0.5, 7.0.6, 7.0.7 - GHSA-wv7g-r3r9-ww8v),cloud-baileys(14 versions across 1.0.x and 1.1.x - GHSA-745p-g872-6x8c),arsya-baileys(9.2.0-9.2.4 - GHSA-pv3g-8jvf-qc7x), and a 10-package `asepxyz/razamods-themed cluster:asepxyz-baileys(GHSA-xv7g-p6pq-vg9q),asepxyz-signal(GHSA-38rx-c4rh-xc4p),razamodsxasepxyz(GHSA-f3vq-wx4x-jv6w),asepxyz(GHSA-qvwh-x99q-h49x),asepxyz12(GHSA-3rxj-r3x6-3992),asepxyzz(GHSA-hmqh-m5mj-f7mm),asepxyznew(GHSA-m23r-8cxr-4gw3),asepxyz-eslint-config(GHSA-rhjp-rpj7-8x4q),asepxyzxrazamodsnew-baileys(GHSA-v95p-rhxh-mm8g),@aseppxyzz12/baileys(GHSA-4pw9-3c22-g559). The-baileys/-signalsuffix on multiple names + therazamods/asepxyzscope reuse continues the Baileys ecosystem lure campaign started by yesterdays@bellaxchuu/*cluster against the@WhiskeySockets/BaileysWhatsApp-automation library consumer base. All GHSAs are CWE-506 boilerplate ("fully compromised" wording) with no IOC detail. All 13 packages quarantined. Classifiedmalicious-package, severitymedium(operator continuity confirmed via scope-reuse fingerprint, runtime payload not yet published) - Cluster D - crates.io
sharpnesTelegram-Desktop + Chrome-extension/wallet infostealer (malicious-package, first crates.io malware advisory in this week's window, confirmed cross-platform infostealer payload - severity-elevating in a cargo ecosystem that normally sees ~0 malicious-package takedowns per week):sharpnes@0.1.0/0.1.1(GHSA-qq2r-xp7w-5r55, OSV MAL-2026-17713, crates.io publishercrows7781-glitch). The crate exports an async functionshortname()which, on invocation, runs: (1) on Windows,src/teleg.rscollects the Telegram Desktop session directory (tdata), zips it astdata_backup.zip, and uploads via the Telegram Bot APIsendDocumentendpoint using a hardcoded bot token; and (2) on Windows+Linux+macOS,src/data.rsreads the Chrome Default profileLocal Extension Settingsdirectory (which stores extension data including crypto-wallet vaults for MetaMask, Phantom, Keplr, etc.), uses XOR-obfuscated strings (key0xAA) to hide path strings, zips in memory, and uploads viateloxideusing a second hardcoded bot token. In0.1.0the Chrome stealer is present but unused; in0.1.1it is wired into the exportedshortname(). Upstream metadata points tocrows7781-glitch/shortneeron GitHub. Classifiedmalicious-package, severityhigh(confirmed cross-platform Telegram Desktop session theft + crypto-wallet-related Chrome extension data theft, two separate hardcoded Telegram Bot tokens as collectors) - *Cluster E - 3-package `kmf-
+ 2-package internal-frontend dep-confusion probes with oast.pro OAST exfil (dependency-confusion, confirmedpostinstallbeacon to OpenSSF-flagged canary domain + OpenSSF Package Analysis flagged "communicates with malicious-activity domain")**:kmf-bootstrap@100.100.102/100.100.103(GHSA-97h4-9p9c-qhp2, OSV MAL-2026-17746),kmf-i18n@100.100.102(GHSA-c93g-xqm8-mjcg, OSV MAL-2026-17747),kmf-vendor-pack@99.0.0(GHSA-575h-jpqc-p8h4, OSV MAL-2026-17744 - **the one with disclosed IOC**:postinstallrunsnode -eto GETdb4fe7a2e2lvaraia8k0n4amgw4ir83az.oast.prowith hostname + username as query string, fires automatically onnpm install),test-account-portal-fe@100.100.102(GHSA-rh76-qjhp-v9m8), and@myorder-frontend-commons/analyticsat3.0.0/10.0.0/99.0.0(GHSA-rjqp-7c89-4x98, OSV MAL-2026-17749). The100.100.102-era sentinel version used bykmf-*+test-account-portal-feis a new fingerprint (not the usual99.xor999.xseen elsewhere today). All five quarantined. Classifieddependency-confusion, severitymedium` - *Cluster F - 5-package `@tvg-mar/
dep-confusion probe cluster (dependency-confusion, CWE-506 "fully compromised" boilerplate takedowns, no IOC body published)**:@tvg-mar/storyblok-bridgeall versions (GHSA-3wxx-x983-53mg),@tvg-mar/tvg-promos-atomic-uiall versions (GHSA-gj3c-r86r-hr43),@tvg-mar/utilsall versions (GHSA-p6w4-mmhj-wc4v),@tvg-mar/promos-contextall versions (GHSA-f42w-v662-25cr),@tvg-mar/promos-gtmall versions (GHSA-8g69-976g-h44g). The scoped name + the Storyblok CMS "promos" and GTM naming imply an internal registry at a marketing/promotions org publishing under@tvg-mar/*. All five quarantined 2026-10-09. Classifieddependency-confusion, severitymedium` - Cluster G - 2-package Tailwind-ecosystem typosquats (
tailwind-animatecss-uniform,tailwind-animatecss-form) (typosquat, CWE-506 "fully compromised" boilerplate, no payload IOC):tailwind-animatecss-uniformall versions (GHSA-hxvr-77vv-6r85) andtailwind-animatecss-formall versions (GHSA-pp69-57rc-3v49) - both typosquats of the realtailwindcss-animatecss+tailwindcss-animatedTailwind-ecosystem adaptor packages. Continuation of yesterdaystailwindcss-ui-extensions/tailwindcss-effects-kitCluster H entries - same operator profile targeting Tailwind consumers. Classifiedtyposquat, severitymedium` - Cluster H - 3 npm standalone CWE-506 boilerplate takedowns (
pino-testkit,hanncap,pahinuy) (malicious-package, no published IOC):pino-testkitall versions (GHSA-9q39-547h-rfpc) - dev-tooling-themed first-publish lure impersonating thepinologger ecosystem;hanncapall versions (GHSA-jw9f-6xx8-mj3f) andpahinuyall versions (GHSA-hcwg-cqc9-469q) - standalone CWE-506 takedowns with no obvious legitimate upstream and no runtime IOC in the GHSA bodies. All three quarantined. Classifiedmalicious-package, severitymedium - Cluster I - pypi
ig-gox@1.0.0Instagram-abuse second-stage dropper (malicious-package, confirmed obfuscated code + sandbox detection + remote-stage download for Instagram mass-fake-account-registration abuse):ig-gox@1.0.0(GHSA-rhpj-mr3r-r4gg, OSV MAL-2026-17712, campaign tag2026-10-ig-gox). The package hides obfuscated code aimed at analysis evasion, performs sandbox detection, and downloads + executes a second-stage script that abuses the Instagram API for mass fake-account registration. Not a credential stealer in the traditional sense - the payload is a RAT-grade dropper for a social-media-abuse operation, flagged bykam193/bad-packages. Classifiedmalicious-package, severitymedium(confirmed drop-and-exec, but target of abuse is Instagram, not the installer host) - Operator continuity check: today has three confirmed operator continuations - Baileys/libsignal lure operator family (yesterday
s@bellaxchuu/+@xayz+my-baileys+@kxafunc/xbails16-package cluster → todays@fer2809fl/baileys+cloud-baileys+arsya-baileys+10-package `asepxyzcluster, same Baileys/libsignal-node brand-impersonation naming), **Tailwind typosquat operator** (yesterdaystailwindcss-ui-extensions+tailwindcss-effects-kit→ todaystailwind-animatecss-uniform+tailwind-animatecss-form), and **galicia-toolkit dep-confusion operator** (yesterdays plain@galicia-toolkit/*4-package Cluster G scope → todays@galicia-toolkit-nestjs/+@galicia-toolkit-nestjs-20/+@galicia-toolkit-nestjs-20-lite/+@galicia-toolkit-cheques-nc/11-package expansion - BUT with a crucial payload change: yesterday was CWE-506 boilerplate with no runtime detail, today the s4yhii operator ships a native ELF+PE credential-stealing addon with daemonized persistence). Thexwise8887operator (yesterdays wave-2wie888r+testrrrd+xblaxw+@wxwxtest/testrrrdd→185.158.107.175:8787/_ah/dc), the Wix dep-confusion operator (yesterdayswix-reg-poc-bypass+css-overscroll-containwith K8s SA-token theft), thenfjbilloperator (yesterdayspxnpm@7.0.0npm proxy weaponization), and the@dransay/*+@bitwardne/*operators are quiet today. The TensorLake AI maintainer compromise (2026-10-08 carve-out) has not had a wave-2 republish ontensorlake@0.5.145+
What to do
- 1For Cluster A (s4yhii native-binary credential-stealer, 16 npm packages): grep lockfiles for the 16 package names (
@galicia-toolkit-nestjs/{archetype,paas,swagger,commons},@galicia-toolkit-nestjs-20/{paas,commons,archetype},@galicia-toolkit-nestjs-20-lite/{paas,commons},@galicia-toolkit-cheques-nc/front,@brick-v2/{table,icons,core,form,tour,brand}) at any version. On hit, assume the host executed a prebuilt ELF (Linux) or PE (Windows) credential-stealing addon that forked+setsid-daemonised and exfiltrated AWS, GitHub, npm, Azure DevOps, and GitHub Actions tokens tooob.s4yhii.com/native. Treat the installer host as fully compromised: rotate every token the binary could have read from the environment (AWS access/secret/session, GitHub PAT + fine-grained tokens + Actions tokens, npm auth tokens, Azure DevOps SYSTEM_ACCESSTOKEN); checkps/systemd/launch agents for a daemonizedmetrics/anonymous process still running after the shell exits; audit for the hostname/uid/cwd leak-time disclosure in network logs. Addoob.s4yhii.comapex and all subdomains + the HTTPPOST /nativerequest-line pattern to CI/build-host egress denylists. If your org publishes@galicia-toolkit*,@brick-v2, or similar internal scopes, scope-lock the internal registry and hold the public slugs with placeholder packages - 2For Cluster B (
@tunstock/remact-dom@19.2.0react-dom typosquat): grep lockfiles for@tunstock/remact-domat19.2.0or any version. On hit, thepostinstallscriptscripts/setup.jsalready fired an HTTPS GET totele.metry.orgin.net/api/v1/eventsleaking hostname, OS platform+arch, Node version, public IP, cwd, and the consuming projects name+version - treat the installer host as positively enumerated by the operator. Rotate build-environment credentials, addtele.metry.orgin.netand the lookalikemorroncr0w.ioto the CI/build-host egress denylist, and audit for any legitimate consumer who intended to installreact-dombut typo-ed into@tunstock/remact-dom(the packages own metadata lies and claims to bereact-dom@19.2.0, which can hide the typosquat on cursorynpm ls). Teach the correct spelling: the real package is unscopedreact-dom, not@tunstock/remact-dom - 3For Cluster C (Baileys/libsignal lure continuation): grep lockfiles for
@fer2809fl/baileys,cloud-baileys,arsya-baileys,asepxyz-baileys,asepxyz-signal,razamodsxasepxyz,asepxyz,asepxyz12,asepxyzz,asepxyznew,asepxyz-eslint-config,asepxyzxrazamodsnew-baileys,@aseppxyzz12/baileys. On hit, treat as a Baileys/WhatsApp-automation lure and apply the same remediation as yesterdays@bellaxchuu/cluster: uninstall, deletenode_modules, delete the lockfile, rebuild from a scope-locked internal registry. The GHSA bodies are CWE-506 boilerplate so no specific IOC has been published for this cluster yet, but the operator profile continues yesterdays@bellaxchuu/@kxafuncfingerprint - add the@fer2809fl,arsya, `asepxyz, andrazamods*` namespaces to the internal denylist - 4For Cluster D (crates.io
sharpnesTelegram+Chrome infostealer): grepCargo.lockandCargo.tomlforsharpnesat0.1.0or0.1.1. On hit: assume Telegram Desktop session theft on Windows (tdata_backup.zipupload via Telegram Bot APIsendDocument) and Chrome extension-data theft on all platforms (readingChrome/Default/Local Extension Settings- this is where MetaMask, Phantom, Keplr, Rabby, and other browser wallet extensions keep their vaults, so crypto-wallet keystore theft is in scope). Treat affected hosts as fully compromised: sign out of Telegram Desktop on every device under the account to invalidate the stolen session, migrate every browser-wallet seed phrase to a new wallet on a clean host before the attacker can drain, rotate any browser-extension-stored API keys, and block outbound traffic toapi.telegram.orgfrom untrusted CI/build hosts. The crates.io publishercrows7781-glitchand the GitHub upstreamcrows7781-glitch/shortneershould be added to internal denylists - 5*For Cluster E (`kmf-
,test-account-portal-fe,@myorder-frontend-commons/analyticsdep-confusion)**: grep lockfiles forkmf-bootstrap,kmf-i18n,kmf-vendor-pack,test-account-portal-fe, and@myorder-frontend-commons/analyticsat any version. Onkmf-vendor-pack@99.0.0hit specifically, thepostinstallalready fired an HTTPS GET todb4fe7a2e2lvaraia8k0n4amgw4ir83az.oast.prowith hostname + username in the query string - rotate those credentials. Add.oast.proapex to the CI/build-host egress denylist (prior denylists cover.oast.fun+.oast.site; today adds the third of the OAST canary apex trio). For the OpenSSF-flaggedkmf-siblings and thetest-account-portal-fe+@myorder-frontend-commons/analytics` entries, no specific IOC was published - but the OpenSSF Package Analysis "communicates with malicious-activity domain" verdict means a network beacon fired at install time, so treat the installer host as recon-enumerated at minimum - 6*For Cluster F (`@tvg-mar/
dep-confusion)**: grep lockfiles for@tvg-mar/storyblok-bridge,@tvg-mar/tvg-promos-atomic-ui,@tvg-mar/utils,@tvg-mar/promos-context,@tvg-mar/promos-gtm. On hit, uninstall. No specific IOC published (CWE-506 boilerplate). If your org publishes a marketing/promotions dev-tooling monorepo under@tvg-mar/*`, scope-lock the internal registry and hold the public slugs with placeholders - 7For Cluster G (2 Tailwind typosquats): grep lockfiles for
tailwind-animatecss-uniformandtailwind-animatecss-form. On hit, uninstall. Teach the correct spelling: the real packages aretailwindcss-animatecssandtailwindcss-animated(unscoped, withtailwindcss-prefix nottailwind-prefix). No specific IOC in the GHSA body - 8For Cluster H (standalones:
pino-testkit,hanncap,pahinuy): grep lockfiles for all three. On hit, uninstall. Forpino-testkit, teach that the real pino logger ecosystem does not publish apino-testkitpackage (closest legitimate names arepino-std-serializers,pino-pretty,pino-abstract-transport). No specific IOC published - 9For Cluster I (pypi
ig-gox@1.0.0): greprequirements.txt,pyproject.toml,Pipfile.lock,poetry.lock,conda env,setup.pyforig-goxat1.0.0. On hit: assume the obfuscated loader fired on import, performed sandbox detection, and attempted to download a second-stage script for Instagram-API abuse. The target of harm is Instagrams service rather than the installer host, but the installer still ran arbitrary attacker-controlled Python code and should be treated as compromised. No specific second-stage IOC published in the GHSA body - monitor outbound traffic from the installer host to Instagrams API endpoints and to any unexpected code-hosting providers (gist, pastebin, raw-GitHub) - 10NEW outbound denylist entries for CI/build-host egress proxies today:
oob.s4yhii.comapex and all subdomains (Cluster A s4yhii native-binary operator) + the HTTPPOST /native HTTP/1.0request-line pattern,tele.metry.orgin.net+morroncr0w.io(Cluster B@tunstock/remact-domrecon beacon),api.telegram.orgfor untrusted CI/build hosts (Cluster DsharpnesTelegram Bot API exfil),*.oast.proapex (Cluster Ekmf-vendor-packOAST). Keep prior egress blocks in place:185.158.107.175:8787(xwise8887),*.oast.fun+*.oast.siteapex (reaperhackbot256f + @dransay),*.oastify.com,appsecc.com,webhook.site/43022177-de67-4d5c-a6df-33083b2b026f+dxpoc.gt.tcapex (Wix dep-confusion wave 2),nfjbill.renapex (pxnpm/yakuza0),storage.googleapis.com/depenconf/+ltidi.storage.googleapis.com,10.0.19.0/24+10.0.49.0/24(internallib_v<N> reverse-shells),api.nm-streetwear.space,discord.com/api/webhooks+ Discord webhook URL pattern,ipify.org+ifconfig.me,gitflic.ru,api.wagmiwallet.org,backend-cybersecuritydashboard.onrender.com, Monero mining pools, Ethereum mainnet + Sepolia + Arbitrum Sepolia RPC endpoints,chinazhangsan.ccwu.cc,api.npoint.io,fabric-npm.gm-service.xyz,jsonkeeper.com,npm-canary.aveliscare.com, Polygon RPC,meta.brs.cx,s3://pkusinski-external/, AWS account631484165566, Slack bot-token exfil patterns,s85r5k14qk.execute-api.us-east-1.amazonaws.com/prod/hook,tuamaeaquelaursa.compublisher email domain, and the45.138.0.0/16RubyGems wgkit CIDRs
References
- GitHubGitHub Advisory Database - recent malware advisoriesgithub.com
- GitHubGHSA-76rm-2c8x-h676 - npm @galicia-toolkit-nestjs/archetype (Cluster A - s4yhii native-binary credential stealer, oob.s4yhii.com)github.com
- GitHubGHSA-xmvx-x823-fvm2 - npm @galicia-toolkit-nestjs/paas (Cluster A)github.com
- GitHubGHSA-7hxg-fr5p-9hp5 - npm @galicia-toolkit-nestjs/swagger (Cluster A)github.com
- GitHubGHSA-j7v5-rrxc-7jrh - npm @galicia-toolkit-nestjs/commons (Cluster A)github.com
- GitHubGHSA-mgg2-4cpg-5cfj - npm @galicia-toolkit-nestjs-20/paas (Cluster A)github.com
- GitHubGHSA-hwv3-5v66-4cvw - npm @galicia-toolkit-nestjs-20/commons (Cluster A)github.com
- GitHubGHSA-43v2-p79h-pjp9 - npm @galicia-toolkit-nestjs-20/archetype (Cluster A)github.com
- GitHubGHSA-p5pm-8q88-fj6v - npm @galicia-toolkit-nestjs-20-lite/paas (Cluster A)github.com
- GitHubGHSA-pw25-gp8h-4cr2 - npm @galicia-toolkit-nestjs-20-lite/commons (Cluster A - metrics.node ELF payload full IOC body)github.com
- GitHubGHSA-xj56-89c6-596g - npm @galicia-toolkit-cheques-nc/front (Cluster A - preinstall + metrics.node + oob.s4yhii.com/native)github.com
- GitHubGHSA-rmgm-9vm2-v688 - npm @brick-v2/table (Cluster A - metrics.node ELF + raw socket POST /native HTTP/1.0)github.com
- GitHubGHSA-gm38-f7q8-qc9p - npm @brick-v2/icons (Cluster A)github.com
- GitHubGHSA-49xp-7x68-8hf4 - npm @brick-v2/core (Cluster A - metrics.node fork+setsid daemon payload)github.com
- GitHubGHSA-cxh8-f5qg-3jmp - npm @brick-v2/form (Cluster A)github.com
- GitHubGHSA-4w7c-9xc7-gwv7 - npm @brick-v2/tour (Cluster A)github.com
- GitHubGHSA-62v9-prv8-q646 - npm @brick-v2/brand (Cluster A)github.com
- GitHubGHSA-gjvr-3qjw-56fx - npm @tunstock/remact-dom (Cluster B - react-dom typosquat, tele.metry.orgin.net recon beacon)github.com
- GitHubGHSA-wv7g-r3r9-ww8v - npm @fer2809fl/baileys (Cluster C - Baileys lure continuation)github.com
- GitHubGHSA-745p-g872-6x8c - npm cloud-baileys (Cluster C)github.com
- GitHubGHSA-pv3g-8jvf-qc7x - npm arsya-baileys (Cluster C)github.com
- GitHubGHSA-xv7g-p6pq-vg9q - npm asepxyz-baileys (Cluster C - asepxyz cluster)github.com
- GitHubGHSA-38rx-c4rh-xc4p - npm asepxyz-signal (Cluster C)github.com
- GitHubGHSA-qvwh-x99q-h49x - npm asepxyz (Cluster C)github.com
- GitHubGHSA-f3vq-wx4x-jv6w - npm razamodsxasepxyz (Cluster C)github.com
- GitHubGHSA-3rxj-r3x6-3992 - npm asepxyz12 (Cluster C)github.com
- GitHubGHSA-hmqh-m5mj-f7mm - npm asepxyzz (Cluster C)github.com
- GitHubGHSA-m23r-8cxr-4gw3 - npm asepxyznew (Cluster C)github.com
- GitHubGHSA-rhjp-rpj7-8x4q - npm asepxyz-eslint-config (Cluster C)github.com
- GitHubGHSA-v95p-rhxh-mm8g - npm asepxyzxrazamodsnew-baileys (Cluster C)github.com
- GitHubGHSA-4pw9-3c22-g559 - npm @aseppxyzz12/baileys (Cluster C)github.com
- GitHubGHSA-qq2r-xp7w-5r55 - crates.io sharpnes (Cluster D - Rust Telegram+Chrome extension infostealer, MAL-2026-17713)github.com
- GitHubGHSA-97h4-9p9c-qhp2 - npm kmf-bootstrap (Cluster E - OpenSSF-flagged, MAL-2026-17746)github.com
- GitHubGHSA-c93g-xqm8-mjcg - npm kmf-i18n (Cluster E)github.com
- GitHubGHSA-575h-jpqc-p8h4 - npm kmf-vendor-pack (Cluster E - disclosed IOC db4fe7a2e2lvaraia8k0n4amgw4ir83az.oast.pro)github.com
- GitHubGHSA-rh76-qjhp-v9m8 - npm test-account-portal-fe (Cluster E)github.com
- GitHubGHSA-rjqp-7c89-4x98 - npm @myorder-frontend-commons/analytics (Cluster E)github.com
- GitHubGHSA-3wxx-x983-53mg - npm @tvg-mar/storyblok-bridge (Cluster F - dep-confusion probe cluster)github.com
- GitHubGHSA-gj3c-r86r-hr43 - npm @tvg-mar/tvg-promos-atomic-ui (Cluster F)github.com
- GitHubGHSA-p6w4-mmhj-wc4v - npm @tvg-mar/utils (Cluster F)github.com
- GitHubGHSA-f42w-v662-25cr - npm @tvg-mar/promos-context (Cluster F)github.com
- GitHubGHSA-8g69-976g-h44g - npm @tvg-mar/promos-gtm (Cluster F)github.com
- GitHubGHSA-hxvr-77vv-6r85 - npm tailwind-animatecss-uniform (Cluster G - Tailwind typosquat continuation)github.com
- GitHubGHSA-pp69-57rc-3v49 - npm tailwind-animatecss-form (Cluster G)github.com
- GitHubGHSA-9q39-547h-rfpc - npm pino-testkit (Cluster H)github.com
- GitHubGHSA-jw9f-6xx8-mj3f - npm hanncap (Cluster H)github.com
- GitHubGHSA-hcwg-cqc9-469q - npm pahinuy (Cluster H)github.com
- GitHubGHSA-rhpj-mr3r-r4gg - pypi ig-gox (Cluster I - Instagram-abuse dropper, MAL-2026-17712, kam193/bad-packages)github.com
- DependencyWatch: multi-2026-10-09-ghsa-malware-sweep (prior-day context: xwise8887 wave 2, Wix dep-confusion wave 2, pxnpm, @bellaxchuu Baileys lure, @galicia-toolkit boilerplate)dependencywatch.io
- DependencyWatch: npm-2026-10-08-tensorlake-maintainer-compromise (recent carve-out maintainer compromise)dependencywatch.io