CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-54PG-9963-V8VG

GHSA-54PG-9963-V8VG: Supply Chain Compromise and Credential Theft in intercom-client

Alon Barad
Alon Barad
Software Engineer

May 7, 2026·6 min read·33 visits

Executive Summary (TL;DR)

A malicious version (7.0.4) of the intercom-client npm package executes an obfuscated preinstall hook to harvest cloud metadata and local secrets. The malware exfiltrates stolen credentials by committing them to a newly created public GitHub repository on the victim's account.

The intercom-client npm package was compromised in a supply chain attack when a malicious version (7.0.4) was published to the public registry. This version contained an obfuscated payload designed to steal multi-cloud credentials, SSH keys, and tokens, exfiltrating them via a GitHub repository dead-drop mechanism.

Vulnerability Overview

The vulnerability tracked as GHSA-54PG-9963-V8VG represents a severe supply chain compromise affecting the Node.js ecosystem. On April 30, 2026, threat actors successfully compromised a developer account with publishing rights for the intercom-client npm package. The attackers subsequently published version 7.0.4 directly to the public registry, bypassing the vendor's official continuous integration and deployment pipelines.

This incident is classified under CWE-506 (Embedded Malicious Code). The package itself acts as a vehicle for the "Mini Shai-Hulud" worm, a sophisticated credential harvesting tool targeting developer environments and build servers. Any system executing an automated or manual dependency resolution process that pulled version 7.0.4 during the two-hour vulnerability window became compromised.

The attack leverages the standard Node.js package lifecycle to achieve code execution without requiring direct user interaction beyond the initial installation command. The resulting execution environment allows the malware to operate with the same privileges as the user or service account invoking the package manager, providing extensive access to system configurations and environment variables.

Root Cause Analysis

The technical root cause of this compromise is the unauthorized account takeover (ATO) of an npm maintainer identified as nhur. The npm registry allows authorized maintainers to publish packages directly via the command line API, provided they possess valid authentication tokens. The threat actor utilized stolen or bypassed credentials to authenticate as this user and upload the malicious artifact.

Once published, the malware relies on an npm preinstall hook defined within the package.json file. The Node.js package manager automatically executes scripts associated with this hook prior to the actual installation of the package contents. This native behavior is frequently abused in supply chain attacks to guarantee payload execution regardless of whether the dependent application actually imports or utilizes the infected module.

The payload executed by the hook is a heavily obfuscated JavaScript file named router_runtime.js, weighing approximately 11.7 MB. In specific execution contexts, the malware attempts to invoke the Bun runtime environment. This runtime substitution serves two purposes: it accelerates the execution of the resource-intensive credential harvesting routines, and it actively bypasses basic sandbox restrictions or behavioral detections targeting the standard Node.js executable.

Code Analysis

While the exact source code of the obfuscated payload remains proprietary to the threat actors, the structural changes to the intercom-client package are deterministic. The primary modification occurs within the package metadata. The legitimate version 7.0.3 contains standard dependency and script definitions, whereas the malicious version 7.0.4 introduces the execution vector.

// Legitimate package.json (v7.0.3)
{
  "name": "intercom-client",
  "version": "7.0.3",
  "scripts": {
    "test": "mocha"
  }
}
 
// Malicious package.json (v7.0.4)
{
  "name": "intercom-client",
  "version": "7.0.4",
  "scripts": {
    "preinstall": "node router_runtime.js",
    "test": "mocha"
  }
}

The router_runtime.js file constitutes the core of the attack. Upon execution, the script immediately begins a synchronous traversal of the host filesystem. It specifically targets directories known to house development configurations, such as user home directories, .aws, and .ssh folders. Concurrently, it initiates HTTP GET requests to localized IP addresses associated with cloud metadata services.

The exfiltration routine represents a notable departure from traditional command-and-control (C2) architectures. The script parses the harvested files for valid GitHub Personal Access Tokens (PATs). If a token with repo scope is identified, the script utilizes the GitHub REST API to programmatically generate a new, public repository under the victim's account. The harvested secrets are then base64-encoded and pushed as an initial commit to this repository.

Exploitation and Attack Flow

The exploitation phase begins the moment a developer or CI/CD pipeline executes npm install, yarn install, or pnpm install in a project where intercom-client is listed as a dependency without strict version pinning. The package manager downloads version 7.0.4 and immediately processes the preinstall directive. This action launches router_runtime.js within the execution context of the host machine.

Following execution, the malware initiates its cloud discovery phase. It queries the Instance Metadata Service (IMDS) endpoints specific to AWS (169.254.169.254), GCP (metadata.google.internal), and Azure. The malware extracts temporary instance roles, security credentials, and identity tokens. Simultaneously, the local filesystem scanning routine parses .env files, SSH private keys, and configuration files for long-lived credentials.

The final stage involves the dead-drop exfiltration. The malware authenticates to GitHub using stolen tokens and creates a repository featuring randomly selected words themed around the "Dune" franchise. The repository description is uniformly set to "A Mini Shai-Hulud has Appeared". By committing the stolen data to a public repository hosted on legitimate infrastructure, the attackers evade traditional data-loss prevention (DLP) systems that monitor for anomalous outbound network traffic to unknown domains.

Impact Assessment

The CVSS v3.1 base score for this vulnerability is 9.6 (Critical), reflecting the profound severity of the compromise. The vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N highlights the network-based attack vector and the changed scope (S:C). The malware compromises the immediate execution environment but primarily aims to pivot, granting attackers unauthorized access to the victim's broader cloud infrastructure and source code repositories.

The loss of confidentiality is total for environments that executed the payload. Temporary IMDS tokens allow attackers to assume the identity of cloud instances, potentially leading to unauthorized data access within S3 buckets or database instances. Furthermore, the theft of SSH keys and long-lived API tokens facilitates persistent access to developer workstations and internal network resources.

The integrity impact is equally critical. With access to stolen GitHub tokens and npm publishing credentials, the threat actors can modify source code repositories, manipulate infrastructure-as-code configurations, or publish subsequent supply chain attacks under the victim's identity. The use of a public GitHub repository for exfiltration also introduces immediate public exposure of highly sensitive organizational secrets.

Remediation and Mitigation Strategies

Organizations utilizing intercom-client must immediately audit their dependency trees to determine if version 7.0.4 was downloaded or executed. Administrators should execute npm list intercom-client across all development and build environments. If version 7.0.4 is identified, the environment must be considered actively compromised, necessitating a full incident response protocol rather than a simple package downgrade.

The package version must be strictly downgraded to version 7.0.3 or earlier. Developers must update the package.json file and regenerate lock files (package-lock.json, yarn.lock) to ensure the malicious version is purged from local and remote caches. Continuous integration pipelines should be temporarily halted until the dependency tree is verified clean.

Credential rotation is the most critical remediation step. Organizations must assume all secrets present on the affected host during the two-hour vulnerability window are compromised. This mandates the immediate revocation and regeneration of AWS IAM keys, GCP service account tokens, GitHub Personal Access Tokens, npm publish tokens, and any database credentials or API keys stored in local .env files. Finally, security teams must monitor cloud access logs (e.g., AWS CloudTrail) for anomalous activity originating from the compromised credentials.

Technical Appendix

CVSS Score
9.6/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N

Affected Systems

Node.js build environmentsCI/CD pipelines executing npm installDeveloper workstations utilizing intercom-clientCloud instances (AWS, GCP, Azure) running the compromised software

Affected Versions Detail

Product
Affected Versions
Fixed Version
intercom-client
Intercom
== 7.0.47.0.3
AttributeDetail
CWE IDCWE-506
Attack VectorNetwork (Supply Chain)
CVSS v3.1 Score9.6
ImpactCredential Theft & Exfiltration
Exploit StatusActive Exploitation
Malicious Componentrouter_runtime.js

MITRE ATT&CK Mapping

T1195.002Supply Chain Compromise: Compromise Software Dependencies
Initial Access
T1552.001Unsecured Credentials: Credentials In Files
Credential Access
T1552.004Unsecured Credentials: Private Keys
Credential Access
T1083File and Directory Discovery
Discovery
T1555.004Credentials from Web Browsers/Metadata - IMDS
Credential Access
T1567Exfiltration Over Web Service
Exfiltration
CWE-506
Embedded Malicious Code

The product contains code that appears to be malicious in nature, executing unauthorized actions such as data exfiltration.

Vulnerability Timeline

Malicious version 7.0.4 published to npm registry at 15:00 UTC.
2026-04-30
Malicious package identified and yanked from npm at 17:00 UTC.
2026-04-30
Intercom issues status alerts acknowledging the compromise.
2026-04-30
Official GitHub Security Advisory published.
2026-05-07

References & Sources

  • [1]GitHub Security Advisory GHSA-54PG-9963-V8VG
  • [2]Intercom Status Incident
  • [3]Socket Analysis of Supply Chain Attack
  • [4]Wiz Research on Mini Shai-Hulud
  • [5]StepSecurity Details on Shai-Hulud Worm

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•14 minutes ago•CVE-2026-70611
6.9

CVE-2026-70611: Sandbox Escape and Command Execution via DevTools Shell Integration in Electron

A high-severity sandbox escape and arbitrary command execution vulnerability exists in the Electron desktop framework prior to versions 39.8.9, 40.9.2, 41.2.1, and 42.0.0-beta.3. The flaw lies in the handling of DevTools embedder messages during file manager reveal actions, allowing an attacker to execute arbitrary binaries with main process privileges.

Alon Barad
Alon Barad
1 views•6 min read
•about 1 hour ago•CVE-2026-70612
5.4

CVE-2026-70612: Iframe Sandbox Escape and Host Protocol Launch in Electron

Improper access control in Electron versions prior to 39.8.8, 40.9.0, 41.2.1, and 42.0.0-beta.3 allowed sandboxed iframes to bypass sandbox restrictions and trigger external application protocols on the host operating system. The application's custom permission handler was also not provided with the frame's sandbox state, preventing effective validation of the request context.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 2 hours ago•CVE-2026-70607
5.3

CVE-2026-70607: Privileged Option Injection in Electron window.open Features

An input validation vulnerability in the Electron desktop framework allows untrusted web content running in a renderer process to inject privileged configuration options when creating child windows via window.open. Under Windows environments, this allows attackers to pass a remote Universal Naming Convention (UNC) path to the window icon configuration parameter, forcing the host system to make an SMB connection to a remote listener and leak the current user's NetNTLM authentication hash.

Alon Barad
Alon Barad
3 views•6 min read
•about 3 hours ago•CVE-2026-70604
7.4

CVE-2026-70604: Cross-Origin Resource Sharing (CORS) Bypass in Electron Custom Schemes

Electron custom schemes registered with supportFetchAPI: true but without corsEnabled: true failed to apply CORS enforcement in versions prior to 39.8.10, 40.9.3, 41.4.0, and 42.0.0. This mapping discrepancy allowed malicious remote pages to issue cross-origin requests, read sensitive local response data, and bypass Same-Origin Policy (SOP) mechanisms.

Amit Schendel
Amit Schendel
4 views•6 min read
•about 5 hours ago•CVE-2026-70491
6.5

CVE-2026-70491: Source Code Disclosure in Open WebUI Custom Tools

An information disclosure vulnerability in Open WebUI versions 0.10.2 and earlier allows authenticated non-admin users with read-only access (or any authenticated user when a tool is shared publicly) to retrieve the raw Python source code of custom workspace tools. Because these server-side tools commonly contain hardcoded API tokens, credentials, and proprietary logic, the exposure of raw tool source code severely compromises confidentiality and can facilitate wider infrastructure compromise.

Alon Barad
Alon Barad
5 views•5 min read
•about 6 hours ago•CVE-2026-70492
8.7

CVE-2026-70492: Stored Cross-Site Scripting (XSS) via Unescaped KaTeX Render-Error Fallback in Open WebUI

CVE-2026-70492 (also tracked as GHSA-pwxh-7358-jq2x) is a stored Cross-Site Scripting (XSS) vulnerability in Open WebUI versions 0.10.0 through 0.10.x. The flaw arises because engine-level JavaScript stack overflow errors escape KaTeX standard error handling. Svelte's fallback rendering path assigns the raw, unescaped mathematical input string directly to the DOM using the unsafe {@html} directive, enabling arbitrary client-side code execution. This allows attackers to steal session tokens and perform unauthorized administrative actions when users view malicious messages. The vulnerability has been fully resolved in version 0.11.0.

Amit Schendel
Amit Schendel
3 views•10 min read