Cada semana, our malware detection systems scan thousands of new and updated packages across public registries like npm and PyPI. This week was no exception.
We confirmed over 200 malicious packages between June 12t and June 19th, 2026, predominantly across npm, with additional cases in PyPI. Several appeared in coordinated clusters, repeated malicious releases published under the same names or across closely related package families.
The standout case this week was sensivity, which flooded npm with over 70 versioned releases across the 2.5.x range, confirmed across multiple days. Other notable clusters included a wave of @solana-labs typosquats targeting the Solana ecosystem (web3.js, web3-js, etherjs, spl-toke, ancor, web3js — across two separate publishing campaigns on Jun 7 and Jun 8), the @nstrlabs familia (sdk, ixel, utils, shared-components, api-client, auth — dependency confusion attack against an internal package namespace), the @klapp-login-platform grupo (native-sdk, oidc, routes — impersonating an authentication platform), internallib_v557 y internallib_v984 (multiple versions of obfuscated internal library impostors), pocteszep (6 versions published on Jun 11), and a cluster of crypto and Web3 utilities including blockchain-helper-0, ethereum-kit-1, ethereum-kit-9, crypto-utils-7, wallet-sdk-9, defi-tools-39, swap-sdk-87, y farming-tools-12. La función de morningstar-design-system package appeared in three versions on Jun 10, impersonating a well-known financial design system.
From Jun 13 onward, the pace accelerated. The houzidawang806 cluster alone accounted for over 25 versions published in a single day, joined by siblings houzidawang807 y houzidawang808. La función de metrics-pipeline-d8k2 package was republished continuously across 21 versions between Jun 15 and Jun 18 — a sustained evasion campaign designed to stay ahead of blocklists. The friendly-greeter-demo package kept reappearing across versions throughout the week. New dependency confusion attempts surfaced under xy-shared, axl-ui, loadninja-shared, carousel-controller-mixin, token-prices-cron, hemi-supply-cron, portal-backend, vault-strategies, and several others — all carrying inflated version numbers in the 999.x range. A fresh cluster of generic utility names with random hex suffixes (color-utils-dee0, data-utils-d703, string-tools-be6c, type-check-816d, fmt-helpers-794b, metrics-probe-*) appeared on Jun 18–19, consistent with scripted bulk registration. The week closed with trimprompt, trimprompt-hub, claude-cup, y web3-crypto-address-utils confirmed on Jun 19. In PyPI, neuralbridge-sdk (five versions across 4.5.x–5.1.x), deepstrain, teambot-ai, hello-test-s1, y aiaddin-agent were confirmed across the week.
These were not isolated anomalies. What stood out this week was the concentration of dependency confusion attacks against internal package namespaces, the sustained multi-day publishing campaigns designed to outlast takedowns, the continued targeting of Web3 and DeFi tooling (a pattern that has accelerated significantly in 2026), and a growing use of generic, noise-like package names engineered to evade detection by blending into normal dependency trees.
Esta instantánea semanal forma parte de nuestro Resumen de Código Malicioso continuo, donde validamos nuevas amenazas y proporcionamos inteligencia práctica para ayudar a los equipos de DevSecOps a proteger sus pipelines before damage occurs. Let’s break down what we found this week and why it matters.
| Ecosistema | PREMIUM | Confirmado |
|---|---|---|
| npm | ecto-corsair-whisper-6f3b9:1.0.18 | 12 de junio de 2026 |
| npm | ecto-corsair-whisper-6f3b9:1.0.17 | 12 de junio de 2026 |
| npm | ecto-nightly-spirit:1.1.0 | 12 de junio de 2026 |
| npm | ecto-corsair-flag-x9m4:1.0.0 | 12 de junio de 2026 |
| npm | ecto-rust-read-f3a9c1:1.0.2 | 12 de junio de 2026 |
| npm | ecto-corsair-whisper-6f3b9:1.0.16 | 12 de junio de 2026 |
| npm | ecto-rust-read-f3a9c1:1.0.1 | 12 de junio de 2026 |
| npm | ecto-corsair-whisper-6f3b9:1.0.15 | 12 de junio de 2026 |
| npm | ecto-corsair-whisper-6f3b9:1.0.14 | 12 de junio de 2026 |
| npm | internallib_v984:1.0.3 | 15 de junio de 2026 |
| npm | internallib_v984:1.0.4 | 15 de junio de 2026 |
| npm | internallib_v984:1.0.2 | 15 de junio de 2026 |
| npm | internallib_v557:1.0.4 | 15 de junio de 2026 |
| npm | internallib_v557:1.0.7 | 15 de junio de 2026 |
| npm | internallib_v557:1.0.9 | 15 de junio de 2026 |
| npm | internallib_v557:1.0.10 | 15 de junio de 2026 |
| npm | internallib_v557:1.0.15 | 15 de junio de 2026 |
| npm | internallib_v557:1.0.16 | 15 de junio de 2026 |
| npm | internallib_v557:1.0.18 | 15 de junio de 2026 |
| npm | coral-wraith:1.0.0 | 12 de junio de 2026 |
| npm | internallib_v557:1.0.21 | 15 de junio de 2026 |
| npm | internallib_v557:1.0.22 | 15 de junio de 2026 |
| npm | npm-sandbox-research-d7e8:1.0.0 | 18 de junio de 2026 |
| npm | npm-sandbox-research-a1b2:1.0.0 | 18 de junio de 2026 |
| npm | npm-sandbox-research-c5d6:1.0.0 | 18 de junio de 2026 |
| npm | npm-sandbox-research-9c4e:1.0.0 | 18 de junio de 2026 |
| npm | npm-sandbox-research-8b2f:1.0.0 | 18 de junio de 2026 |
| npm | npm-sandbox-research-e9f0:1.0.0 | 18 de junio de 2026 |
| npm | npm-sandbox-research-f1g2:1.0.0 | 18 de junio de 2026 |
| npm | tsc-mesh:1.0.0 | 13 de junio de 2026 |
| npm | friendly-greeter-demo:1.0.6 | 13 de junio de 2026 |
| npm | friendly-greeter-demo:1.0.4 | 13 de junio de 2026 |
| npm | friendly-greeter-demo:1.0.3 | 13 de junio de 2026 |
| npm | friendly-greeter-demo:1.0.2 | 13 de junio de 2026 |
| npm | friendly-greeter-demo:1.0.9 | 13 de junio de 2026 |
| npm | tsc-ai:1.2.1 | 13 de junio de 2026 |
| npm | tsc-lotl:1.0.2 | 13 de junio de 2026 |
| npm | tsc-mesh:1.0.1 | 13 de junio de 2026 |
| npm | tsc-ai:1.2.0 | 13 de junio de 2026 |
| pipi | neuralbridge-sdk:4.5.4 | 13 de junio de 2026 |
| npm | npm-sandbox-research-g3h4:1.0.0 | 18 de junio de 2026 |
| npm | postinstall-logger-7x9z:1.0.0 | 18 de junio de 2026 |
| npm | houzidawang806:1.0.0 | 13 de junio de 2026 |
| pipi | neuralbridge-sdk:5.0.0 | 13 de junio de 2026 |
| pipi | neuralbridge-sdk:4.5.5 | 13 de junio de 2026 |
| npm | houzidawang806:1.0.1 | 13 de junio de 2026 |
| npm | houzidawang806:1.0.2 | 13 de junio de 2026 |
| npm | houzidawang806:1.0.3 | 13 de junio de 2026 |
| npm | houzidawang806:1.0.4 | 13 de junio de 2026 |
| npm | houzidawang806:1.0.5 | 13 de junio de 2026 |
| npm | houzidawang806:1.0.6 | 13 de junio de 2026 |
| npm | houzidawang806:1.0.7 | 13 de junio de 2026 |
| npm | houzidawang806:1.0.9 | 13 de junio de 2026 |
| npm | houzidawang806:1.1.0 | 13 de junio de 2026 |
| npm | houzidawang806:1.1.1 | 13 de junio de 2026 |
| npm | houzidawang806:1.1.2 | 13 de junio de 2026 |
| npm | houzidawang806:1.1.3 | 13 de junio de 2026 |
| npm | houzidawang806:1.1.4 | 13 de junio de 2026 |
| npm | houzidawang806:1.1.5 | 13 de junio de 2026 |
| pipi | neuralbridge-sdk:5.1.0 | 13 de junio de 2026 |
| npm | houzidawang807:1.1.6 | 13 de junio de 2026 |
| npm | houzidawang806:1.1.6 | 13 de junio de 2026 |
| npm | houzidawang808:1.0.0 | 13 de junio de 2026 |
| npm | houzidawang806:1.1.7 | 13 de junio de 2026 |
| npm | houzidawang806:1.1.8 | 13 de junio de 2026 |
| npm | houzidawang806:1.2.0 | 13 de junio de 2026 |
| pipi | neuralbridge-sdk:5.1.1 | 13 de junio de 2026 |
| npm | houzidawang806:1.2.1 | 13 de junio de 2026 |
| npm | houzidawang806:1.2.3 | 13 de junio de 2026 |
| npm | houzidawang806:1.2.4 | 13 de junio de 2026 |
| npm | houzidawang806:1.2.5 | 13 de junio de 2026 |
| npm | houzidawang806:1.2.6 | 13 de junio de 2026 |
| pipi | neuralbridge-sdk:5.1.2 | 13 de junio de 2026 |
| pipi | deepstrain:1.1.0 | 13 de junio de 2026 |
| npm | @jisan901/teamfocus:1.0.3 | 13 de junio de 2026 |
| npm | xy-shared:999.0.0 | 14 de junio de 2026 |
| npm | axl-ui:9.9.99 | 14 de junio de 2026 |
| npm | loadninja-shared:9.9.99 | 14 de junio de 2026 |
| npm | npx-whoami-demo:1.0.0 | 14 de junio de 2026 |
| npm | @jisan901/teamfocus:1.0.4 | 14 de junio de 2026 |
| npm | nano-perf:1.0.1 | 14 de junio de 2026 |
| npm | tn-advertisement:5.0.1 | 14 de junio de 2026 |
| npm | kijai:0.0.2 | 15 de junio de 2026 |
| npm | token-prices-cron:999.0.0 | 15 de junio de 2026 |
| npm | hemi-supply-cron:999.0.0 | 15 de junio de 2026 |
| npm | portal-backend:999.0.0 | 15 de junio de 2026 |
| npm | vault-strategies:999.0.0 | 15 de junio de 2026 |
| npm | hemi-earn-actions:999.0.0 | 15 de junio de 2026 |
| npm | vaults-monitor-cron:999.0.0 | 15 de junio de 2026 |
| npm | ve-hemi-rewards:999.0.0 | 15 de junio de 2026 |
| npm | nic-datagov:1.0.0 | 16 de junio de 2026 |
| npm | ogd-analytics:1.0.0 | 16 de junio de 2026 |
| npm | ogd-platform:1.0.0 | 16 de junio de 2026 |
| npm | dms-backend:1.0.0 | 16 de junio de 2026 |
| npm | friendly-greeter-demo:1.0.10 | 16 de junio de 2026 |
| npm | friendly-greeter-demo:1.0.11 | 16 de junio de 2026 |
| npm | cardano-addresses-docs:1.0.1 | 16 de junio de 2026 |
| npm | bodega-sdk:9.9.9 | 16 de junio de 2026 |
| npm | flow-lending-sdk:9.9.9 | 16 de junio de 2026 |
| npm | flow-lending:9.9.9 | 16 de junio de 2026 |
| npm | surf-lending:9.9.9 | 16 de junio de 2026 |
| npm | janus-ft:1.0.0 | 16 de junio de 2026 |
| npm | janus-flow:1.0.0 | 16 de junio de 2026 |
| npm | janus-erc20:1.0.0 | 16 de junio de 2026 |
| npm | flowcardano:9.9.9 | 16 de junio de 2026 |
| npm | flowdefi:9.9.9 | 16 de junio de 2026 |
| pipi | hello-test-s1:0.3.1 | 16 de junio de 2026 |
| npm | pkg-telemetry-r4f9:1.0.0 | 18 de junio de 2026 |
| npm | mailconfirmer:3.3.46 | 16 de junio de 2026 |
| npm | carousel-controller-mixin:999.0.0 | 16 de junio de 2026 |
| npm | runtime-metrics-w7k2:1.0.0 | 18 de junio de 2026 |
| npm | mailconfirmer:3.3.48 | 16 de junio de 2026 |
| npm | build-tracker-n5p1:1.0.0 | 16 de junio de 2026 |
| npm | npm-sandbox-ping-r9t2:1.0.0 | 18 de junio de 2026 |
| npm | event-metrics-q3x7:1.0.2 | 16 de junio de 2026 |
| npm | event-metrics-q3x7:1.0.1 | 16 de junio de 2026 |
| npm | event-metrics-q3x7:1.0.0 | 16 de junio de 2026 |
| npm | event-metrics-q3x7:1.0.3 | 16 de junio de 2026 |
| npm | event-metrics-q3x7:1.0.4 | 16 de junio de 2026 |
| npm | event-metrics-q3x7:1.0.5 | 16 de junio de 2026 |
| npm | event-metrics-q3x7:1.0.6 | 16 de junio de 2026 |
| npm | event-metrics-q3x7:1.0.7 | 16 de junio de 2026 |
| npm | event-metrics-q3x7:1.0.8 | 16 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.0 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.1 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.2 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.3 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.4 | 18 de junio de 2026 |
| pipi | teambot-ai:1.48.0 | 17 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.5 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.6 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.7 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.8 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.9 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.10 | 18 de junio de 2026 |
| npm | friendly-greeter-demo:1.0.13 | 17 de junio de 2026 |
| npm | friendly-greeter-demo:1.0.14 | 17 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.11 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.12 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.13 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.14 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.15 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.16 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.17 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.18 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.19 | 18 de junio de 2026 |
| npm | métrica-pipeline-d8k2:1.0.20 | 18 de junio de 2026 |
| npm | cryptodao-contracts:99.99.99 | 17 de junio de 2026 |
| npm | cryptodao-types:99.99.99 | 17 de junio de 2026 |
| npm | cryptodao-config:99.99.99 | 17 de junio de 2026 |
| npm | cryptodao-utils:99.99.99 | 17 de junio de 2026 |
| npm | cryptodao-backend:99.99.99 | 17 de junio de 2026 |
| npm | cryptodao-sdk:99.99.99 | 17 de junio de 2026 |
| npm | cryptodao-core:99.99.99 | 17 de junio de 2026 |
| npm | cryptodao-bot:99.99.99 | 17 de junio de 2026 |
| npm | cryptodao-signer:99.99.99 | 17 de junio de 2026 |
| npm | cryptodao-deploy:99.99.99 | 17 de junio de 2026 |
| npm | metrics-probe-64b2:1.0.0 | 18 de junio de 2026 |
| npm | metrics-probe-dc85:1.0.0 | 18 de junio de 2026 |
| npm | metrics-probe-77d4:1.0.0 | 18 de junio de 2026 |
| npm | @public-for-cdao/core:99.99.99 | 17 de junio de 2026 |
| npm | metrics-probe-88ad:1.0.0 | 18 de junio de 2026 |
| npm | wrspati:0.1.0 | 18 de junio de 2026 |
| npm | ebpf-tracker-action:1.0.1 | 18 de junio de 2026 |
| npm | @azure-lab-services/ml-ts:99.0.0 | 18 de junio de 2026 |
| npm | lab-services:99.0.0 | 18 de junio de 2026 |
| npm | scan-only:0.4.5 | 18 de junio de 2026 |
| npm | scan-only:0.4.6 | 18 de junio de 2026 |
| npm | scan-only:0.4.7 | 18 de junio de 2026 |
| npm | scan-only:0.4.8 | 18 de junio de 2026 |
| npm | @muaththir/api:2.0.0 | 18 de junio de 2026 |
| npm | backoffice-charges-module:2.999.1 | 18 de junio de 2026 |
| npm | backoffice-charges-module:2.999.0 | 18 de junio de 2026 |
| npm | scan-only:0.4.9 | 18 de junio de 2026 |
| npm | scan-only:0.5.0 | 18 de junio de 2026 |
| npm | scan-only:0.5.1 | 18 de junio de 2026 |
| npm | scan-only:1.0.0 | 18 de junio de 2026 |
| npm | nano-perf:2.0.0 | 18 de junio de 2026 |
| npm | nano-perf:2.0.1 | 18 de junio de 2026 |
| npm | nano-perf:2.1.0 | 18 de junio de 2026 |
| npm | nano-perf:2.2.0 | 18 de junio de 2026 |
| npm | metrics-probe-f256:1.0.0 | 18 de junio de 2026 |
| npm | color-utils-dee0:1.0.0 | 18 de junio de 2026 |
| npm | data-utils-d703:1.0.0 | 18 de junio de 2026 |
| npm | string-tools-be6c:1.0.0 | 18 de junio de 2026 |
| npm | type-check-816d:1.0.0 | 18 de junio de 2026 |
| npm | fmt-helpers-794b:1.0.0 | 18 de junio de 2026 |
| npm | datacamp-light:1.0.0 | 18 de junio de 2026 |
| npm | data-utils-bcf2:1.0.0 | 19 de junio de 2026 |
| npm | stream-read-35cf:1.0.0 | 19 de junio de 2026 |
| npm | delta-time-32bb:1.0.0 | 19 de junio de 2026 |
| npm | safe-json-38bd:1.0.0 | 19 de junio de 2026 |
| npm | hex-conv-ae7a:1.0.0 | 19 de junio de 2026 |
| npm | buffer-wrap-67d7:1.0.0 | 19 de junio de 2026 |
| npm | trimprompt:1.0.2 | 19 de junio de 2026 |
| npm | trimprompt:1.0.4 | 19 de junio de 2026 |
| npm | trimprompt-hub:1.0.1 | 19 de junio de 2026 |
| npm | claude-cup:0.8.6 | 19 de junio de 2026 |
| pipi | aiaddin-agent:0.1.0 | 19 de junio de 2026 |
| npm | web3-crypto-address-utils:0.1.0 | 19 de junio de 2026 |
Don’t Let Coordinated Campaigns Reach Your Pipelines
This week’s digest was not about a single threat; it was about scale. Over 200 confirmed packages, sustained version flooding across multiple days, and scripted bulk registration campaigns running faster than manual reviews can track. The attackers are not waiting for you to catch up.
Detección temprana de malware Xygeni monitors npm, PyPI, and other registries continuously, flagging threats at the moment of publication, not after they’ve landed in a build. When a campaign publishes 21 versions of the same malicious package across four days, a weekly scan catches nothing in time.
xygenis Open Source Security solution gives your DevSecOps teams the real-time visibility and prioritization they need to stay ahead of exactly this kind of coordinated pressure, so your pipelines stay clean without slowing your teams down.





