indexed-btree is the subject of a September 17 technical disclosure explaining how a removed npm package waited for normal application calls before activating, shifting detection from installation to runtime behavior.

Key takeaways

  • Checkmarx says the package triggered when software called BTree.prototype.set, not through an install script.
  • Snyk records the package as malicious and removed; Socket shows npm replaced version 0.0.1 with a security holding package.
  • The September 17 update adds technical mechanism detail to a malicious-package status that was public earlier in September.

What the indexed-btree disclosure changes

The indexed-btree incident is not newly dated malware. Its malicious status was already public in early September. What changed on September 17 was the level of technical disclosure: Checkmarx documented a runtime activation path that did not depend on the install hooks many defenders monitor or disable. That distinction matters because it turns an apparently ordinary library call into the execution boundary.

According to Checkmarx, the code waited until an application called BTree.prototype.set. It then gathered host information, tested whether the machine looked useful, and contacted external infrastructure. That sequence makes the package a useful case study in why supply-chain controls cannot end at installation. A clean install log does not prove that imported code will remain inert once the application starts using it.

Why normal install defenses missed the trigger

Security teams often give special attention to lifecycle scripts because malicious packages have repeatedly abused preinstall, install, and postinstall. Disabling those scripts reduces a real class of risk. It does not stop code that is loaded later and executed through an exported method. In this case, the trigger was attached to behavior a developer would reasonably expect from a B-tree library.

Checkmarx's analysis says the malware collected system details and could exfiltrate through Slack or Telegram webhooks. It also described a more elaborate second-stage path: a Sepolia smart contract supplied command-and-control data, while X25519 key exchange and AES encryption protected the payload channel. The researchers said the code attempted to remove traces after running. Those details are from the September 17 research and should be treated as the researchers' findings, not as evidence that every downloader was compromised.

What is independently confirmed

Snyk's vulnerability record labels every listed version malicious, maps the issue to CWE-506, and says the package was removed from npm. Its record says the issue was disclosed on September 4 and published on September 7. Socket's package page independently shows version 0.0.1 as a malware-detected security holding package published by npm. BleepingComputer separately reported the runtime-trigger technique after reviewing the Checkmarx findings.

The timelines solve an important freshness question. The removal and malicious classification were known before this seven-day recovery window. The publishable event here is therefore the later technical explanation of how the package evaded install-script-centered defenses. It is an analysis update, not a claim that the underlying compromise was first discovered on September 17.

Exposure is not the same as compromise

Checkmarx cited roughly two million weekly downloads for indexed-btree. Download volume describes potential distribution, not confirmed victim count. Automated builds, mirrors, caches, abandoned projects and repeated installs can all inflate the number of downloads relative to active systems. Neither the primary report nor the independent records establish that two million users executed the malicious path.

For incident responders, the useful question is narrower: did a relevant version enter a build, was it imported, and did an application call the affected method on a host with network access? Teams should search lockfiles, software bills of materials, package-manager caches and artifact repositories. They should then correlate that evidence with process creation, outbound webhook traffic and access to Sepolia endpoints during the relevant period.

A practical response sequence

First, remove the package and rebuild from a known-good dependency graph. Do not assume deleting node_modules on a developer laptop remediates deployed artifacts or cached containers. Rotate credentials only where telemetry or execution evidence justifies it, but prioritize secrets available to CI runners and developer environments because those machines often hold broad tokens.

Second, hunt for behavior rather than a single hash. The report describes multiple sibling package names, external webhook channels and a smart-contract-assisted command path. A signature tied to one archive can miss repackaged code. Runtime monitoring should flag unexpected child processes, network destinations and credential access from dependency code that normally performs in-memory data operations.

Third, keep install controls. They still eliminate a large attack surface. The lesson is additive: combine registry reputation, lockfile review, provenance, isolated builds and runtime controls. GitHub has separately announced stronger npm authentication and publishing safeguards, but publisher controls cannot by themselves identify a package whose code becomes harmful only after a normal method call.

The larger supply-chain lesson

The indexed-btree disclosure exposes a boundary problem. Package managers know what was fetched and installed; they do not know whether an exported function later behaves consistently with its purpose. Static review can spot suspicious strings, yet encrypted or staged behavior raises the cost. Sandboxed builds help, but the production process still needs least privilege and network policy.

That is why this case should change review questions. Teams should ask not only whether a dependency runs scripts during installation, but also what privileges it receives when imported, which methods can reach the network, and whether sensitive build or developer credentials are available to the application process. The September 17 findings make that runtime blind spot concrete without overstating the known victim count.

How the event changes the decisionCheckmarx says the package triggered when software called BTree.prototype.set, not through an install script.indexed-btreeCheckmarx says the package triggered when software called BTree.prototype.set, not through an install script.Verification boundarySnyk records the package as malicious and removed; Socket shows npm replaced version 0.0.1 with a security holding package.indexed-btreeSnyk records the package as malicious and removed; Socket shows npm replaced version 0.0.1 with a security holding package.Action layerThe September 17 update adds technical mechanism detail to a malicious-package status that was public earlier in September.indexed-btreeThe September 17 update adds technical mechanism detail to a malicious-package status that was public earlier in September.

Facts at a glance

Fact Value Source
Disclosure used for this update 17 September 2026 Checkmarx
Earlier malicious-package record Disclosed 4 September; published 7 September Snyk
Activation point BTree.prototype.set at runtime Checkmarx
Package reach cited About 2 million weekly downloads Checkmarx
Registry status Removed / security holding package Snyk and Socket
Command channel described Sepolia smart contract with encrypted second stage Checkmarx

Related Lapaas Voice coverage

FAQs

Was indexed-btree newly discovered on September 17?

No. Snyk records disclosure on September 4. September 17 is the date of Checkmarx’s detailed runtime-mechanism report.

Did two million users get compromised?

No confirmed victim count was published. The cited figure is weekly downloads, which is not equivalent to successful execution.

Why did disabling install scripts not stop it?

The reported trigger ran when application code called an exported B-tree method after installation.

What should teams check first?

Lockfiles, SBOMs, caches and deployed artifacts, followed by runtime and outbound-network telemetry.

Sources

Get the day’s top stories in your inbox

One concise email. No spam, unsubscribe anytime.