Search/stepsecurity
● Vendor

stepsecurity

Known CVEs
0
Highest CVSS
—
In KEV
0
Vendor
harden-runner
Connections
25 relationships
Compromised AsyncAPI npm Packages Deliver Multi-Stage Botnet Malware
Four compromised npm packages in the @asyncapi namespace have been observed distributing a multi-stage botnet loader, according to findings from OX Security, SafeDep, Socket, and StepSecurity. The affected packages are listed below - @asyncapi/[email protected] @asyncapi/[email protected] @asyncapi/[email protected] @asyncapi/specs(v6.11.2, v6.11.2-alpha.1) "The compromised packages deploy an obfuscated first-stage payload that downloads an encrypted second-stage payload, identified as Miasma, from IPFS," Socket said. The poisoned packages ship a hidden JavaScript implant, with each of them containing an injected source file that decodes to the same second-stage downloader. Unlike previous iterations that leveraged install hooks to trigger the execution of a JavaScript payload, the malicious code in this case is run when the infected module is loaded by Node.js, after which it launches a detached background node that downloads and executes the malware from IPFS. The next-stage payload is an encrypted JavaScript loader named "sync.js," which is written to operating system-specific paths and executed. The downloader URL is "ipfs[.]io/ipfs/QmQobZSp1wRPrpSEQ56qnyq7ecZh5Bg5k1fnjt4SUwwHb9." The loader contains two components - The encrypted final JavaScript payload, which decodes to the Miasma tasking framework A large encrypted blob used by the runtime's spawn-chain framework The framework bundles 744 modules and is built as a command framework that supports six independent command-and-control (C2) communication channels using HTTP, Nostr relay, IPFS, BitTorrent DHT, libp2p GossipSub P2P mesh, and an Ethereum smart contract. Besides facilitating credential theft, AI tool poisoning, LAN lateral movement, and worm-like propagation on npm, PyPI, and Cargo registries, Miasma features a persistence mechanism of its own, setting up a systemd, crontab, macOS launchd, and Windows Registry autostart keys. "Although the malware has some similarities to the Shai-Hulud and Miasma campaigns, and it contains the Miasma string multiple times inside its code, this malware isn't the same as them, nor is it attributed to the Miasma/Shai-Hulud/TeamPCP campaigns that we've seen in the past," OX Security's Moshe Siman Tov Bustan said. Furthermore, it incorporates a dead man's switch that monitors a stolen token and triggers a directory wipe if the token is revoked, while avoiding systems identified as sandboxes or virtual environments, as well as those that have their current language set to Russian or have security tools from CrowdStrike, SentinelOne, Microsoft Defender, CarbonBlack, Cylance, Osquery, Tanium, and Qualys installed. "Its clearest operational path is REST-based C2: the implant beacons to an HTTP endpoint, accepts encrypted tasking, and posts command results back to the same infrastructure. Around that core, the payload also carries support for upload transport, command ciphering, node signing, payload updates, file management, shell execution, and persistence writing." According to StepSecurity, the attacker is said to have gained push access to the repositories and used the project's own legitimate GitHub Actions release pipeline to publish packages with valid OIDC provenance attestations. The supply chain attack did not involve the theft of an npm token. "Both attacks are CI/CD pipeline compromises, not stolen npm tokens or malicious maintainers," security researcher Rohan Prabhu said. "The attacker pushed commits under a placeholder git identity and let each repository's real release workflow do the publishing via npm's GitHub OIDC trusted-publisher integration." "The resulting packages carry legitimate SLSA provenance attestations, proving only that the project's authorized workflow produced them, not that the triggering commits were legitimate. Provenance does not protect against a compromised push credential." All five malicious versions have since been unpublished from the npm registry. It's advised to treat any endpoint that imported or executed one of the affected package versions as potentially compromised. However, it bears noting that exposure depends on whether the infected module was loaded as part of a build or a developer workflow. "There is no preinstall/postinstall/install script anywhere in any of the three package.json files," StepSecurity said. "This dropper fires when the poisoned module is require()d during normal use of the generator: the moment a build or CI job actually calls into the library, not at npm install time." Update SafeDep has characterized the malware as "either a private, parallel build by the same operators or a separate group that adopted the Miasma brand after the source was published." Microsoft, which is tracking the malicious artifacts under the names MiasmStealer and Supychain, said the campaign executes at module-load time, unlike the more common postinstall-hook supply chain attack pattern. "When any consuming build or application imports a poisoned package, the injected block runs immediately," the tech giant's security research team said. "Because the trigger is an import rather than an install script, the common npm install –ignore-scripts mitigation does not neutralize it." Microsoft also noted that the compromise originated from a pwn request against the "asyncapi/generator" repository stemming from a misconfigured GitHub Actions workflow ("pull_request_target"). "The asyncapi/generator repository contained a workflow file that used pull_request_target to trigger on pull requests, but then checked out the pull request's code rather than the base branch," Wiz researchers Rami McCarthy and Merav Bar said. "This is dangerous because pull_request_target runs in the context of the base repository with full access to secrets. When the workflow checks out attacker-controlled code from the pull request and executes it, those secrets become accessible." The Google-owned security firm said the potential for pwn request had been identified as far back as April 2026, when a researcher named Florence Njeri submitted a proof-of-concept (PoC) payload that exploited the vulnerability. A pull request containing the fix remained open and unmerged when the attack took place on July 14, 2026. While the payload shares some technical characteristics with the Miasma malware framework previously documented in Shai-Hulud supply chain attacks, the activity has not been conclusively tied to a specific threat actor. "The Miasma branding may reflect code reuse, imitation, or deliberate mislabeling," Aikido Security researcher Raphael Silva said. "No definitive attribution is made here." Further analysis has determined that several of the implemented features related to credential harvesting, AI-tool poisoning, dead man's switch, and propagation via npm, PyPI, and Cargo vectors have been toggled off, although Microsoft warned that they "could be enabled through persistence." (The story was updated after publication to include additional insights.)
thehackernews.comJul 15, 2026extracted
North Korean Hackers Blamed for Mastra NPM Supply Chain Attack
The North Korean state-sponsored threat actor Sapphire Sleet is behind the Mastra supply chain attack that hit over 140 NPM packages last week, Microsoft reports. Mastra is an open source TypeScript framework for building AI agents, workflows, and RAG pipelines. It offers integrations for major LLM providers, MCP servers, and cloud deployments. The supply chain attack occurred on June 17. During a 45-minute window, the hackers published 141 packages that contained the malicious dependency easy-day-js, a typosquat of the legitimate dayjs date library. The affected Mastra packages have approximately 8 million weekly downloads. All users who installed a @mastra package during the attack window on June 17 should consider their systems affected. As part of the attack, the hackers compromised the ‘ehindero’ NPM maintainer account, which has publishing rights across the Mastra ecosystem. One day before the account takeover, the attackers published a clean version of easy-day-js to a separate account, ‘sergey2016’. The threat actor used the compromised maintainer account to add easy-day-js as a dependency to 141 NPM packages across the Mastra ecosystem, in such a manner that the latest version of the library would always be installed, and then published the modified packages to NPM. Simultaneously, they published a new, malicious version of the easy-day-js library to their account. An obfuscated postinstall dropper in the dependency would fetch a second-stage payload from the attackers’ servers, write it to the temp directory, execute it as a detached, hidden background process, and then delete itself to hide its tracks. “Because the payload executes during installation, any developer workstation or continuous integration and continuous delivery (CI/CD) pipeline that ran npm install or npm update after the compromised versions were published was potentially exposed, regardless of whether the package was imported in application code,” Microsoft says. Targeting Windows, macOS, and Linux, the malware was designed to masquerade as node-related tools while collecting system information and targeting more than 160 cryptocurrency-related browser extensions. Microsoft has attributed the attack to the financially motivated North Korean group Sapphire Sleet, also known as BlueNoroff, CageyChameleon, Copernicium, and Stardust Chollima, which was also blamed for the Axios supply chain attack. In April, hackers published modified versions of the Axios NPM library that were pointing to a phantom dependency designed to download and execute a cross-platform RAT. Google’s Threat Intelligence Group attributed the attack to UNC1069. Mastra users are advised to remove the affected package versions, check their systems for malware, rotate credentials, tokens, and other secrets, and harden access to their crypto-wallets. Cybersecurity firms Aikido, Ox, Socket, Sonatype, and StepSecurity have published technical details and indicators of compromise (IoCs) associated with the Mastra supply chain attack. Related: More Cybersecurity Firms Disclose Impact From Klue Hack Related: CryptoBandits Malware Doubles as a Backdoor, Abuses Tor Related: NPM 12 Will Change Script Execution Behavior to Prevent Supply Chain Attacks Related: Supply Chain Attack Hits 32 Red Hat NPM Packages
securityweek.comJun 22, 2026extracted
144 Mastra npm Packages Compromised via Hijacked Contributor Account
As many as 145 npm packages associated with the Mastra namespace ("@mastra/*"), a popular open-source JavaScript and TypeScript framework for building artificial intelligence (AI) applications, have been compromised as part of a software supply chain attack codenamed easy-day-js, per findings from Endor Labs, JFrog, OX Security, SafeDep, Socket, StepSecurity, and Synk. "A single npm account (ehindero) mass-published more than 140 malicious packages across the Mastra scope within a short window on 2026-06-17," Socket said. The infected packages themselves do not include malicious code. Instead, it's introduced by means of a third-party library named "easy-day-js" that has been added to each package's dependency list in what has been described as an automated publishing campaign spanning 88 minutes. In its analysis, SafeDep described "easy-day-js" as a clone of the "dayjs" date library that downloads and runs a cryptocurrency-stealing remote access trojan. The JavaScript library was published by an npm user called "sergey2016" on June 16, 2026, at 7:05 a.m. UTC as a clean, fully functional copy, with the malicious changes introduced on June 17, 2026, at 1:01 a.m. UTC. "Because Mastra sits at the intersection of AI development and cloud infrastructure, its packages are routinely installed in environments that hold some of the most sensitive credentials in modern software development," StepSecurity said. "This makes the Mastra ecosystem an exceptionally high-value target for supply chain attackers." The "easy-day-js" package launches an obfuscated payload that's fired during a postinstall hook, which acts as a dropper or loader for a second-stage payload retrieved from attacker-controlled infrastructure ("23.254.164[.]92") after disabling TLS certificate validation. The payload is then executed as a detached background process, following which the loader takes steps to erase itself to minimize the forensic trail. The final stage is a cross-platform information stealer that can harvest browser history, store data from over 160 cryptocurrency wallet browser extensions, install persistence across Windows, macOS, and Linux, and exfiltrate the captured information to a command-and-control (C2) server ("23.254.164[.]123"). The malware is also capable of polling the C2 server to receive commands, including downloading a module from an attacker-supplied URL and executing it on Windows, Linux, and macOS systems. "The malware combined familiar supply chain techniques with practical stealth: a clean decoy version, an obfuscated postinstall loader, runtime payload download, detached execution, self-deletion, Node-themed persistence, and a remote module system," JFrog said. "Even if the first-stage package is removed after installation, the second-stage process may continue running and may have already installed persistence. This campaign shows how a small dependency change can become an install-time compromise across a large package ecosystem." The attackers behind the campaign are said to have hijacked the "ehindero" account, a legitimate former Mastra contributor whose scope access was never revoked. Npm has since pulled the malicious versions from the highest-profile packages and reverted their latest tag. "Mastra ships its real releases from CI through npm's trusted publisher flow, and each one carries SLSA provenance attestations," SafeDep said. "The attacker pushed the malicious versions from a personal token and dropped the provenance." "The same fingerprint repeats across the whole scope. Mastra generated provenance on CI publishes but did not require it, so a standard npm token could still publish without attestations. A signature-verifying install (npm audit signatures, or a policy that requires attestations) would have rejected every package in this wave." Any workstation, CI runner, or build environment that installed the affected versions should be treated as potentially compromised. It's advised to roll back to a safe version, rotate any credentials, and audit the hosts for any artifacts linked to the campaign. "The affected packages include @mastra/core, which receives more than 918K weekly npm downloads, giving this campaign a large potential blast radius," Socket said. "Because the payload executes during installation, systems may be exposed before developers import or use the package." Update In an incident report published in the wake of the supply chain attack, Mastra confirmed a malicious postinstall script designed to exfiltrate credentials and then delete itself was added to "specific versions of our packages." "The incident is over – we have unpublished the relevant package versions," the maintainers said. "The root cause is that one of our maintainers was compromised. We have always required MFA [multi-factor authentication] on npm for maintainers, but we also allowed (mistakenly) token bypass. Around the same time, we removed token bypass across all packages." Mastra also disclosed that the compromised maintainer is a "current, active Mastra employee" whose machine was compromised via a social engineering attack. "A compromised LinkedIn account reached out to him as well as maintainers of other prominent TypeScript open source packages," Mastra said. "He was on a call and clicked a suspicious link." Interestingly, a similar modus operandi was observed in connection with the axios supply chain attack back in April 2026, raising the possibility that it could be the work of North Korean threat actors. "The clean-then-armed dependency, the setup postinstall dropper, the TLS-bypass-to-raw-IP fetch, and the crypto-stealer payload closely mirror the Axios npm compromise [...], down to the install-time dropper that self-deletes," Synk noted in its analysis of the campaign. When reached for comment, Kirill Boychenko, senior threat intelligence analyst at Socket, told The Hacker News via email that the operational pattern exhibits similarities with what was observed in the Axios compromise, which has been attributed to the North Korean threat cluster UNC1069. "The strongest attribution signal in this incident is the operational pattern: a legitimate maintainer was compromised, publish rights were abused, the Mastra packages themselves were left essentially clean, and the threat actor inserted a malicious transitive dependency that executed at install time," Boychenko said. "That attack pattern is much closer to the Axios compromise than to the more commonly described Contagious Interview playbook, where North Korea-linked threat actors, often tracked as Famous Chollima, typically pose as recruiters and deliver malicious coding assignments or trojanized projects to job seekers and developers." "The similarity to Axios also extends to the details of the added malicious transitive dependency. In both cases, the added dependency impersonated a staple npm library: crypto-js in the Axios compromise and dayjs in the Mastra incident. The threat actor also appears to have released a clean version of the dependency first, then published the malicious version later." In a follow-up update on June 19, 2026, Microsoft has attributed the Mastra campaign to Sapphire Sleet, a North Korean hacking group known for its targeting of the financial sector and the compromise of the Axios package. "The infrastructure and post-compromise TTPs observed in this campaign are consistent with previously documented Sapphire Sleet activity," the company said. "The primary motivation of this actor is to steal cryptocurrency wallets to generate revenue, and target technology or intellectual property related to cryptocurrency trading and blockchain platforms," the tech giant said. "Sapphire Sleet often leverages social networking sites, such as LinkedIn, to initiate contact by directing users to click links, leading to malicious files hosted on attacker-controlled cloud storage services such as OneDrive or Google Drive, using domains masquerading as financial institutions like United States-based banks or cryptocurrency pages, and fraudulent meeting links that impersonate legitimate video conferencing applications, such as Zoom." (The story was updated after publication to include additional details of the incident and a response from Socket. The number of impacted packages has been revised to 145.)
thehackernews.comJun 17, 2026extracted
Over 100 NPM, PyPI Packages Hit in New Shai-Hulud Supply Chain Attacks
New iterations of the Shai-Hulud supply chain attack have hit over 100 packages across the NPM and PyPI ecosystems, security researchers warn. Since September 2025, the self-replicating worm has been used in multiple campaigns targeting the open source software (OSS) community, with a surge in attacks observed over the past several months, following the Trivy vulnerability scanner incident. In mid-May, TeamPCP, the hacking group behind Shai-Hulud, released the worm’s source code, and the first clones emerged shortly after. Starting June 1, new variants of Shai-Hulud were used as part of broad, coordinated attacks. The first was the Red Hat incident, in which 32 packages part of Red Hat’s Hybrid Cloud Console JavaScript ecosystem were infected. The Miasma variant The payload used in the Red Hat attack contained the string “Miasma: The Spreading Blight”, which appeared in several other incidents last week. Ox Security identified nearly a dozen malicious NPM packages that contained a weaponized binding.gyp file, designed to bypass the postinstall execution logic but to behave similarly. A direct descendant of Mini Shai-Hulud, Miasma is a multi-stage dropper executed during NPM installation, Harness explains. The payload scans the local system and connected cloud services for credentials, API keys, tokens, and other secrets, and uses them to spread itself by infecting the packages the victim has access to. By June 5, at least 57 NPM packages and over 300 malicious package versions associated with the Miasma supply chain attack had been identified, Snyk, Sonatype, and StepSecurity warned. The attack hit the Vapi server SDK, as well as the ai-sdk-ollama, autotel, awaitly, executable-stories, node-env-resolver, and wrangler-deploy ecosystems. The Hades variant Shortly after Miasma hit NPM, security researchers identified roughly two dozen PyPI packages spreading a new variant of Shai-Hulud, characterized by the string “Hades – The End for the Damned”. The malware was seen in an initial wave of 19 packages containing a *-setup.pth file designed to execute at Python startup, fetch the Bun JavaScript runtime, and execute JavaScript code, Socket reports. Analysis of the worm revealed it was the PyPI branch of Miasma. It contained the same credential-harvesting and self-spreading behavior, as well as the previously observed Shai-Hulud data exfiltration mechanism that involved publishing the collected information to new GitHub repositories. On June 8, a second Hades wave hit the PyPI ecosystem, targeting more packages. Phantom releases were pushed to PyPI without corresponding iterations on GitHub, EndorLabs explains. At least 29 packages were affected, StepSecurity says. The attack hit bioinformatics, graph machine learning, and MCP-themed packages, and Socket identified a mutation in the execution chain, where the payload is no longer bundled in the loader. Instead, the code searches across sys.path to create a loader and payload split to evade detection. Across the affected NPM and PyPI packages, a total of 471 malicious artifacts were identified, including dozens of malicious PyPI wheel artifacts associated with the Hades Mini Shai-Hulud worm. Related: Over 5,500 GitHub Repositories Infected in ‘Megalodon’ Supply Chain Attack Related: GitHub Confirms Hack Impacting 3,800 Internal Repositories
securityweek.comJun 9, 2026extracted
New Shai-Hulud attack trojanizes 19 science-focused PyPI packages
Hackers compromised 19 packages on the PyPI, collectively downloaded hundreds of thousands of times, in a new Shai-Hulud supply-chain attack that delivered malware designed to steal developer secrets. Many of the infected packages are popular bioinformatics tools such as Dynamo, Spateo, CoolBox, U-FISH, and Napari-UFISH. The new campaign was discovered by application security company Socket and extended to 37 malicious releases for 19 packages that appear to be from a single maintainer. The researchers say that the malicious artifacts included a ‘*-setup.pth' file and an obfuscated JavaScript payload named ‘_index.js.’ Users would just have to start Python to trigger the execution of the PTH file, which then tries to download the Bun JavaScript runtime from GitHub to run the bundled script. “That means a compromised wheel can turn an otherwise passive dependency install into a delayed execution trigger: the next Python, pip, test run, notebook kernel, CI job, or package-management command that starts Python may process the malicious .pth,” Socket explains. The researchers believe that the attack is part of the broader “Shai-Hulud” campaign, due to the malware exhibiting several similarities in the techniques used. Because of this, Socket is tracking it alongside previous attacks, with the list of malicious artifacts attributed to Shai-Hulud activities now showing 453 items. An analysis of the JavaScript payload revealed that it targeted a broad range of developer secrets that included the following: GitHub tokens and GitHub Actions secrets npm, PyPI, RubyGems, JFrog publishing tokens AWS, GCP, Azure, Kubernetes, and Vault credentials SSH keys Docker credentials .env, .npmrc, .pypirc Shell histories Claude/MCP configuration files Other developer workstation and CI/CD secrets As with other Shai-Hulud attacks, the goal appears to be compromising software development workflows to further propagate the malware. The primary data exfiltration method is similar to past Shai-Hulud operations, using automatically created GitHub repositories to host secrets written via GitHub Actions. A second exfiltration method based on direct HTTPS also exists, pointing to a legitimate but invalid Anthropic API endpoint (api[.]anthropic[.]com/v1/api), which Socket believes was likely used for camouflage. The malware also features some evasion mechanisms, such as checking for Russian locales/environments, and security tools such as StepSecurity Harden-Runner. Persistence is established through systemd services on Linux and LaunchAgents on macOS, while GitHub workflow and Claude/MCP configuration files are also used. Socket’s report lists all affected packages and versions and recommends that organizations that installed them rotate all secrets and restore their environments from safe backups. Defenders should look for Python packages containing executable .pth startup hooks, unexpected downloads of the Bun JavaScript runtime from GitHub, and process chains where Python launches Bun to execute _index.js. Overall prevention scores can hide what happens after initial access. Once attackers are using valid credentials, prevention drops sharply. The Blue Report 2026 measures defenses technique by technique across 338 million simulations run in customer production environments. Get the report
bleepingcomputer.comJun 8, 2026extracted
Miasma Worm Hits 73 Microsoft GitHub Repositories in Major Supply Chain Attack
Microsoft's GitHub repositories have become the latest to fall victim to the ongoing Miasma self-replicating supply chain attack campaign. The incident impacted 73 Microsoft repositories across four of its GitHub organizations, including Azure, Azure-Samples, Microsoft, and MicrosoftDocs, per OpenSourceMalware. The development has prompted GitHub to disable access to those repositories. "Access to this repository has been disabled by GitHub Staff due to a violation of GitHub's terms of service," reads the message when attempting to access the "Azure/azure-functions-host" repository. "If you are the owner of the repository, you may reach out to GitHub Support for more information." According to OpenSourceMalware, some of the repositories impacted by the incident are listed below - azure-search-openai-demo-purviewdatasecurity Connectors-NET-LSP Connectors-NET-SDK durabletask durabletask-dotnet durabletask-go durabletask-js durabletask-mssql functions-container-action homebrew-functions llm-fine-tuning windows-driver-docs What's notable about the latest campaign is the re-compromise of the "durabletask" PyPI package, which was infected by TeamPCP last month to deliver an information stealer on Linux systems. "A month later, not only is Azure/durabletask gone - so is every sibling repo in the Durable Task ecosystem, sitting one org over in Microsoft: the .NET, Go, Java, JS, MSSQL, Netherite, and protobuf implementations, plus the Durable Functions monitor," security researcher Paul McCarty (aka 6mile) said. "When the repo at the root of last month's compromise is the hub of this month's takedown, that is not a coincidence - that is the same wound reopening. Whoever held those credentials in May plausibly never fully lost them." Miasma is assessed to be a variant of the Mini Shai-Hulud worm that TeamPCP publicly released in mid-May 2026. It has since continued to mutate and refine its tactics, even as it has infected more packages over the past couple of days, using various descriptions for the newly-created public repositories containing the stolen secrets - Miasma: The Spreading Blight Miasma : The Spreading Blight Miasma - The Spreading Blight Hades - The End for the Damned As of writing, there are 13 repositories with the description "Hades - The End for the Damned" and 82 repositories with the remaining three naming patterns. Miasma has also been observed skipping the npm registry entirely, with the threat actors pushing malicious code directly to "icflorescu/mantine-datatable" and four related repositories: "mantine-contextmenu," "next-server-actions-parallel," "mantine-datatable-v6," and "mantine-contextmenu-v6." "The commit added no dependencies. It planted a 4.3 MB payload runner and wired it to execute automatically through five developer tools: Claude Code, Gemini CLI, Cursor, VS Code, and the npm test script," SafeDep said. "The attack detonates when a developer clones one of the affected repos and opens it in an AI coding agent. The dropper is the same staged Bun loader, here repurposed for GitHub source-repo persistence rather than registry poisoning." These software supply chain attacks have exposed the underlying weaknesses in the trust model that forms the basis of software delivery in open-source ecosystems, making it one of the most significant and sustained campaigns observed to date. What separates the activity from other incidents is its ability to exponentially propagate across the ecosystem by compromising downstream users and repeating the same cycle. "The worm's genius and the reason conventional defences largely failed is that it operates entirely within legitimate channels. It does not exploit a vulnerability in npm or GitHub," FalconFeeds.io said. "It exploits the trust model those platforms are built on: the assumption that if a package is signed with a valid key and published by an authenticated maintainer, it is safe." "Shai-Hulud compromises the key and the maintainer, then proceeds to act exactly as a legitimate publisher would. From the registry's perspective, every malicious publish event is indistinguishable from a routine update." Update When reached for comment, a Microsoft spokesperson told The Hacker News via email that "we have temporarily removed some repositories as we investigate potential malicious content." StepSecurity, in a report published June 5, 2026, said the same contributor account behind the May compromise of the durabletask PyPI package was used to push a malicious commit in the latest incident. "Instead of poisoning a package registry, the commit planted configuration files that trigger automatic code execution when a developer opens the repository in an AI coding tool or IDE," security researcher Ashish Kurmi said. The commit has been found to add five files designed to achieve code execution across four different developer tools - .claude/settings.json, by embedding an Anthropic Claude Code SessionStart hook that causes the payload to be executed automatically whenever a session starts. .gemini/settings.json, by embedding a Google Gemini CLI SessionStart hook that causes the payload to be executed automatically whenever a session starts. .cursor/rules/setup.mdc, by embedding a prompt injection that instructs the Cursor AI agent to execute the payload by treating it as a project setup requirement. .vscode/tasks.json, by embedding a Microsoft Visual Studio Code auto-run task through the "runOn: folderOpen" option. "The fact that the same account was used again means one of three things happened," StepSecurity said. "The account's credentials were never fully rotated after May 19, and the attacker retained a working GitHub token." "The contributor was re-compromised through the worm's own propagation loop: opening an infected repository in an AI coding tool would have harvested fresh tokens. A different contributor's token was used with the commit author metadata spoofed via the Git Data API."
thehackernews.comJun 6, 2026extracted
Stealer Backdoor Found in 3 Node-IPC Versions Targeting Developer Secrets
Cybersecurity researchers are sounding the alarm about what has been described as "malicious activity" in newly published versions of node-ipc. According to Socket and StepSecurity, three different versions of the npm package have been confirmed as malicious - [email protected] [email protected] [email protected] "Early analysis indicates that [email protected], [email protected], and [email protected] contain obfuscated stealer/backdoor behavior," Socket said. "The malware appears to fingerprint the host environment, enumerate and read local files, compress and chunk collected data, wrap the payload in a cryptographic envelope, and attempt exfiltration through a network endpoint selected via DNS/address logic." StepSecurity said the heavily obfuscated payload is triggered when the package is required at runtime, and attempts to exfiltrate a broad set of developer and cloud secrets to an external command-and-control (C2) server. This includes 90 categories of credentials, including Amazon Web Services, Google Cloud, Microsoft Azure, SSH keys, Kubernetes tokens, GitHub CLI configs, Claude AI and Kiro IDE settings, Terraform state, database passwords, shell history, and more. The harvested data is then compressed into a GZIP archive and transmitted to the "sh.azurestaticprovider[.]net" domain. The three versions were published by an account named "atiertant," which has no connection to the package's original author, "riaevangelist." Although "atiertant" appears in the maintainer list, the account has no prior publish history in connection with the node-ipc package. The previous update to the package was in August 2024. The fact that the dormant, high-download package was compromised after a 21-month gap indicates that either the "atiertant" credentials were newly compromised, or the account was specifically added as a maintainer to publish the malicious versions. What's notable about the activity is that it does not rely on any npm lifecycle hooks such as preinstall, install, or postinstall scripts, instead appending the malicious payload as an Immediately Invoked Function Expression (IIFE) to the end of "node-ipc.cjs." This, in turn, causes the malware to fire unconditionally on every require('node-ipc'). The oddity doesn't end there, for the payload performs a SHA-256 fingerprint check and compares it against a hard-coded hash assembled from eight obfuscated table fragments embedded in the code, before proceeding with system enumeration and comprehensive credential harvesting. "This means 12.0.1 is entirely inert on any machine whose primary module path does not hash to the target value," StepSecurity researcher Sai Likhith said. "The attacker knows exactly which project or developer is being targeted and pre-computed the hash of their entry point before publishing. The 9.x versions do not have this gate and will execute the full payload on any system that loads them." The malware also incorporates a second exfiltration channel besides issuing an HTTPS POST to the fake Azure domain containing the compressed stolen data. This involves encoding chunks of the archive as a DNS TXT record after overriding the system's DNS resolver with Google Public DNS to sidestep local DNS-based security controls. "It first resolves sh.azurestaticprovider.net using 1.1.1.1 (primary) or 8.8.8.8 (fallback) to obtain the C2 IP," StepSecurity said. "Then it re-targets the resolver directly at the C2 IP for all exfiltration queries." "The direct-to-C2 DNS sink is a notable anti-detection technique. Because the exfiltration queries never touch public DNS resolvers, there is no observable bt.node.js activity in public DNS logs. Organizations relying solely on DNS logging through corporate resolvers would not see this traffic." Lastly, the malware also attempts to continue execution independently of the original Node.js process by forking itself into a detached background child processes, allowing exfiltration activity to continue silently after the parent application is terminated. "This campaign reflects how software supply chain attacks are evolving beyond simple malicious packages into infrastructure-aware credential harvesting operations," Avital Harel, security research lead at Upwind, said in a statement. "Attackers are increasingly targeting the identities and automation systems powering modern software delivery pipelines while designing malware specifically to blend into normal developer and application behavior." This is not the first time the npm package has had malicious functionality incorporated into its code. In March 2022, the maintainer of the package deliberately introduced destructive capability to versions 10.1.1 and 10.1.2 by overwriting files on systems located in Russia or Belarus as a form of protest following Russia's military invasion of Ukraine. Two subsequent versions – 11.0.0 and 11.1.0 – included the "peacenotwar" dependency, which was also published by the same maintainer as a "non-violent protest against Russia's aggression." "The latest incident appears to involve a suspicious republishing or reintroduction of malicious code into versions of a known package, rather than a typosquatting attempt," Socket said. Users are advised to remove the compromised node-ipc versions and re-install a known clean version (9.2.1 and 12.0.0), assume compromise and rotate credentials and secrets, audit npm publish activity for any packages accessible with the rotated tokens, review workflow run logs for suspicious activity, audit cloud logs to check if any unauthorized actions were performed by IAM identities whose credentials were available during the compromised window, and block egress traffic to the C2 domain. Update It has since emerged that the dormant maintainer's account may have been taken over via an expired email domain. Per an X post from Ian Ahl, Chief Technology Officer (CTO) at Permiso Security, the email address for atiertant's account was hosted on a domain called "atlantis-software[.]net" that had expired on January 10, 2025, and was re-registered on May 7, 2026, a week before the attack took place. "Assuming the npm account recovery email for atiertant was indeed hosted on atlantis-software[.]net, the new domain owner was then able to trigger a standard npm password reset, receive the reset email at a mailbox under their control, and gain publish rights without ever compromising any of the maintainer's own infrastructure," Socket said.
thehackernews.comMay 14, 2026extracted
PyTorch Lightning and Intercom-client Hit in Supply Chain Attacks to Steal Credentials
In yet another software supply chain attack, threat actors have managed to compromise the popular Python package Lightning to push two malicious versions to conduct credential theft. According to Aikido Security, OX Security, Socket, and StepSecurity, the two malicious versions are versions 2.6.2 and 2.6.3, both of which were published on April 30, 2026. The campaign is assessed to be an extension of the Mini Shai-Hulud supply chain incident that targeted SAP-related npm packages on Wednesday. As of writing, the project has been quarantined by the administrators of the Python Package Index (PyPI) repository. PyTorch Lightning is an open-source Python framework that provides a high-level interface for PyTorch. The open-source project has more than 31,100 stars on GitHub. "The malicious package includes a hidden _runtime directory containing a downloader and an obfuscated JavaScript payload," Socket said. "The execution chain runs automatically when the lightning module is imported, requiring no additional user action after installation and import." The attack chain paves the way for a Python script ("start.py"), which downloads and executes the Bun JavaScript runtime, and then uses it to run an 11MB obfuscated malicious payload ("router_runtime.js") with an aimto conduct comprehensive credential theft. From among the harvested credentials, the GitHub tokens are validated against the "api.github[.]com/user" endpoint before being used to inject a worm-like payload to up to 50 branches retrieved from every repository the token can write to. "The operation is an upsert: it creates files that do not yet exist and silently overwrites files that do," Socket added. "No pre-check for existing content is performed. Every poisoned commit is authored using a hardcoded identity designed to impersonate Anthropic's Claude Code." Separately, the malware implements an npm-based propagation vector that modifies the developer's local npm packages with a postinstall hook in the "package.json" file to invoke the malicious payload, increases the patch version number, and repacks the .tgz tarballs. Should the unsuspecting developer publish the tampered packages from their local environment, they are made available on npm, from where the malware ends up on downstream user systems. The maintainers of the project have acknowledged that "we are aware of the issue and are actively investigating." It's currently not clear how the incident occurred, but indications are that the project's GitHub account has been compromised. In a separate advisory, Lightning revealed an investigation is still underway to determine the exact root cause of the compromise and that the "affected versions have introduced functionality consistent with a credential harvesting mechanism." In the interim, it's advised to block Lightning versions 2.6.2 and 2.6.3 and remove them from developer systems, if already installed. It's also essential to downgrade to the last known clean version, 2.6.1, and rotate credentials exposed in affected environments. The supply chain attack is the latest addition to a long list of compromises carried out by a threat actor known as TeamPCP, which has now launched an onion website on the dark web after its account was suspended from X for violating the platform's rules. It also called LAPSUS$, a "good partner of ours and has been involved heavily throughout this entire operation." The group also made it a point to emphasize that it has "never used VECT encryption tools and we own CipherForce, our own private locker," following a report from Check Point Research about vulnerabilities discovered in the ransomware's encryption process. Intercom npm and Packagist Packages Compromised as Part of Mini Shai-Hulud In a related development, it has emerged that version 7.0.4 of intercom-client has been compromised as part of the Mini Shai-Hulud campaign, following a similar modus operandi as that of the SAP packages to trigger the execution of a credential-stealing malware using a preinstall hook. "The overlap is significant because the SAP CAP campaign was linked to TeamPCP activity based on shared technical details, including distinctive payload implementation patterns, GitHub-based exfiltration, credential harvesting across developer and CI/CD environments, and similarities to prior attacks affecting Checkmarx, Bitwarden, Telnyx, LiteLLM, and Aqua Security Trivy," Socket said. It has since been confirmed that the GitHub user "nhur" was hacked and that the malicious [email protected] package was published through a now-deleted branch that triggered an automated CI publish workflow.In tandem, the campaign has also spread to Packagist with the compromise of "intercom/intercom-php" (version 5.0.2), which adapts the same credential-stealing mechanism for the PHP ecosystem. Specifically, the package uses Composer plugin execution to download Bun by means of a shell script ("setup-intercom.sh") that's triggered during install or update events (via the "post-install-cmd" and "post-update-cmd" hooks) and launches an obfuscated "router_runtime.js" credential-stealing payload. The malware component, as before, targets GitHub, npm, SSH keys, cloud credentials, Kubernetes, Vault, Docker credentials, .env files, and other developer/CI secrets. The stolen data is then encrypted and exfiltrated to a remote server ("zero.masscan[.]cloud:443/v1/telemetry"). If this primary method fails, it falls back to the GitHub-based exfiltration method using the pilfered GitHub tokens by creating a public repository with the description "A Mini Shai-Hulud has Appeared." It also comes fitted with propagation capabilities, abusing the discovered npm tokens to modify and republish packages containing the malware, in addition to writing the payload files to paths like ".claude/settings.json" and ".vscode/tasks.json." "The PHP payload mirrors the broader Mini Shai-Hulud tradecraft observed across recent npm and PyPI compromises: install-time execution, Bun-based payload launch, heavily obfuscated JavaScript, credential harvesting from developer and CI/CD environments, and encrypted exfiltration," Socket said. Intercom, for its part, has traced the root cause of the compromise to a local install of "pyannote-audio," which introduced the compromised Lightning PyPI package as a transitive dependency, offering clear evidence that the newer infections are downstream effects from prior TeamPCP waves rather than entirely independent initial access events. "That makes this especially concerning because one compromised dependency can become a bridge into additional package ecosystems," Socket told The Hacker News via email. "After two solid weeks of virtually nonstop attacks, the tempo looks deliberate and sustained rather than opportunistic. The repeated use of install-time execution, Bun-based payload delivery, obfuscated 'router_runtime.js,' credential harvesting, GitHub abuse, and package/repository propagation shows a campaign built to turn one compromised developer environment into the next package compromise." Lightning PyPI Quarantine Removed The PyPI quarantine on the Lightning package has been lifted and the malicious versions 2.6.2 and 2.6.3 have been deleted. The latest safe version is 2.6.1. In a follow-up update, the package maintainers said the malicious versions were live in PyPI for 42 minutes before they were quarantined. There is no evidence that the GitHub source code repository was ever compromised. "The threat compromised our PyPI publishing channel," they added. "An attacker with access to our PyPI credentials cloned our open source code, injected a malicious payload, and pushed those tampered builds directly to PyPI as malicious versions 2.6.2 and 2.6.3, bypassing our source control entirely. Any user who pip installed or updated to either of those versions received the attacker's build, not ours." (The story was updated after publication to reflect the latest developments and include additional insights from Socket.)
thehackernews.comApr 30, 2026extracted
SAP-Related npm Packages Compromised in Credential-Stealing Supply Chain Attack
Cybersecurity researchers are sounding the alarm about a new supply chain attack campaign targeting SAP-related npm Packages with credential-stealing malware. According to reports from Aikido Security, Onapsis, OX Security, SafeDep, Socket, StepSecurity, and Google-owned Wiz, the campaign – calling itself the Mini Shai-Hulud – has affected the following packages associated with SAP's JavaScript and cloud application development ecosystem - [email protected] @cap-js/[email protected] @cap-js/[email protected] @cap-js/[email protected] "The affected versions introduced new installation-time behavior that was not previously part of these packages' expected functionality," Socket said. "The compromised releases added a preinstall script that acts as a runtime bootstrapper, downloading a platform-specific Bun ZIP from GitHub Releases, extracting it, and immediately executing the extracted Bun binary." "The implementation also follows HTTP redirects without validating the destination and uses PowerShell with -ExecutionPolicy Bypass on Windows, increasing the risk for affected developer and CI/CD environments." Wiz noted that the malicious packages match several features present in previous TeamPCP operations, indicating that the same threat actor is likely behind the latest campaign. The suspicious versions were published on April 29, 2026, between 09:55 UTC and 12:14 UTC. The poisoned packages introduce a new package.json preinstall hook that runs a file named "setup.mjs," which acts as a loader for the Bun JavaScript runtime to execute the credential stealer and propagation framework ("execution.js"). According to Aikido, the malware is designed to harvest local developer credentials, GitHub and npm tokens, GitHub Actions secrets, and cloud secrets from AWS, Azure, GCP, and Kubernetes. The stolen data is encrypted and exfiltrated to public GitHub repositories created on the victim's own account with the description "A Mini Shai-Hulud has Appeared." As of writing, there are more than 1,100 repositories with descriptions. In addition, the 11.6 MB payload comes with capabilities to self-propagate through developer and release workflows, specifically using the GitHub and npm tokens to inject a malicious GitHub Actions workflow into the victim's repositories to steal repository secrets and publish poisoned versions of the npm packages to the registry. However, the latest incident bears significant differences from prior Shai-Hulud waves - All exfiltrated data is encrypted with AES-256-GCM and encapsulates the key using RSA-4096 with a public key embedded in the payload, effectively making it decipherable only to the attacker. It exits on Russian-locale systems. The payload commits itself into every accessible GitHub repository by injecting a ".claude/settings.json" file that abuses Claude Code's SessionStart hook and a ".vscode/tasks.json" file with "runOn": "folderOpen" setting so that any attempt to open the infected repository in Microsoft Visual Studio Code (VS Code) or Claude Code causes the malware to be executed. "This is one of the first supply chain attacks to target AI coding agent configurations as a persistence and propagation vector," StepSecurity said. Wiz also pointed out that the check for Russian locale was detected in the recent Checkmarx and Bitwarden compromises, adding the attack uses a TeamPCP-linked shared RSA public key used to encrypt the exfiltrated secrets. "The SAP operation adds the ability to steal credentials from multiple browsers (Chrome, Safari, Edge, Brave, Chromium) and exfiltrate any passwords found there," Wiz researchers noted. "This feature was not present in any of the previous operations. GitHub based exfiltration to Dune themed repos was the fallback C2 method for the Bitwarden CLI operation, but is now the primary option." Further analysis into the root cause has revealed that the attackers compromised RoshniNaveenaS's account for the three "@cap-js" packages, followed by pushing a modified workflow to a non-main branch and using the extracted npm OIDC token to publish the malicious packages without provenance. As for mbt, it's suspected to involve the compromise of the "cloudmtabot" static npm token through an as-yet-undetermined channel. "The cds-dbs team migrated to npm OIDC trusted publishing in November 2025," SafeDep said. "Under this setup, GitHub Actions can request a short-lived npm token without storing any long-lived secrets in the repository. The attacker reproduced this exchange manually in a CI step and printed the resulting token." "The critical configuration gap: npm’s OIDC trusted publisher configuration for @cap-js/sqlite trusted any workflow in cap-js/cds-dbs, not just the canonical release-please.yml on main. A branch push could exchange an OIDC token on behalf of the package if the workflow had id-token: write permission and the environment: npm reference." In response to the incident, the maintainers of the packages have released new safe versions that supersede the compromised releases - sqlite: v2.4.0, v2.3.0 postgres: v2.3.0, v2.2.2 hana: v2.8.0, v2.7.2 db-service: v2.10.1 mbt: v1.2.49 "This campaign illustrates once again how GitHub is becoming the C2 infrastructure of choice for data exfiltration," OX Security researchers Moshe Siman Tov Bustan and Nir Zadok said. "Blocking github.com is not a realistic option for most development teams, and tracing exfiltration back to a specific threat actor domain becomes nearly impossible when GitHub is the delivery mechanism."
thehackernews.comApr 29, 2026extracted
Self-Propagating Supply Chain Worm Hijacks npm Packages to Steal Developer Tokens
Cybersecurity researchers have flagged a fresh set of packages that have been compromised by bad actors to deliver a self-propagating worm that spreads through stolen developer npm tokens. The supply chain worm has been detected by both Socket and StepSecurity, with the companies tracking the activity under the name CanisterSprawl owing to the use of an ICP canister to exfiltrate the stolen data, in a tactic reminiscent of TeamPCP's CanisterWorm to make the infrastructure resilient to takedowns. The list of affected packages is below - @automagik/genie (4.260421.33 - 4.260421.40) @fairwords/loopback-connector-es (1.4.3 - 1.4.4) @fairwords/websocket (1.0.38 - 1.0.39) @openwebconcept/design-tokens (1.0.1 - 1.0.3) @openwebconcept/theme-owc (1.0.1 - 1.0.3) pgserve (1.1.11 - 1.1.14) The malware is triggered during install time via a postinstall hook to steal credentials and secrets from developer environments, and then leverage the stolen npm tokens to push poisoned versions of the packages to the registry with a new malicious postinstall hook so as to expand the reach of the campaign. Captured information includes - .npmrc SSH keys and SSH configurations .git-credentials .netrc cloud credentials for Amazon Web Services, Google Cloud, and Microsoft Azure Kubernetes and Docker configurations Terraform, Pulumi, and Vault material Database password files Local .env* files Shell history files In addition, it attempts to access credentials from Chromium-based web browsers and data associated with cryptocurrency wallet extension apps. The information is exfiltrated to an HTTPS webhook ("telemetry.api-monitor[.]com") and an ICP canister ("cjn37-uyaaa-aaaac-qgnva-cai.raw.icp0[.]io"). "It also contains PyPI propagation logic," Socket said. "The script generates a Python .pth-based payload designed to execute when Python starts, then prepares and uploads malicious Python packages with Twine if the required credentials are present." "In other words, this is not just a credential stealer. It is designed to turn one compromised developer environment into additional package compromises." The disclosure comes as JFrog revealed that multiple versions of the legitimate Python package "xinference" (2.6.0, 2.6.1, and 2.6.2) have been compromised to include a Base64-encoded payload that fetches a second-stage collector module responsible for harvesting a wide range of credentials and secrets from the infected host "The decoded payload opens with the comment '# hacked by teampcp,' the same actor marker seen in recent TeamPCP compromises," the company said. However, in a post shared on X, TeamPCP disputed they were behind the compromise and claimed it was the work of a copycat. Attacks Target npm and PyPI The findings are the latest additions to a long list of attacks that have targeted the open-source ecosystem. This includes two malicious packages, each on npm (kube-health-tools) and PyPI (kube-node-health), that masquerade as Kubernetes utilities, but silently install a Go-based binary to establish a SOCKS5 proxy, a reverse proxy, an SFTP server, and a large language model (LLM) proxy on the victim's machine. The LLM proxy is an OpenAI-compatible API gateway that accepts requests and routes them to upstream APIs, including Chinese LLM routers like shubiaobiao. "Beyond providing cheap access to AI, LLM routers like the one deployed here sit on a trust boundary that is easily abused," Aikido Security researcher Ilyas Makari said. "Because every request passes through the router in plaintext, a malicious operator can [...] inject malicious tool calls into responses of coding agents before they reach the client, introducing malicious pip install or curl | bash payloads mid-flight." Alternatively, the router can be used to exfiltrate secrets from request and response bodies, including API keys, AWS credentials, GitHub tokens, Ethereum private keys, and system prompts. Another sustained npm supply chain attack campaign documented by Panther has impersonated phone insurance provider Asurion and its subsidiaries, publishing malicious npm packages (sbxapps, asurion-hub-web, soluto-home-web, and asurion-core) from April 1 through April 8, 2026, containing a multi-stage credential harvester. The stolen credentials were exfiltrated initially to a Slack webhook and then to an AWS API Gateway endpoint ("pbyi76s0e9.execute-api.us-east-1.amazonaws[.]com"). By April 7, the AWS exfiltration URL is said to have been obfuscated using XOR encoding. However, an Asurion spokesperson told The Hacker News that the aforementioned packages were pushed as part of a "controlled internal red team exercise" conducted by its security team and not a malicious campaign. The company also emphasized that there has been no compromise or impact to its systems or customers. Last but not least, Google-owned cloud security firm Wiz shed light on an artificial intelligence (AI)-powered campaign dubbed prt-scan that has systematically exploited the "pull_request_target" GitHub Actions workflow trigger since March 11, 2026, to steal developer secrets. The attacker, operating under the accounts testedbefore, beforetested-boop, 420tb, 69tf420, elzotebo, and ezmtebo, has been found to search for repositories using the trigger, fork those repositories, create a branch with a pre-defined naming convention (i.e., prt-scan-{12-hex-chars}), inject a malicious payload into a file that's executed during CI, open a pull request, and then steal developer credentials when the workflow is triggered and publish a malicious package version if npm tokens are discovered. "Across over 450 analyzed exploit attempts, we have observed a <10% success rate," Wiz researchers said. "In most cases, successful attacks were against small hobbyist projects, and only exposed ephemeral GitHub credentials for the workflow. For the most part, this campaign did not grant the attacker access to production infrastructure, cloud credentials, or persistent API keys, barring minor exceptions." "The campaign demonstrates that while pull_request_target vulnerabilities remain exploitable at scale, modern CI/CD security practices, particularly contributor approval requirements, are effective at protecting high-profile repositories." (The story was updated after publication on April 24, 2026, to include a response from Asurion that the packages were pushed as part of a red team exercise.)
thehackernews.comApr 22, 2026extracted
Axios NPM Package Breached in North Korean Supply Chain Attack
Malicious versions of the highly popular Axios NPM library were distributed to millions in a fresh supply chain attack blamed on North Korean hackers. A promise-based HTTP client that supports asynchronous API requests from Node.js and browsers, Axios is used for fetching, sending, and updating data. With over 100 million weekly downloads, it is a top 10 NPM package and the most popular JavaScript HTTP client library, present in approximately 80% of cloud and code environments. On March 31, 2026, just after midnight, two backdoored Axios versions were published to the NPM registry to automatically execute a payload across Windows, macOS, and Linux systems, without user interaction. The nefarious package versions, namely 1.14.1 and 0.30.4, were removed from the registry roughly three hours later. During this window, they were downloaded by roughly 3% of the Axios userbase, Wiz says. The backdoored iterations contained a phantom dependency that was published to the registry 18 hours before the attack. Named [email protected], the dependency is never imported anywhere by the Axios code. “Its sole purpose is to execute a post-install script that acts as a cross-platform remote access trojan (RAT) dropper, targeting macOS, Windows, and Linux. The dropper contacts a live command-and-control server and delivers platform-specific second-stage payloads,” StepSecurity notes. The dropped payloads, Wiz explains, had similar functionality across operating systems, enabling remote shell execution, code injection, directory and process enumeration, and system reconnaissance. “After execution, the malware attempts to remove installation artifacts and replaces its own package metadata with a clean version to evade forensic detection,” Sophos says. According to Socket, the @shadanai/openclaw and @qqbrowser/[email protected] packages were seen distributing the same malware. Compromised account and attack timeline The supply chain attack was highly targeted and premeditated, security researchers say. To mount the attack, the threat actors compromised the NPM account of @jasonsaayman, the primary maintainer of Axios, Huntress explains. The attackers changed the email address for the account and used a long-lived access token to publish the backdoor package versions directly via the NPM CLI, bypassing the GitHub Actions OIDC-based CI/CD publishing workflow. “One critical detail: even on the v1.x branch where OIDC Trusted Publishing was configured, the publish workflow still passed NPM_TOKEN as an environment variable alongside OIDC credentials. When both are present, NPM uses the token. This meant the long-lived token was effectively the authentication method for all publishers, regardless of OIDC configuration,” Huntress says. This explains why the attackers could bypass publishing protections even if the maintainer has multi-factor authentication enabled “on practically everything” he interacts with, as he pointed out. A clean version of plain-crypto-js dependency used in the attack was published 18 hours before the attack, “to establish NPM publishing history, so the package does not appear as a zero-history account during later inspection,” StepSecurity notes. The malicious iteration of the dependency was published roughly 20 minutes before the first backdoored Axios version was published. The second backdoored Axios release was pushed 39 minutes later. NPM unpublished and removed the malicious versions three hours later and started a security hold on plain-crypto-js. It replaced the malicious dependency with an NPM security-holder stub an hour later. The initial plain-crypto-js version was an identical copy of the legitimate [email protected] package. The malicious iteration, 4.2.1, contained only three differences: the post-install script, an obfuscated dropper, and a clean JSON stub. The purpose of the stub was to rename itself (after the setup script finished execution and deleted itself) and report version 4.2.0 instead of 4.2.1, to trick defenders into believing that their systems were not compromised, StepSecurity notes. North Korean hackers to blame “The level of operational sophistication documented here, including compromised maintainer credentials, pre-staged payloads built for three operating systems, both release branches hit in under 40 minutes, and built-in forensic self-destruction, reflects a threat actor that planned this as a scalable operation,” said ReversingLabs chief software architect Tomislav Pericin. The attack, cybersecurity researchers say, was mounted by North Korean hackers. Elastic says the macOS binary used in the attack overlaps with WaveShaper, which was attributed by Google to UNC1069. In an emailed statement, Google Threat Intelligence Group chief analyst John Hultquist confirmed the attribution. “GTIG is investigating the Axios supply chain attack, an incident unrelated to the recent TeamPCP supply chain issues. We have attributed the attack to a suspected North Korean threat actor we track as UNC1069,” Hultquist said. “North Korean hackers have deep experience with supply chain attacks, which they’ve historically used to steal cryptocurrency. The full breadth of this incident is still unclear, but given the popularity of the compromised package, we expect it will have far-reaching impacts,” he added. Active since at least 2018, UNC1069 is a financially motivated threat actor known for targeting cryptocurrency and decentralized finance (DeFi) verticals, software developers, and venture capital firms. In February, Google warned of evolving UNC1069 tactics, techniques, and procedures (TTPs), including the use of new malware families in attacks against a FinTech entity. Downstream impact Impacted users are advised to immediately remove the malicious packages from their systems, to hunt for signs of infection, and to audit their dependency trees for potential downstream impact. “We are already seeing active exploitation. Any environment that installed [email protected] or [email protected] should be treated as compromised. Organizations must immediately audit their dependencies, downgrade to verified safe versions, rotate all credentials accessible during installation, and scan for malware artifacts specific to each operating system,” Huntress senior principal security researcher John Hammond said in an emailed comment. The attack, Sonatype field CTO Ilkka Turunen points out, shows that hackers are now exploiting the trust people place in code rather than in the code itself. “The malicious capability was introduced through a staged dependency and designed to erase its own tracks, which made the attack harder to spot and slower to understand. That’s not just malware — it shows a more deliberate and mature playbook,” Turunen said. “What makes this incident important is how little visible change was needed to create real downstream risk. When a widely trusted package can be turned into a delivery path like this, the issue is bigger than package hygiene. It’s a trust problem in the software supply chain, and it’s why organizations need security controls that look at what’s actually being installed, not just what appears safe at first glance,” he added. Despite the short window of availability for the two backdoored Axios iterations, the impact of this supply chain attack is believed to be broad, as the library is deeply embedded across environments and the malicious code was likely pulled through downstream build pipelines. “By briefly inserting malicious code into a common package, threat actors can exploit routine software updates and automated processes, often without anyone immediately realizing something is wrong. That downstream exposure is what makes these incidents particularly difficult to spot and contain, especially for teams that never directly chose to install Axios themselves,” Arctic Wolf VP Ismael Valenzuela said. “What makes this one worth paying close attention to is the IDE extension angle. Developers who pinned their versions, maintained lockfiles, and followed standard hygiene could still have been hit because their editor pulled the dependency behind the scenes,” Semgrep founder and CEO Isaac Evans pointed out. Related: Stolen Logins Are Fueling Everything From Ransomware to Nation-State Cyberattacks Related: TeamPCP Moves From OSS to AWS Environments Related: The Next Cybersecurity Crisis Isn’t Breaches—It’s Data You Can’t Trust
securityweek.comApr 1, 2026extracted
Google links axios supply chain attack to North Korean group
Google links axios supply chain attack to North Korean group Hackers connected to North Korea are responsible for the recent compromise of a wildly popular library used in both front-end apps and back-end systems, according to new researcher. On Monday evening, news emerged that hackers launched a supply chain attack targeting the HTTP client axios, which is downloaded 100 million times each week and embedded across frontend frameworks, backend services and enterprise applications. Google Threat Intelligence Group (GTIG) joined several other researchers in attributing the attack to a North Korean threat actor they call UNC1069. SentinelOne found the same group using macOS-based malware in attacks dating back to 2023. Last month, the financially-motivated group was accused of targeting a cryptocurrency company with several unique pieces of malware deployed alongside multiple scams, including a fake Zoom meeting. Several other researchers backed Google’s assessment because the backdoors used during the axios attack resemble WAVESHAPER, a strain of malware North Korean actors used during the fake Zoom campaign. John Hultquist, chief analyst at Google Threat Intelligence Group, said the axios incident is unrelated to another recent supply chain attack that caused alarm among security experts due to its widespread nature. Hultquist noted that North Korean hackers “have deep experience with supply chain attacks, which they’ve historically used to steal cryptocurrency.” A 2023 supply-chain attack on the enterprise phone company 3CX was attributed to North Korean hackers. “The full breadth of this incident is still unclear, but given the popularity of the compromised package, we expect it will have far reaching impacts,” Hultquist said. Experts raised alarms early on Tuesday morning when two malicious versions of the axios package were published on the Node Package Manager (npm). Security companies Socket and StepSecurity confirmed the packages were malicious and traced the incident back to the hijacking of the lead axios maintainer’s npm account. Socket said the malicious package deploys a multi-stage payload, including a “remote access trojan (RAT) capable of executing arbitrary commands, exfiltrating system data, and persisting on infected machines.” “When the attack first happened, axios maintainers were unable to regain control of the project. In a public GitHub issue, a collaborator stated they could not revoke access from the account responsible for the malicious publish, noting that the attacker’s permissions exceed their own,” Socket explained. Axios is among the most popular JavaScript HTTP client libraries and is used by developers to connect apps to the internet. StepSecurity said that this is “among the most operationally sophisticated supply chain attacks ever documented against a top-10 npm package.” The malicious version injects a new dependency that installs the malware, which impacts Windows, macOS and Linux. After executing, the malware deletes itself and replaces it with a clean version of the tool to evade detection, StepSecurity added. “There are zero lines of malicious code inside axios itself, and that's exactly what makes this attack so dangerous,” the researchers said. The incident marks the latest in a string of compromises involving the software supply chain, which is increasingly tied together through code pulled in from outside sources. Last week’s attack on the widely used open-source Python package LiteLLM allowed cybercriminals to breach several organizations. Previous incidents involving XZ Utils and self-replicating worm Shai-Hulud stood out among a sea of research uncovering more and more npm packages that have been corrupted. Mandiant CTO Charles Carmakal said the number of recent software supply chain attacks is overwhelming. “The secrets stolen over the past two weeks will enable more software supply chain attacks, software-as-a-service environment compromises (leading to downstream customer compromises), ransomware and extortion events, and crypto heists over the next several days, weeks, and months,” he said. “We are aware of hundreds of thousands of stolen credentials. A variety of actors with varied motivations are behind these attacks. The blast radius of yesterday's axios npm supply chain attack is broad and extends to other popular packages that have dependencies on it.” Mike Puglia, a security leader at Kaseya, said the incidents are further evidence of the fragility of the world's software ecosystem. “In this case, the attacker compromised one single account, the maintainer of axios, and the malicious code was ‘live’ for almost three hours before discovery. On a typical day, that could mean tens of thousands of organizations received the malware,” Puglia said. To further complicate matters, after the attacker's remote access was deployed, the malware replaced itself with the legitimate axios files, making it difficult to know if you were compromised, he added. Several other experts warned that the recent attacks on axios and LiteLLM would be templates for other hackers to replicate. Jonathan Greig is a Breaking News Reporter at Recorded Future News. Jonathan has worked across the globe as a journalist since 2014. Before moving back to New York City, he worked for news outlets in South Africa, Jordan and Cambodia. He previously covered cybersecurity at ZDNet and TechRepublic.
therecord.mediaMar 31, 2026extracted
Hackers compromise Axios npm package to drop cross-platform malware
Hackers hijacked the npm account of the Axios package, a JavaScript HTTP client with 100M+ weekly downloads, to deliver remote access trojans to Linux, Windows, and macOS systems. According to reports from software supply chain security and application security companies Endor Labs, Socket, Aikido, and StepSecurity, the threat actor published on the Node Package Manager (npm) registry two malicious versions of the package One malicious variant, [email protected], was published today at 00:21 UTC, while the second one, [email protected], emerged less than an hour later, at 01:00 UTC. The packages were published without the automated OpenID Connect (OIDC) package origin and no matching GitHub commit appeared, which should trigger an alert immediately. The researchers say that the threat actor gained access to the package after compromising the npm account of Jason Saayman, the main Axios maintainer. The OpenSourceMalware research community says that the attacker also took control of Saayman's GitHub account and changed the associated email to [email protected], then removed a report about the compromise to which project collaborator DigitalBrainJS was trying to reply. It is unclear how many downstream projects have been impacted by the supply-chain attack during the nearly three-hour exposure window. Given that the Axios npm package has around 400 million monthly downloads, the number may be significant. Axios is an HTTP client for JavaScript applications that manages requests between clients, such as browsers or Node.js apps, and servers. Its purpose is to simplify communication via GET, POST, PUT/PATCH, and DELETE requests. Infection chain After getting access to the package, the attacker injected a malicious dependency called plain-crypto-js@^4.2.1 into the package.json file and did not alter the Axios code. The dependency executes a post-install script during the package’s installation, launching an obfuscated dropper (setup.js) that contacts a command-and-control (C2) server to retrieve a next-stage payload based on the detected operating system. On Windows, the attack mixes VBScript and PowerShell to run a hidden Command Prompt window and execute a malicious script. The malware copies PowerShell to %PROGRAMDATA%\wt.exe to evade detection and achieve persistence across reboots, then downloads and executes a PowerShell script. On macOS, the malware uses AppleScript to download a binary to /Library/Caches/com.apple.act.mond, mark it as executable, and run it in the background. On Linux systems, the dropper fetches a Python-based payload stored at ‘/tmp/ld.py’ and executes it in the background with the nohup (no hang up) command. In all cases, the malware infected the host with a remote access trojan (RAT), allowing attackers to execute commands and maintain persistence on infected systems. The RAT can retrieve and execute a base64-encoded binary that it writes in a hidden temp file, execute shell commands via /bin/sh or AppleScript, and enumerate directories on the infected host. After the infection is completed, the dropper deletes itself, removes the modified package.json, and replaces it with a clean copy to make forensic investigations more difficult. According to researchers at StepSecurity, the Axios supply-chain attack was not opportunistic, but a carefully planned activity, as "the malicious dependency was staged 18 hours in advance." The fact that different payloads were delivered based on the detected operating system appears to support this theory, along with the self-destruct action for every artifact. John Hultquist, chief analyst at Google Threat Intelligence Group (GTIG) told BleepingComputer that behind the Axios package compromise is a North Korean actor tracked internally as UNC1069 and known to target "centralized exchanges (CEX), software developers at financial institutions, high-technology companies, and individuals at venture capital funds." A security researcher says that the macWebT name of the macOS RAT is a direct reference to malware used by the BlueNoroff hackers in campaigns observed by SentinelOne in 2023. BlueNoroff is a North Korean threat group specialized in financially-motivated cyberattacks. The actor has targeted banks, financial institutions, and cryptocurrency exchanges. Currently, there is no clear information about the threat actor behind the Axios supply-chain attack. Recently, several high-profile supply-chain attacks were claimed by a group known as TeamPCP. The hackers targeted popular open-source software projects like Telnyx, LiteLLM, and Trivy. However, the compromise of the Axios package does not have the characteristics of a TeamPCP attack, and security researchers couldn’t link it to a specific threat actor. Indicators of compromise (IoCs) are available from multiple organizations investigating the Axios supply-chain compromise and include the C2 domain used in the attack, sfrclak.com and other network details along with file system, packages data, and accounts observed in the attack: Security teams are recommended to check environments for the presence of [email protected], [email protected], or any version of plain-crypto-js and treat the system as compromised if any of them is detected. Axios should resolve to versions 1.14.0 or 0.30.3, or downgraded to an earlier version confirmed to be safe. Joe DeSimone of Elastic advises rotating credentials on systems running a compromised version of the Axios package, as the malware may have exfiltrated sensitive data such as keys and tokens. Charles Carmakal, chief technology officer at Mandiant, says that the Axios npm supply-chain attack "is broad and extends to other popular packages that have dependencies on it." The researcher warns that the amount of recent supply-chain incidents is overwhelming and that the secrets stolen this way over the past two weeks will lead to more compromises, crypto theft, ransomware, and extortion events. "We are aware of hundreds of thousands of stolen credentials. A variety of actors with varied motivations are behind these attacks," Carmakal says. Update [March 31, 13:09 EST]: Article updated with information about indicators of compromise and reference to potential BlueNoroff connection. Update [March 31, 14:22 EST]: Added attribution information and comments from Charles Carmakal and John Hultquist. Overall prevention scores can hide what happens after initial access. Once attackers are using valid credentials, prevention drops sharply. The Blue Report 2026 measures defenses technique by technique across 338 million simulations run in customer production environments. Get the report
bleepingcomputer.comMar 31, 2026extracted
Axios Supply Chain Attack Pushes Cross-Platform RAT via Compromised npm Account
The popular HTTP client known as Axios has suffered a supply chain attack after two newly published versions of the npm package introduced a malicious dependency that delivers a trojan capable of targeting Windows, macOS, and Linux systems. Versions 1.14.1 and 0.30.4 of Axios have been found to inject "plain-crypto-js" version 4.2.1 as a fake dependency. According to StepSecurity, the two versions were published using the compromised npm credentials of the primary Axios maintainer ("jasonsaayman"), allowing the attackers to bypass the project's GitHub Actions CI/CD pipeline. "Its sole purpose is to execute a postinstall script that acts as a cross-platform remote access trojan (RAT) dropper, targeting macOS, Windows, and Linux," security researcher Ashish Kurmi said. "The dropper contacts a live command and control server and delivers platform-specific second-stage payloads. After execution, the malware deletes itself and replaces its own package.json with a clean version to evade forensic detection." Users who have Axios versions 1.14.1 or 0.30.4 installed are required to rotate their secrets and credentials with immediate effect, and downgrade to a safe version (1.14.0 or 0.30.3). The malicious versions, as well as "plain-crypto-js," are no longer available for download from npm. With more than 83 million weekly downloads, Axios is one of the most widely used HTTP clients in the JavaScript ecosystem across frontend frameworks, backend services, and enterprise applications. "This was not opportunistic," Kurmi added. "The malicious dependency was staged 18 hours in advance. Three separate payloads were pre-built for three operating systems. Both release branches were hit within 39 minutes. Every trace was designed to self-destruct." The timeline of the attack is as follows - March 30, 2026, 05:57 UTC - A clean version of the package "[email protected]" is published. March 30, 2026, 23:59 UTC - A new version ("[email protected]") with the payload added is published. March 31, 2026, 00:21 UTC - A new version of Axios ("[email protected]") that injects "[email protected]" as a runtime dependency is published using the compromised "jasonsaayman" account. March 31, 2026, 01:00 UTC - A new version of Axios ("[email protected]") that injects "[email protected]" as a runtime dependency is published using the compromised "jasonsaayman" account. According to StepSecurity, the threat actor behind the campaign is said to have compromised the npm account of "jasonsaayman" and changed its registered email address to a Proton Mail address under their control ("[email protected]"). The "plain-crypto-js" was published by an npm user named "nrwise" with the email address "[email protected]." It's believed that the attacker obtained a long-lived classic npm access token for the account to take control and directly publish poisoned versions of Axios to the registry. The embedded malware, for its part, is launched via an obfuscated Node.js dropper ("setup.js") and is designed to branch into one of three attack paths based on the operating system - On macOS, it runs an AppleScript payload to fetch a trojan binary from an external server ("sfrclak.com:8000"), save it as "/Library/Caches/com.apple.act.mond," change its permissions to make it executable, and launch it in the background via /bin/zsh. The AppleScript file is deleted after execution to cover up the tracks. On Windows, it locates the PowerShell binary path, copies it to the "%PROGRAMDATA%\wt.exe" (disguising it as the Windows Terminal app), and writes a Visual Basic Script (VBScript) to the temp directory and executes it. The VBScript contacts the same server to fetch a PowerShell RAT script and execute it. The downloaded file is then deleted. On other platforms (e.g., Linux), the dropper runs a shell command via Node.js’s execSync to fetch a Python RAT script from the same server, save it to "/tmp/ld.py," and execute it in the background using the nohup command. "Each platform sends a distinct POST body to the same C2 URL — packages.npm.org/product0 (macOS), packages.npm.org/product1 (Windows), packages.npm.org/product2 (Linux)," StepSecurity said. "This allows the C2 server to serve a platform-appropriate payload in response to a single endpoint." The downloaded second-stage binary for macOS is a C++ RAT that fingerprints the system and beacons to a remote server every 60 seconds to retrieve commands for subsequent execution. It supports capabilities to run additional payloads, execute shell commands, enumerate the file system, and terminate the RAT. SafeDep's analysis of the Linux RAT has revealed that it supports the same commands as its macOS counterpart. The absence of a persistence mechanism means that the malware does not survive across reboots. This indicates that the attack is either geared towards quick data exfiltration or leverages the RAT's ability to run binaries and shell commands to deploy persistence. "The attack is notable for its restraint. No Axios source files were modified, making traditional diff-based code review less likely to catch it," SafeDep said. "The malicious behavior lives entirely in a transitive dependency, triggered automatically by npm's postinstall lifecycle." The PowerShell RAT targeting Windows is no different in that it also facilitates the same functionality to execute arbitrary DLLs in memory, run PowerShell commands, list directories with file metadata, and gracefully kill itself. Unlike the macOS and Linux variants, the RAT creates "%PROGRAMDATA%\system.bat" with a download cradle that re-fetches the malware from the server on every login and adds a Registry Run key pointing to the batch script. "On every compromised host, the RAT performed immediate system reconnaissance: enumerating user directories, filesystem drive roots, and running processes, and transmitted this data to the C2," Huntress researcher John Hammond said. "The RAT maintained a 60-second beacon loop, ready to accept further commands including arbitrary script execution and in-memory binary injection." As Elastic Security Labs pointed out, the attack makes use of three parallel implementations of the same RAT – PowerShell for Windows, compiled C++ for macOS, Python for Linux – that shares an identical C2 protocol, command set, message format, and operational behavior. "The consistency strongly indicates a single developer or tightly coordinated team working from a shared design document," the company said. Once the main payload is launched, the Node.js malware also takes steps to perform three forensic cleanup steps by removing the postinstall script from the installed package directory, deleting the "package.json" the references the postinstall hook to launch the dropper, and renaming "package.md" to "package.json." It's worth noting that the "package.md" file is included in "plain-crypto-js" and is a clean "package.json" manifest without the postinstall hook that triggers the entire attack. In switching the package manifests, the idea is to avoid raising any red flags during post-infection inspection of the package. "Neither malicious version contains a single line of malicious code inside Axios itself," StepSecurity said. "Instead, both inject a fake dependency, [email protected], a package that is never imported anywhere in the Axios source, whose only purpose is to run a postinstall script that deploys a cross-platform remote access trojan (RAT)." It's currently not known who is behind the supply chain compromise, but Elastic said the macOS Mach-O binary delivered by the "plain-crypto-js" postinstall hook exhibits significant overlap with WAVESHAPER, a C++ backdoor tracked by Google-owned Mandiant last month and attributed to a North Korean threat actor known as UNC1069. Users are advised to perform the following actions to ascertain compromise - Check for the malicious Axios versions. Check for RAT artifacts: "/Library/Caches/com.apple.act.mond" (macOS), "%PROGRAMDATA%\wt.exe" (Windows), and "/tmp/ld.py" (Linux). Downgrade to Axios versions 1.14.0 or 0.30.3. Remove "plain-crypto-js" from the "node_modules" directory. If RAT artifacts are detected, assume compromise and rotate all credentials on the system. Audit CI/CD pipelines for runs that installed the affected versions. Block egress traffic to the command-and-control domain ("sfrclak[.]com") Socket, in its own analysis of the attack, said identified two additional packages distributing the same malware through vendored dependencies - @shadanai/openclaw (versions 2026.3.28-2, 2026.3.28-3, 2026.3.31-1, and 2026.3.31-2) @qqbrowser/openclaw-qbot (version 0.0.130) In the case of "@shadanai/openclaw," the package vendors the malicious "plain-crypto-js" payload directly (e.g., @shadanai/openclaw/files/2026.3.31-1/dist/extensions/slack/node_modules/plain-crypto-js/setup.js). On the other hand, "@qqbrowser/[email protected]," ships a tampered "[email protected]" in its "node_modules/" folder with "plain-crypto-js" injected as a dependency. "The real axios has only three dependencies (follow-redirects, form-data, proxy-from-env)," the supply chain security company said. "The addition of plain-crypto-js is unambiguous tampering. When npm processes this vendored axios, it installs plain-crypto-js and triggers the same malicious postinstall chain."
thehackernews.comMar 31, 2026extracted
TeamPCP Pushes Malicious Telnyx Versions to PyPI, Hides Stealer in WAV Files
TeamPCP, the threat actor behind the supply chain attack targeting Trivy, KICS, and litellm, has now compromised the telnyx Python package by pushing two malicious versions to steal sensitive data. The two versions, 4.87.1 and 4.87.2, published to the Python Package Index (PyPI) repository on March 27, 2026, concealed their credential harvesting capabilities within a .WAV file. Users are recommended to downgrade to version 4.87.0 immediately. The PyPI project is currently quarantined. Various reports from Aikido, Endor Labs, JFrog, Ossprey Security, SafeDep, Socket, and StepSecurity indicate the malicious code is injected into "telnyx/_client.py," causing it to be invoked when the package is imported into a Python application. The malware is designed to target Windows, Linux, and macOS systems. "Our analysis reveals a three-stage runtime attack chain on Linux/macOS consisting of delivery via audio steganography, in-memory execution of a data harvester, and encrypted exfiltration," Socket said. "The entire chain is designed to operate within a self-destructing temporary directory and leave near-zero forensic artifacts on the host." On Windows, the malware downloads a file named "hangup.wav" from a command-and-control (C2) server and extracts from the audio data an executable that's then dropped into the Startup folder as "msbuild.exe." This allows it to persist across system reboots and automatically run every time a user logs in to the system. In case the compromised host runs on Linux or macOS, it fetches a different .WAV file ("ringtone.wav") from the same server to extract a third-stage collector script and run. The credential harvester is designed to capture a wide range of sensitive data and exfiltrate the data in the form of "tpcp.tar.gz" via an HTTP POST request to "83.142.209[.]203:8080." "The standout technique in this sample - and the reason for the post title - is the use of audio steganography to deliver the final payload," Ossprey Security said. "Rather than hosting a raw executable or a base64 blob on the C2 (both of which are trivially flagged by network inspection and EDR), the attacker wraps the payload inside a .WAV file." "This is almost identical to the sample observed in the LiteLLM malware, with one key difference: instead of embedding the malicious code as Base64, they now download it from a remote server," OX Security's Moshe Siman Tov Bustan said. "The malware downloads an XOR-obfuscated WAV file from a remote C2 server, decodes it, and then executes it on the target machine." It's worth noting that the .WAV trick isn't new to TeamPCP. The same methodology was previously used to conceal the malicious payload in the "kamikaze" wiper malware distributed via CanisterWorm and exposed Docker instances. In addition, the malware features a Kubernetes lateral movement component that abuses Kubernetes service account tokens to deploy a privileged pod to every node and deploy a persistence mechanism. It's currently not known how the package's PYPI_TOKEN was obtained by TeamPCP, but it's likely that it was through a prior credential harvesting operation. "We believe the most likely vector is the litellm compromise itself," Endor Labs researchers Kiran Raj and Rachana Misal said. "TeamPCP's harvester swept environment variables, .env files, and shell histories from every system that imported litellm. If any developer or CI pipeline had both litellm installed and access to the telnyx PyPI token, that token was already in TeamPCP's hands." In a security notice shared on its website, the maintainers of the Python package said both unauthorized versions have been removed from PyPI and that users are likely to be affected if they installed or upgraded the library between 03:51 UTC and 10:13 UTC on March 27, 2026. Telnyx said it's also investigating how the publishing credentials were obtained by the threat actors. What's notable about the attack is the absence of a persistence mechanism in Linux and macOS and the use of a temporary directory to conduct the malicious actions and recursively delete all its contents once everything is complete. "The strategic split is clear. Windows gets persistence: a binary in the Startup folder that survives reboots, providing the threat actor with long-term, repeatable access," Socket explained. "Linux/macOS gets smash-and-grab: a single, high-speed data harvesting operation that collects everything of value and exfiltrates it immediately, then vanishes." The development comes a few days after the threat actor distributed trojanized versions of the popular litellm Python package to exfiltrate cloud credentials, CI/CD secrets, and keys to a domain under its control. The supply chain incident also reflects a new-found maturation, where the threat actor has consistently infected legitimate, trusted packages with massive user bases to distribute malware to downstream users and widen blast radius, rather than directly publishing malicious typosquats to open-source package repositories. "The target selection across this campaign focuses on tools with elevated access to automated pipelines: a container scanner (Trivy), an infrastructure scanning tool (KICS), and an AI model routing library (litellm)," Snyk said. "Each of these tools requires broad read access to the systems it operates on (credentials, configs, environment variables) by design." To mitigate the threat, developers are advised to perform the following actions - Audit Python environments and requirements.txt files for telnyx==4.87.1 or telnyx==4.87.2. If found, replace them with a clean version. Assume compromise and rotate all secrets. Look for a file named "msbuild.exe" in the Windows Startup folder. Block the C2 and exfiltration domain ("83.142.209[.]203"). The compromise is part of a broader, ongoing campaign undertaken by TeamPCP spanning multiple ecosystems, with the threat actor announcing collaborations with other cybercriminal groups like LAPSUS$ and an emerging ransomware group called Vect to conduct extortion and ransomware operations. "Supposedly, the group harvested a ton of credentials over the course of the last few attacks, and teaming up allows scaling/accelerating their (ab)use before all the victims completed remediation," Henrik Plate, head of security research at Endor Labs, told The Hacker news. "Depending on the credentials, 'downstream threat actors' will continue according to their focus, e.g., ransomware attacks." This also signals a shift where ransomware gangs, which have historically focused on initial access methods like phishing and exploitation of security flaws, are now weaponizing supply chain attacks targeting the open source infrastructure as an entry point for follow-on attacks. "This puts a spotlight on anything in CI/CD environments that isn’t locked down," Socket said. "Security scanners, IDE extensions, build tooling, and execution environments are granted broad access because they’re expected to need it. When attackers are targeting the tools themselves, anything running in the pipeline has to be treated as a potential entry point."
thehackernews.comMar 27, 2026extracted
GlassWorm Attack Uses Stolen GitHub Tokens to Force-Push Malware Into Python Repos
The GlassWorm malware campaign is being used to fuel an ongoing attack that leverages the stolen GitHub tokens to inject malware into hundreds of Python repositories. "The attack targets Python projects — including Django apps, ML research code, Streamlit dashboards, and PyPI packages — by appending obfuscated code to files like setup.py, main.py, and app.py," StepSecurity said. "Anyone who runs pip install from a compromised repo or clones and executes the code will trigger the malware." According to the software supply chain security company, the earliest injections date back to March 8, 2026. The attackers, upon gaining access to the developer accounts, rebasing the latest legitimate commits on the default branch of the targeted repositories with malicious code, and then force-pushing the changes, while keeping the original commit's message, author, and author date intact. This new offshoot of the GlassWorm campaign has been codenamed ForceMemo. The attack plays out via the following four steps - Compromise developer systems with GlassWorm malware through malicious VS Code and Cursor extensions. The malware contains a dedicated component to steal secrets, such as GitHub tokens. Use the stolen credentials to force-push malicious changes to every repository managed by the breached GitHub account by rebasing obfuscated malware to Python files named "setup.py," "main.py," or "app.py." The Base64-encoded payload, appended to the end of the Python file, features GlassWorm-like checks to determine if the system has its locale set to Russian. If so, it skips execution. In all other cases, the malware queries the transaction memo field associated with a Solana wallet ("BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC") previously linked to GlassWorm to extract the payload URL. Download additional payloads from the server, including encrypted JavaScript that's designed to steal cryptocurrency and data. "The earliest transaction on the C2 address dates to November 27, 2025 -- over three months before the first GitHub repo injections on March 8, 2026," StepSecurity said. "The address has 50 transactions total, with the attacker regularly updating the payload URL, sometimes multiple times per day." The disclosure comes as Socket flagged a new iteration of the GlassWorm that technically retains the same core tradecraft while improving survivability and evasion by leveraging extensionPack and extensionDependencies to deliver the malicious payload by means of a transitive distribution model. In tandem, Aikido Security also attributed the GlassWorm author to a mass campaign that compromised more than 151 GitHub repositories with malicious code concealed using invisible Unicode characters. Interestingly, the decoded payload is configured to fetch the C2 instructions from the same Solana wallet, indicating that the threat actor has been targeting GitHub repositories in multiple waves. The use of different delivery methods and code obfuscation methods, but the same Solana infrastructure, suggests ForceMemo is a new delivery vector maintained and operated by the GlassWorm threat actor, who has now expanded from compromising VS Code extensions to a broader GitHub account takeover. "The attacker injects malware by force-pushing to the default branch of compromised repositories," StepSecurity noted. "This technique rewrites git history, preserves the original commit message and author, and leaves no pull request or commit trail in GitHub's UI. No other documented supply chain campaign uses this injection method." Update Two React Native npm packages – react-native-international-phone-number and react-native-country-select – maintained by npm user "astroonauta" were briefly compromised to directly push malicious versions to the registry without a corresponding GitHub release. The activity is assessed to be part of the ForceMemo campaign. react-native-international-phone-number - 0.11.8 react-native-country-select - 0.3.91 The rogue versions, detected on March 16, 2026, have been found to contain a preinstall hook that invokes obfuscated JavaScript to initiate a series of actions: skip Russian victims by inspecting environment variables and operating system time zone, reaches out to a hard-coded Solana wallet ("6YGcuyFRJKZtcaYCCFba9fScNUvPkGXodXE1mJiSzqDJ") – also linked to GlassWorm – to extract the payload URL and deliver platform-specific malware. "The decrypted payload is executed entirely in memory, never written to disk, via eval() on macOS/Linux or a Node.js vm.Script sandbox on other platforms," StepSecurity said. "A persistence lock is written to ~/init.json with the current timestamp; the malware will not re-execute within a 48-hour window on the same machine." In a follow-up analysis, OpenSourceMalware said more than 433 projects and packages have been affected across GitHub Python repositories, GitHub JavaScript repositories, VS Code extensions, and npm libraries. All these attacks lead to the execution of the same final payload, an information stealer written in JavaScript. GlassWorm Goes After Windsurf Users In what appears to be a further broadening of the GlassWorm campaign, Bitdefender said it detected a malicious extension named "reditorsupporter.r-vscode-2.8.8-universal" targeting the Windsurf IDE that deploys a JavaScript stealer based on Node.js by leveraging the Solana blockchain as a dead drop resolver. "The extension, disguised as an R language support extension for Visual Studio Code, retrieves encrypted JavaScript from blockchain transactions, executes it using NodeJS runtime primitives, drops compiled add-ons to extract Chromium data, all the while establishing persistence with the help of a hidden PowerShell scheduled task," Bitdefender said. Once installed, the extension specifically excludes Russian systems and targets developer environments for information theft. The malware is equipped to steal sensitive data from Chromium-based web browsers, establish persistence using scheduled tasks, and automatically run after system startup by configuring a Windows Registry Run key. In a statement shared with The Hacker News, Bitdefender said the newly identified extension is using the "same tactics" as those employed by the threat actors behind GlassWorm. The Romanian cybersecurity company also noted that the piece of code that's used to check if the system has a Russian locale is similar to what's present in "dark-code-studio.flutter-extension," one of the 72 extensions that was flagged by Socket last week as part of a new GlassWorm campaign. Sleeper Extensions Fetch GitHub-Hosted VSIX Malware Socket has since detected over 20 additional malicious extensions, along with about 20 related sleeper extensions as part of the same campaign, underscoring the threat actors' continued efforts to refine their modus operandi. Analysis shows that two of the sleeper extensions ("lauracode.wrap-selected-code" and "96-studio.json-formatter") were published on March 12, 2026, without any malicious functionality, but were updated six days later with a loader component that runs on extension load, enumerates locally installed IDEs, and retrieves a follow-on VSIX file from a hard-coded GitHub release path. The downloaded VSIX file ("autoimport-smart-tool-2.5.8.vsix") is a trojanized clone of the popular Auto Import extension, which is designed to perform a Russian geofence check, establish persistence, and parse a transaction on the Solana blockchain to extract a URL. The URL is used to fetch the next-stage payload based on the operating system and execute it. "This is a significant evasion upgrade: it does not depend on any Open VSX-hosted dependency," Socket researchers Philipp Burckhardt and Peter van der Zee said. "Instead, the malicious payload lives on GitHub infrastructure. This is the first time in the GlassWorm campaign that the payload has been delivered from outside the Open VSX registry, moving the malicious binary out of reach of the Eclipse Foundation's takedown process." (The story was updated after publication to include additional details of the campaign.)
thehackernews.comMar 16, 2026extracted
ForceMemo: Python Repositories Compromised in GlassWorm Aftermath
Threat actors have been abusing credentials stolen in the VS Code GlassWorm campaign to hack GitHub accounts and inject malware into Python repositories, StepSecurity reports. The campaign likely started on March 8, targeting Python projects such as Django apps, ML research code, PyPI packages, and Streamlit dashboards. The purpose of the attacks is likely the theft of cryptocurrency and sensitive information. Using compromised developer credentials, the threat actors have been rebasing the latest legitimate commits on the default branch of repositories, adding obfuscated malicious code, and then force-pushing the commits. The malware injection method used in this campaign, which StepSecurity dubbed ForceMemo, leaves fewer traces of compromise, as both the commit message and author date remain unchanged from the original commit, and only the committer date is modified. “The evidence for account-level compromise is clear: when an account with multiple repositories is taken, every repo under that account gets injected,” StepSecurity notes. During execution, the injected code performs system checks and skips machines that have the language set to Russian, which points to an Eastern European cybercrime operation. The malware queries a specific Solana blockchain address for specific transaction memos to read instructions. Based on these instructions, it proceeds to fetch an encrypted JavaScript payload, decrypts and executes it, and creates persistence. The threat actor behind the ForceMemo campaign has the private key for the cryptocurrency address the malware connects to and uses Solana’s Memo program to post instructions. The earliest transaction on the address was recorded on November 27, 2025, more than three months before the current campaign started. “The address has 50 transactions total, with the attacker regularly updating the payload URL, sometimes multiple times per day. This suggests the attacker was targeting other infection vectors before pivoting to GitHub repos,” StepSecurity notes. According to the cybersecurity firm, hundreds of Python repositories across hundreds of GitHub accounts have been compromised in the ForceMemo campaign. The GlassWorm malware The GlassWorm malware, named this way because it was using Unicode variation selectors to make its code invisible to the human eye and avoid detection, was designed to steal sensitive information such as NPM, GitHub, and Git credentials, as well as cryptocurrency assets. In addition to information-stealing capabilities, the malware could deploy SOCKS proxy servers and provide threat actors with remote access to the victims’ systems via hidden VNC servers. GlassWorm initially emerged in October 2025 in a supply chain attack targeting Visual Studio developers via the OpenVSX marketplace and was likely downloaded over 35,000 times. The attack was fully contained within three days. A second iteration of the malware was observed in November, when it infected three VS Code extensions with a combined download count of roughly 10,000. Given that VS Code extensions auto-update, the malware likely infected all users without their knowledge. In late January 2026, another GlassWorm attack was observed, after a threat actor compromised a developer’s account and published malicious versions of four extensions that had a combined download count of over 22,000. Fresh GlassWorm campaigns, transitive extensions Now, both Aikido and Socket warn that GlassWorm is once again actively compromising VS Code extensions, while also focusing on NPM and GitHub. According to Aikido, roughly 150 GitHub repositories were compromised in fresh GlassWorm attacks between March 3 and March 9. “The campaign has also expanded beyond GitHub. We are now seeing the same technique deployed in NPM and the VS Code marketplace, suggesting GlassWorm is operating a coordinated, multi-ecosystem push,” the security firm notes. The fresh GlassWorm attacks targeting the Open VSX marketplace show a major shift: the threat actors no longer embed the malware directly into the listings, but use “initially standalone-looking extensions into transitive delivery vehicles”, Socket says. Specifically, the attackers abuse two manifest fields that allow extensions to automatically pull other extensions to turn seemingly benign extensions into installers for malicious ones. The attackers can update any extension they control to add these manifest fields and include instructions to install malicious extensions. “Rather than embedding the GlassWorm loader in every malicious listing, the threat actor can publish an extension that appears benign and later cause the editor to install a separate GlassWorm-linked extension,” Socket explains. The cybersecurity firm identified over 70 extensions associated with this campaign, most of which had been removed from the Open VSX registry as of March 13. The extensions were impersonating popular utilities, code runners, language tools, and quality-of-life extensions. AI developers were also targeted in this campaign. Related: Over 100 GitHub Repositories Distributing BoryptGrab Stealer Related: GitHub Issues Abused in Copilot Attack Leading to Repository Takeover Related: VS Code Configs Expose GitHub Codespaces to Attacks
securityweek.comMar 16, 2026extracted
Five Malicious Rust Crates and AI Bot Exploit CI/CD Pipelines to Steal Developer Secrets
Cybersecurity researchers have discovered five malicious Rust crates that masquerade as time-related utilities to transmit .env file data to the threat actors. The Rust packages, published to crates.io, are listed below - chrono_anchor dnp3times time_calibrator time_calibrators time-sync The crates, per Socket, impersonate timeapi.io and were published between late February and early March 2026. It's assessed to be the work of a single threat actor based on the use of the same exfiltration methodology and the lookalike domain ("timeapis[.]io") to stash the stolen data. "Although the crates pose as local time utilities, their core behavior is credential and secret theft," security researcher Kirill Boychenko said. "They attempt to collect sensitive data from developer environments, most notably .env files, and exfiltrate it to threat actor-controlled infrastructure." While four of the aforementioned packages exhibit fairly straightforward capabilities to exfiltrate .env files, "chrono_anchor" goes a step further by implementing obfuscation and operational changes so as to avoid detection. The crates were advertised as a way to calibrate local time without relying on the Network Time Protocol (NTP). "Chrono_anchor" incorporates the exfiltration logic within a file named "guard.rs" that's invoked from an "optional sync" helper function so as to avoid raising developer suspicions. Unlike other malware, the code observed in this case does not aim to set up persistence on the host through a service or scheduled task. Instead, the crate attempts to repeatedly exfiltrate .env secrets every time the developer of a Continuous Integration (CI) workflow calls the malicious code. The targeting of .env files is no accident, as it's typically used to hold API keys, tokens, and other secrets, allowing an attacker to compromise downstream users and gain deeper access to their environments, including cloud services, databases, and GitHub and registry tokens. While the packages have since been removed from crates.io, users who may have accidentally downloaded them are advised to assume possible exfiltration, rotate keys and tokens, audit CI/CD jobs that run with publish or deploy credentials, and limit outbound network access where possible. "This campaign shows that low-complexity supply chain malware can still deliver high-impact when it runs inside developer workspaces and CI jobs," Socket said. "Prioritize controls that stop malicious dependencies before they execute." AI-Powered Bot Exploits GitHub Actions The disclosure follows the discovery of an automated attack campaign that targeted CI/CD pipelines spanning major open-source repositories, with an artificial intelligence (AI)-powered bot called hackerbot-claw scanning public repositories for exploitable GitHub Actions workflows to harvest developer secrets. Between February 21 and February 28, 2026, the GitHub account, which described itself as an autonomous security research agent, targeted no less than seven repositories belonging to Microsoft, Datadog, and Aqua Security, among others. The attack unfolds as follows - Scan public repositories for misconfigured CI/CD pipelines Fork target repository and ready a malicious payload Open a pull request with a trivial change such as a typo fix, while concealing the main payload in the branch name, file name, or a CI script Trigger the CI pipeline by taking advantage of the fact that workflows are automatically activated on every pull request, causing the malicious code to be executed on the build server Steal secrets and access tokens One of the highest-profile targets of the attack was the repository "aquasecurity/trivy," a popular security scanner from Aqua Security that searches for known vulnerabilities, misconfigurations, and secrets. "Hackerbot-claw exploited a pull_request_target workflow to steal a Personal Access Token (PAT)," supply chain security company StepSecurity said. "The stolen credential was then used to take over the repository." In a statement issued last week, Aqua Security's Itay Shakury revealed that the attacker leveraged the GitHub Actions workflow to push a malicious version of Trivy's Visual Studio Code (VS Code) extension to the Open VSX registry to leverage local AI coding agents to collect and exfiltrate sensitive information. Socket, which also investigated the extension compromise, said the injected logic in versions 1.8.12 and 1.8.13 executes local AI coding assistants, including Claude, Codex, Gemini, GitHub Copilot CLI, and Kiro CLI, in highly permissive modes, instructing them to perform extensive system inspection, generate a report of discovered information, and save the results to a GitHub repository named "posture-report-trivy" using the victim's own authenticated GitHub CLI session. Aqua has since removed the artifacts from the marketplace and revoked the token used to publish them. Users who installed the extensions are advised to immediately remove them, check for the presence of unexpected repositories, and rotate environment secrets. The malicious artifact has been removed. No other affected artifacts have been identified. The incident is being tracked under the CVE identifier CVE-2026-28353. It's worth pointing out that for a system to be impacted by the issue, the following prerequisites need to be fulfilled - Version 1.8.12 or 1.8.13 was installed from Open VSX At least one of the targeted AI coding CLIs was installed locally The CLI accepted the permissive execution flags provided The agent was able to access sensitive data on disk The GitHub CLI was installed and authenticated (for version 1.8.13) "The progression from .12 to .13 looks like iteration," Socket said. "The first prompt scatters data across random channels with no reliable way for the attacker to collect the output. The second fixes that problem by using the victim's own GitHub account as a clean exfiltration channel, but its vague instructions might cause the agent to push secrets to a private repo the attacker can't see." Pillar Security has assessed hackerbot-claw to be a human operator using a large language model (LLM) as an execution layer. It's tracking the activity under the moniker Chaos Agent. The campaign demonstrates "an AI-augmented attacker exploiting CI/CD misconfigurations at speed," security researcher Eilon Cohen said, adding the supply chain compromise of the Trivy VS Code extension marks the abuse of AI coding agents for data exfiltration. "The hackerbot-claw campaign exploited a gap that most organizations don't even know exists: zero visibility into AI coding agents running on developer machines, and no runtime controls when those agents are weaponized."
thehackernews.comMar 11, 2026extracted
Cline CLI 2.3.0 Supply Chain Attack Installed OpenClaw on Developer Systems
In yet another software supply chain attack, the open-source, artificial intelligence (AI)-powered coding assistant Cline CLI was updated to stealthily install OpenClaw, a self-hosted autonomous AI agent that has become exceedingly popular in the past few months. "On February 17, 2026, at 3:26 AM PT, an unauthorized party used a compromised npm publish token to publish an update to Cline CLI on the NPM registry: [email protected]," the maintainers of the Cline package said in an advisory. "The published package contains a modified package.json with an added postinstall script: 'postinstall": "npm install -g openclaw@latest.'" As a result, this causes OpenClaw to be installed on the developer's machine when Cline version 2.3.0 is installed. Cline said no additional modifications were introduced to the package and there was no malicious behavior observed. However, it noted that the installation of OpenClaw was not authorized or intended. The supply chain attack affects all users who installed the Cline CLI package published on npm, specifically version 2.3.0, during an approximately eight-hour window between 3:26 a.m. PT and 11:30 a.m. PT on February 17, 2026. The incident does not impact Cline's Visual Studio Code (VS Code) extension and JetBrains plugin. To mitigate the unauthorized publication, Cline maintainers have released version 2.4.0. Version 2.3.0 has since been deprecated and the compromised token has been revoked. Cline also said the npm publishing mechanism has been updated to support OpenID Connect (OIDC) via GitHub Actions. In a post on X, the Microsoft Threat Intelligence team said it observed a "small but noticeable uptick" in OpenClaw installations on February 17, 2026, as a result of the supply chain compromise of the Cline CLI package. According to StepSecurity, the compromised Cline package was downloaded roughly 4,000 times during the eight-hour stretch. Users are advised to update to the latest version, check their environment for any unexpected installation of OpenClaw, and remove it if not required. "Overall impact is considered low, despite high download counts: OpenClaw itself is not malicious, and the installation does not include the installation/start of the Gateway daemon," Endor Labs researcher Henrik Plate said. "Still, this event emphasizes the need for package maintainers to not only enable trusted publishing, but also disable publication through traditional tokens – and for package users to pay attention to the presence (and sudden absence) of corresponding attestations." Leveraging Clinejection to Leak Publication Secrets While it's currently not clear who is behind the breach of the npm package and what their end goals were, it comes after security researcher Adnan Khan discovered that attackers could steal the repository's authentication tokens through prompt injection by taking advantage of the fact that it is configured to automatically triage any incoming issue raised on GitHub. "When a new issue is opened, the workflow spins up Claude with access to the repository and a broad set of tools to analyze and respond to the issue," Khan explained. "The intent: automate first-response to reduce maintainer burden." But a misconfiguration in the workflow meant that it gave Claude excessive permissions to achieve arbitrary code execution within the default branch. This aspect, combined with a prompt injection embedded within the GitHub issue title, could be exploited by an attacker with a GitHub account to trick the AI agent into running arbitrary commands and compromise production releases. This shortcoming, which builds upon PromptPwnd, has been codenamed Clinejection. It was introduced in a source code commit made on December 21, 2025. The attack chain is outlined below - Prompt Claude to run arbitrary code in issue triage workflow Evict legitimate cache entries by filling the cache with more than 10GB of junk data, triggering GitHub's Least Recently Used (LRU) cache eviction policy Set poisoned cache entries matching the nightly release workflow's cache keys Wait for the nightly publish to run at around 2 a.m. UTC and trigger on the poisoned cache entry "This would allow an attacker to obtain code execution in the nightly workflow and steal the publication secrets," Khan noted. "If a threat actor were to obtain the production publish tokens, the result would be a devastating supply chain attack." "A malicious update pushed through compromised publication credentials would execute in the context of every developer who has the extension installed and set to update automatically." In other words, the attack sequence employs GitHub Actions cache poisoning to pivot from the triage workflow to a highly privileged workflow, such as the Publish Nightly Release and Publish NPM Nightly workflows, and steal the nightly publication credentials, which have the same access as those used for production releases. As it turns out, this is exactly what happened, with the unknown threat actor weaponizing an active npm publish token (referred to as NPM_RELEASE_TOKEN or NPM_TOKEN) to authenticate with the Node.js registry and publish Cline version 2.3.0. "We have been talking about AI supply chain security in theoretical terms for too long, and this week it became an operational reality," Chris Hughes, VP of Security Strategy at Zenity, said in a statement shared with The Hacker News. "When a single issue title can influence an automated build pipeline and affect a published release, the risk is no longer theoretical. The industry needs to start recognizing AI agents as privileged actors that require governance."
thehackernews.comFeb 20, 2026extracted
Self-replicating worm hits 180+ npm packages in (largely) automated supply chain attack
Self-replicating worm hits 180+ npm packages in (largely) automated supply chain attack A potentially monumental supply chain attack is underway, thanks to a self-replicating worm-like payload that has been compromising packages published on the npm Registry. The worm has been dubbed “Shai-hulud” as it steals credentials from victims who run a compromised package and publishes them in a public GitHub repository which contains the name. The worm also uses npm authentication tokens stolen from the victims to perpetuate the cycle of infection and compromise, and compromised GitHub tokens to exfiltrate authentication secrets and makes private repositories public. About npm and npm tokens Npm is a package manager for the JavaScript programming language and an online repository (at npmjs.com) that hosts millions of JavaScript and Node.js packages. Most npm packages are built from GitHub repositories. Since npm Inc’s acquisition by GitHub in 2020, the repository is effectively operated under GitHub’s umbrella. Developers log into npmjs.com with GitHub, then generate an npm access token that is used to publish upload new package versions on the npm Registry. Those tokens are stored locally (on a developer’s machine) or in CI/CD systems (e.g., GitHub Actions). The Shai-Hulud worm “The Shai-hulud worm itself is a 3MB+ behemoth of JavaScript. However, what it does is pretty straight forward,” Karlo Zanki, a reverse engineer at ReversingLabs explained. “After an npm developer account is compromised, the worm looks for other packages the developer maintains. It then creates a new version of each of those packages by injecting itself into them. Each newly created package is modified with a postinstall action that will execute the malicious bundle.js when an unsuspecting user downloads the compromised package. This is repeated in perpetuity as the worm finds new developers to infect, and then uses them to spread even further.” The worm also uses TruffleHog, a legitimate scanning tool, to search for GitHub personal access tokens, AWS access keys, Google Cloud Platform service credentials, Azure credentials, and NPM authentication tokens. The malicious script validates collected credentials and, if it finds GitHub tokens, it uses them to create a public repository named Shai-Hulud, where it uploads the harvested, double–base64 encoded secrets via the GitHub /user/repos API. “It [also] pushes a new GitHub Actions workflow to all accessible repositories. This action exfiltrates each repo’s secrets to [a webhook.site URL used by the attacker],” Wiz researchers added. Finally, it will go through the victims’ GitHub account, turn any private repository public, add a -migration suffix to their name and change their description to “Shai-Hulud Migration.” Private repositories turned public by the worm (Source: Aikido Security) S1ngularity attack was a prelude to Shai-Hulud? StepSecurity has an up-to-date list of affected packages, though their number is seemingly rising by the hour. (So far we are at 187 confirmed.) ReversingLabs believes the first package to have been infected was rxnt-authentication. “The malicious version of that package, 0.0.3, was published on September 14th at 17:58:50 UTC. As a result, the npm maintainer techsupportrxnt can be considered Patient 0 for this campaign,” the company shared. Aikido researcher Charlie Eriksen says that one of the most striking features of this attack is that it behaves like a true worm. “The attacker doesn’t need to manually target packages. Once a single environment is compromised, the worm automates the spread by piggybacking on the maintainer’s own publishing rights,” he noted. Who is behind this attack is currently unknown, though the similarities between this attack and the August 2025 “S1ngularity” attack, which served malicious versions of the Nx build system package on the npm registry, are too many to ignore. In both cases, the attackers: Exfiltrated stolen data to public repositories within victims’ GitHub accounts Used compromised GitHub tokens to make victim’s private repositories public Targeted only developers using Linux or macOS More recently, the npm ecosystem was also shaken by a supply chain compromise involving 18 widely used npm packages getting injected with crypto-stealing code and uploaded to the npm Registry. Subscribe to our breaking news e-mail alert to never miss out on the latest breaches, vulnerabilities and cybersecurity threats. Subscribe here!
helpnetsecurity.comSep 16, 2025extracted
Npm Package Hijacked to Steal Data and Crypto via AI-Powered Malware
A threat actor released malicious updates on the npm package repository for components of a tool popular among developers intending to steal cryptocurrencies and key developer data. According to a report by StepSecurity, the attack started in the morning of August 26, when version 21.5.0 of Nx was released to the npm registry. Nx is an open-source build platform widely used by developers to automate and streamline code testing, building and deployment workflows. Version 21.5.0 of Nx was compromised with data-stealing malware. Seven other versions of Nx that were released over the next hours and the next day were also infected. AI-Assisted Attack: Nx Infections Leak Secrets via Victim-Owned Repos The compromised Nx versions included a malicious script designed to exploit local AI command-line interface (CLI) tools, which used large language models, such as Anthropic’s Claude, Google’s Gemini and the Amazon Q coding assistant, by injecting a crafted prompt that forced these agents to scan the infected system for sensitive files. The targets included GitHub and npm tokens, SSH keys, environment variable secrets (like .env files) and cryptocurrency wallet data. Once collected, the stolen information was encoded and saved into a single file. The script then abused the GitHub application programming interface (API) to automatically create a new public repository under the victim’s own account using the naming pattern “s1ngularity-repository-“ where the stolen data was uploaded. This method eliminated the need for an external command-and-control (C2) server, instead leveraging the victim’s own infrastructure to host the exfiltrated files, which could later be harvested by the attacker while minimizing direct traceability. Additionally, the malware changed the user’s shell configuration files (~/.bashrc and ~/.zshrc) to insert a shutdown command, ensuring the developer’s machine would reboot every time a new terminal session started. This move was likely intended to enhance persistence of the infection or disrupt forensic analysis. The predictable repository naming convention made the stolen data easily identifiable on GitHub, though it also left a trail that might expose the attacker’s collection method. By avoiding third-party servers entirely, the attack relied on the victim’s own accounts to store and transmit the loot, a tactic that complicates attribution but also increases the risk of detection. StepSecurity said that the popularity of Nx tools meant users identified the attack quickly and the eight malicious package versions remained live only for five hours and 20 minutes before being taken down. “In that short window, thousands of developers may have been exposed,” the report said. Second Wave of Attack: GitHub CLI OAuth Tokens on High Alert The StepSecurity report warned of a second wave of attacks stemming from the Nx credential leaks, first disclosed by Brian Kohan, a software architect at the NASA Jet Propulsion Laboratory, and Adnan Khan, a security engineer and researcher on August 28. In this new wave, attackers started weaponizing stolen credentials to expose and duplicate private organizational repositories, thus escalating the breach’s impact. The attack follows a two-stage approach: First, threat actors rename private repositories to follow the pattern s1ngularity-repository-{random-string} before forcibly converting them to public access, exposing sensitive code and secrets Second, they fork these repositories into compromised user accounts, ensuring the stolen data remains accessible even if the original repositories are later secured Thousands of such repositories have now surfaced on GitHub. The attack disproportionately targets GitHub CLI OAuth tokens, which provide attackers with prolonged access, amplifying the risk of persistent exploitation. Infection Assessment and Mitigation and Remediation Recommendations The StepSecurity researchers said these attacks mark a “new frontier in supply chain attacks.” “This is the first known case where malware harnessed developer-facing AI CLI tools - turning trusted AI LLM assistants into reconnaissance and exfiltration agents,” they wrote. People who want to know if they or their organization have been affected can use the following GitHub query and replace ‘acmeinc’ with their GitHub organization name: https://github.com/search?q=is%3Aname+s1ngularity-repository+org%3Aacme&type=repositories&s=updated&o=desc For those who have been impacted, the StepSecurity researchers recommended following these steps: Make any exposed organization repositories private again Disconnect affected user(s) from the organization while mitigating this issue Revoke all access tokens for each affected user, including installed apps, authorized apps, OAuth tokens (especially GitHub CLI tokens), SSH keys and GPG keys Delete any forked repositories from affected user accounts that may contain sensitive organizational data StepSecurity also provided a comprehensive remediation plan users can follow.
infosecurity-magazine.comAug 29, 2025extracted