CTIPilot
AI-generated · no human review · verify critical claims against the linked source. how it works →

GitHub Actions

product · product:github-actions single-source

Coverage
4
first 2026-08-06 → last 2026-10-20
Latest activity
2026-10-20
GhostAction: fake security workflows now harvest whole git histories; rotating Actions secrets is not enough
Peak priority
high
1 high · 3 notable
Targets
technology
sectors: technology, public-sector, finance
Sources cited
13
10 hosts

Action items (4)

Do-now tasks recorded on the entries about GitHub Actions, newest first. Check the date before acting on an older one.

  • Run an organisation-scoped GitHub code search in every organisation your teams and suppliers administer for workflow files under .github/workflows that present themselves as a security audit, a security check or an Actions security workflow and were added since 2026-08-31; any hit means assume breach: revoke the credential that committed it and rotate every secret found anywhere in the repository's git history, not only the configured Actions secrets.
    2026-10-10GhostAction: fake security workflows now harvest…
  • Audit every npm publish token your organisation and its maintainers hold and revoke any that can publish without two-factor authentication, that exact token property, not package popularity, is what decides whether the worm spreads from a compromised developer to your packages.
    2026-08-06A self-propagating npm worm reaches packages…
  • On any developer workstation or build agent that installed a package from the keyv family since 2026-08-04, or tensorlake@0.5.144 since 2026-10-08, treat the AI-assistant, cloud, GitHub, Vault, SSH and Kubernetes credentials present on that host as disclosed and rotate them; the collector sweeps over 300 credential patterns in one pass, so partial rotation leaves the operator a working set. Isolate the host before revoking its GitHub token, because OX Security reports a switch that wipes the machine when the token is revoked; on a host that ran tensorlake@0.5.144, Socket and OX Security also name the gh-token-monitor persistence (a systemd user unit on Linux, a LaunchAgent on macOS, a scheduled task on Windows), which has to be removed before the token is revoked.
    2026-08-06A self-propagating npm worm reaches packages…
  • Stop treating a valid npm provenance attestation as evidence a package is clean; where release pipelines gate on provenance, change the check to pin on the workflow identity inside the Fulcio certificate and the Rekor log index, which is what Unit 42 says still discriminates.
    2026-08-06A self-propagating npm worm reaches packages…

Defender insights

What each entry about GitHub Actions tells a defender to do, newest first.

2026-10-10NOTABLEGhostAction: fake security workflows now harvest whole git histories; rotating Actions secrets is not enough

Exposure · triage · detection

2026-08-06HIGHexploitedA self-propagating npm worm reaches packages totalling 1.3 billion monthly downloads, and its C2 address lives on-chain

Latest update · triage

2026-09-17NOTABLEA bug-bounty hunter builds their own npm infostealer to manufacture the compromises they then report for a payout

Triage

2026-08-28NOTABLEAn AI red-team agent hit a syntax error mid-exploit, diagnosed it, fixed its own payload, and retried, without a human in the loop

Triage

Story timeline

  1. 2026-10-10GhostAction returns: stolen maintainer credentials push a fake security-audit workflow into the victims' own GitHub repositories, which now harvests credentials from the entire git history
    active-threatsGhostAction: fake security workflows now harvest whole git histories; rotating Actions secrets is not enough
  2. 2026-09-17PhantomRaven: CrowdStrike attributes an LLM-generated npm infostealer, hidden from registry scanners via a remote-URL dependency trick, to a self-described bug-bounty hunter
    active-threatsA bug-bounty hunter builds their own npm infostealer to manufacture the compromises they then report for a payout
  3. 2026-08-28Wiz's autonomous AI red-teaming agent found and exploited a GitHub Actions command-injection flaw in Snowflake's public connector repo, exfiltrating live Jira credentials via an out-of-band callback
    researchAn AI red-team agent hit a syntax error mid-exploit, diagnosed it, fixed its own payload, and retried, without a human in the loop
  4. 2026-08-06CHAINDROP, the Shai-Hulud npm worm returns through the keyv maintainer, backdoors 400+ packages, and resolves its exfiltration endpoint from an Ethereum smart contract
    deep-diveA self-propagating npm worm reaches packages totalling 1.3 billion monthly downloads, and its C2 address lives on-chain

Hunting pivots

Releases covered
GitHub Actions ×4
ATT&CK techniques (32 across 13 tactics)

32 techniques observed across 4 entries about this entity, derived from entry metadata and body evidence, never asserted without a published entry behind it · pinned to MITRE ATT&CK v20.0 · compare on the matrix · Navigator layer (JSON)

  • Resource DevelopmentDevelop Capabilities: Malware
  • Initial AccessValid Accounts: Cloud Accounts · Supply Chain Compromise: Compromise Software Dependencies and Development Tools · Supply Chain Compromise: Compromise Software Supply Chain
  • ExecutionScheduled Task/Job: Scheduled Task · Command and Scripting Interpreter · Command and Scripting Interpreter: JavaScript · Software Deployment Tools
  • PersistenceScheduled Task/Job: Scheduled Task · Valid Accounts: Cloud Accounts · Create or Modify System Process: Launch Agent · Create or Modify System Process: Systemd Service · Event Triggered Execution
  • Privilege EscalationScheduled Task/Job: Scheduled Task · Valid Accounts: Cloud Accounts · Create or Modify System Process: Launch Agent · Create or Modify System Process: Systemd Service · Event Triggered Execution
  • StealthObfuscated Files or Information · Obfuscated Files or Information: Embedded Payloads · Masquerading: Match Legitimate Resource Name or Location · Valid Accounts: Cloud Accounts
  • Credential AccessSteal Application Access Token · Unsecured Credentials · Unsecured Credentials: Credentials In Files · Unsecured Credentials: Cloud Instance Metadata API · Unsecured Credentials: Container API
  • DiscoverySystem Network Configuration Discovery: Internet Connection Discovery · System Information Discovery · File and Directory Discovery
  • Lateral MovementSoftware Deployment Tools
  • CollectionData from Local System · Automated Collection
  • Command and ControlApplication Layer Protocol: Web Protocols · Web Service: Dead Drop Resolver · Multi-Stage Channels · Dynamic Resolution
  • ExfiltrationExfiltration Over C2 Channel · Exfiltration Over Alternative Protocol: Exfiltration Over Unencrypted Non-C2 Protocol · Exfiltration Over Web Service: Exfiltration to Code Repository
  • ImpactData Destruction

Resource Development TA0042

T1587.001Develop Capabilities: Malware×1

Adversaries may develop malware and malware components that can be used during targeting. Building malicious software can include the development of payloads, droppers, post-compromise tools, backdoors (including backdoored images), packers, C2 protocols, and the creation of infected removable media. Adversaries may develop malware to support their operations, creating a means for maintaining control of remote machines, evading defenses, and executing post-compromise behaviors.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

Initial Access TA0001

T1078.004Valid Accounts: Cloud Accounts×1

Valid accounts in cloud environments may allow adversaries to perform actions to achieve Initial Access, Persistence, Privilege Escalation, or Defense Evasion. Cloud accounts are those created and configured by an organization for use by users, remote support, services, or for administration of resources within a cloud service provider or SaaS application. Cloud Accounts can exist solely in the cloud; alternatively, they may be hybrid-joined between on-premises systems and the cloud through syncing or federation with other identity sources such as Windows Active Directory.

Evidence: 2026-10-10/ghostaction-fake-audit-workflow-git-history-credential-theft · ATT&CK page ↗

T1195.001Supply Chain Compromise: Compromise Software Dependencies and Development Tools×2

Adversaries may manipulate software dependencies and development tools prior to receipt by a final consumer for the purpose of data or system compromise. Applications often depend on external software to function properly. Popular open source projects that are used as dependencies in many applications, such as pip and NPM packages, may be targeted as a means to add malicious code to users of the dependency. This may also include abandoned packages, which in some cases could be re-registered by threat actors after being removed by adversaries. Adversaries may also employ "typosquatting" or name-confusion by choosing names similar to existing popular libraries or packages in order to deceive a user.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1195.002Supply Chain Compromise: Compromise Software Supply Chain×2

Adversaries may manipulate application software prior to receipt by a final consumer for the purpose of data or system compromise. Supply chain compromise of software can take place in a number of ways, including manipulation of the application source code, manipulation of the update/distribution mechanism for that software, or replacing compiled releases with a modified version.

Evidence: 2026-08-28/wiz-red-agent-snowflake-github-actions-command-injection · 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

Execution TA0002

T1053.005Scheduled Task/Job: Scheduled Task×1

Adversaries may abuse the Windows Task Scheduler to perform task scheduling for initial or recurring execution of malicious code. There are multiple ways to access the Task Scheduler in Windows. The schtasks utility can be run directly on the command line, or the Task Scheduler can be opened through the GUI within the Administrator Tools section of the Control Panel. In some cases, adversaries have used a .NET wrapper for the Windows Task Scheduler, and alternatively, adversaries have used the Windows netapi32 library and Windows Management Instrumentation (WMI) to create a scheduled task. Adversaries may also utilize the Powershell Cmdlet `Invoke-CimMethod`, which leverages WMI class `PS_ScheduledTask` to create a scheduled task via an XML path.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1059Command and Scripting Interpreter×1

Adversaries may abuse command and script interpreters to execute commands, scripts, or binaries. These interfaces and languages provide ways of interacting with computer systems and are a common feature across many different platforms. Most systems come with some built-in command-line interface and scripting capabilities, for example, macOS and Linux distributions include some flavor of Unix Shell while Windows installations include the Windows Command Shell and PowerShell.

Evidence: 2026-08-28/wiz-red-agent-snowflake-github-actions-command-injection · ATT&CK page ↗

T1059.007Command and Scripting Interpreter: JavaScript×1

Adversaries may abuse various implementations of JavaScript for execution. JavaScript (JS) is a platform-independent scripting language (compiled just-in-time at runtime) commonly associated with scripts in webpages, though JS can be executed in runtime environments outside the browser.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1072Software Deployment Tools×1

Adversaries may gain access to and use centralized software suites installed within an enterprise to execute commands and move laterally through the network. Configuration management and software deployment applications may be used in an enterprise network or cloud environment for routine administration purposes. These systems may also be integrated into CI/CD pipelines. Examples of such solutions include: SCCM, HBSS, Altiris, AWS Systems Manager, Microsoft Intune, Azure Arc, and GCP Deployment Manager.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

Persistence TA0003

T1053.005Scheduled Task/Job: Scheduled Task×1

Adversaries may abuse the Windows Task Scheduler to perform task scheduling for initial or recurring execution of malicious code. There are multiple ways to access the Task Scheduler in Windows. The schtasks utility can be run directly on the command line, or the Task Scheduler can be opened through the GUI within the Administrator Tools section of the Control Panel. In some cases, adversaries have used a .NET wrapper for the Windows Task Scheduler, and alternatively, adversaries have used the Windows netapi32 library and Windows Management Instrumentation (WMI) to create a scheduled task. Adversaries may also utilize the Powershell Cmdlet `Invoke-CimMethod`, which leverages WMI class `PS_ScheduledTask` to create a scheduled task via an XML path.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1078.004Valid Accounts: Cloud Accounts×1

Valid accounts in cloud environments may allow adversaries to perform actions to achieve Initial Access, Persistence, Privilege Escalation, or Defense Evasion. Cloud accounts are those created and configured by an organization for use by users, remote support, services, or for administration of resources within a cloud service provider or SaaS application. Cloud Accounts can exist solely in the cloud; alternatively, they may be hybrid-joined between on-premises systems and the cloud through syncing or federation with other identity sources such as Windows Active Directory.

Evidence: 2026-10-10/ghostaction-fake-audit-workflow-git-history-credential-theft · ATT&CK page ↗

T1543.001Create or Modify System Process: Launch Agent×1

Adversaries may create or modify launch agents to repeatedly execute malicious payloads as part of persistence. When a user logs in, a per-user launchd process is started which loads the parameters for each launch-on-demand user agent from the property list (.plist) file found in <code>/System/Library/LaunchAgents</code>, <code>/Library/LaunchAgents</code>, and <code>~/Library/LaunchAgents</code>. Property list files use the <code>Label</code>, <code>ProgramArguments </code>, and <code>RunAtLoad</code> keys to identify the Launch Agent's name, executable location, and execution time. Launch Agents are often installed to perform updates to programs, launch user specified programs at login, or to conduct other developer tasks.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1543.002Create or Modify System Process: Systemd Service×1

Adversaries may create or modify systemd services to repeatedly execute malicious payloads as part of persistence. Systemd is a system and service manager commonly used for managing background daemon processes (also known as services) and other system resources. Systemd is the default initialization (init) system on many Linux distributions replacing legacy init systems, including SysVinit and Upstart, while remaining backwards compatible.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1546Event Triggered Execution×1

Adversaries may establish persistence and/or elevate privileges using system mechanisms that trigger execution based on specific events. Various operating systems have means to monitor and subscribe to events such as logons or other user activity such as running specific applications/binaries. Cloud environments may also support various functions and services that monitor and can be invoked in response to specific cloud events.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

Privilege Escalation TA0004

T1053.005Scheduled Task/Job: Scheduled Task×1

Adversaries may abuse the Windows Task Scheduler to perform task scheduling for initial or recurring execution of malicious code. There are multiple ways to access the Task Scheduler in Windows. The schtasks utility can be run directly on the command line, or the Task Scheduler can be opened through the GUI within the Administrator Tools section of the Control Panel. In some cases, adversaries have used a .NET wrapper for the Windows Task Scheduler, and alternatively, adversaries have used the Windows netapi32 library and Windows Management Instrumentation (WMI) to create a scheduled task. Adversaries may also utilize the Powershell Cmdlet `Invoke-CimMethod`, which leverages WMI class `PS_ScheduledTask` to create a scheduled task via an XML path.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1078.004Valid Accounts: Cloud Accounts×1

Valid accounts in cloud environments may allow adversaries to perform actions to achieve Initial Access, Persistence, Privilege Escalation, or Defense Evasion. Cloud accounts are those created and configured by an organization for use by users, remote support, services, or for administration of resources within a cloud service provider or SaaS application. Cloud Accounts can exist solely in the cloud; alternatively, they may be hybrid-joined between on-premises systems and the cloud through syncing or federation with other identity sources such as Windows Active Directory.

Evidence: 2026-10-10/ghostaction-fake-audit-workflow-git-history-credential-theft · ATT&CK page ↗

T1543.001Create or Modify System Process: Launch Agent×1

Adversaries may create or modify launch agents to repeatedly execute malicious payloads as part of persistence. When a user logs in, a per-user launchd process is started which loads the parameters for each launch-on-demand user agent from the property list (.plist) file found in <code>/System/Library/LaunchAgents</code>, <code>/Library/LaunchAgents</code>, and <code>~/Library/LaunchAgents</code>. Property list files use the <code>Label</code>, <code>ProgramArguments </code>, and <code>RunAtLoad</code> keys to identify the Launch Agent's name, executable location, and execution time. Launch Agents are often installed to perform updates to programs, launch user specified programs at login, or to conduct other developer tasks.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1543.002Create or Modify System Process: Systemd Service×1

Adversaries may create or modify systemd services to repeatedly execute malicious payloads as part of persistence. Systemd is a system and service manager commonly used for managing background daemon processes (also known as services) and other system resources. Systemd is the default initialization (init) system on many Linux distributions replacing legacy init systems, including SysVinit and Upstart, while remaining backwards compatible.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1546Event Triggered Execution×1

Adversaries may establish persistence and/or elevate privileges using system mechanisms that trigger execution based on specific events. Various operating systems have means to monitor and subscribe to events such as logons or other user activity such as running specific applications/binaries. Cloud environments may also support various functions and services that monitor and can be invoked in response to specific cloud events.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

Stealth TA0005

T1027Obfuscated Files or Information×1

Adversaries may attempt to make an executable or file difficult to discover or analyze by encrypting, encoding, or otherwise obfuscating its contents on the system or in transit. This is common behavior that can be used across different platforms and the network to evade defenses.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1027.009Obfuscated Files or Information: Embedded Payloads×1

Adversaries may embed payloads within other files to conceal malicious content from defenses. Otherwise seemingly benign files (such as scripts and executables) may be abused to carry and obfuscate malicious payloads and content. In some cases, embedded payloads may also enable adversaries to Subvert Trust Controls by not impacting execution controls such as digital signatures and notarization tickets.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

T1036.005Masquerading: Match Legitimate Resource Name or Location×1

Adversaries may match or approximate the name or location of legitimate files, Registry keys, or other resources when naming/placing them. This is done for the sake of evading defenses and observation.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

T1078.004Valid Accounts: Cloud Accounts×1

Valid accounts in cloud environments may allow adversaries to perform actions to achieve Initial Access, Persistence, Privilege Escalation, or Defense Evasion. Cloud accounts are those created and configured by an organization for use by users, remote support, services, or for administration of resources within a cloud service provider or SaaS application. Cloud Accounts can exist solely in the cloud; alternatively, they may be hybrid-joined between on-premises systems and the cloud through syncing or federation with other identity sources such as Windows Active Directory.

Evidence: 2026-10-10/ghostaction-fake-audit-workflow-git-history-credential-theft · ATT&CK page ↗

Credential Access TA0006

T1528Steal Application Access Token×1

Adversaries can steal application access tokens as a means of acquiring credentials to access remote systems and resources.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1552Unsecured Credentials×1

Adversaries may search compromised systems to find and obtain insecurely stored credentials. These credentials can be stored and/or misplaced in many locations on a system, including plaintext files (e.g. Shell History), operating system or application-specific repositories (e.g. Credentials in Registry), or other specialized files/artifacts (e.g. Private Keys).

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1552.001Unsecured Credentials: Credentials In Files×4

Adversaries may search local file systems and remote file shares for files containing insecurely stored credentials. These can be files created by users to store their own credentials, shared credential stores for a group of individuals, configuration files containing passwords for a system or service, or source code/binary files containing embedded passwords.

Evidence: 2026-10-10/ghostaction-fake-audit-workflow-git-history-credential-theft · 2026-09-17/phantomraven-npm-llm-generated-infostealer · 2026-08-28/wiz-red-agent-snowflake-github-actions-command-injection · 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1552.005Unsecured Credentials: Cloud Instance Metadata API×1

Adversaries may attempt to access the Cloud Instance Metadata API to collect credentials and other sensitive data.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1552.007Unsecured Credentials: Container API×1

Adversaries may gather credentials via APIs within a containers environment. APIs in these environments, such as the Docker API and Kubernetes APIs, allow a user to remotely manage their container resources and cluster components.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

Discovery TA0007

T1016.001System Network Configuration Discovery: Internet Connection Discovery×1

Adversaries may check for Internet connectivity on compromised systems. This may be performed during automated discovery and can be accomplished in numerous ways such as using Ping, <code>tracert</code>, and GET requests to websites, or performing initial speed testing to confirm bandwidth.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

T1082System Information Discovery×1

An adversary may attempt to get detailed information about the operating system and hardware, including version, patches, hotfixes, service packs, and architecture. Adversaries may use this information to shape follow-on behaviors, including whether or not the adversary fully infects the target and/or attempts specific actions. This behavior is distinct from Local Storage Discovery which is an adversary's discovery of local drive, disks and/or volumes.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

T1083File and Directory Discovery×1

Adversaries may enumerate files and directories or may search in specific locations of a host or network share for certain information within a file system. Adversaries may use the information from File and Directory Discovery during automated discovery to shape follow-on behaviors, including whether or not the adversary fully infects the target and/or attempts specific actions.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

Lateral Movement TA0008

T1072Software Deployment Tools×1

Adversaries may gain access to and use centralized software suites installed within an enterprise to execute commands and move laterally through the network. Configuration management and software deployment applications may be used in an enterprise network or cloud environment for routine administration purposes. These systems may also be integrated into CI/CD pipelines. Examples of such solutions include: SCCM, HBSS, Altiris, AWS Systems Manager, Microsoft Intune, Azure Arc, and GCP Deployment Manager.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

Collection TA0009

T1005Data from Local System×1

Adversaries may search local system sources, such as file systems, configuration files, local databases, virtual machine files, or process memory, to find files of interest and sensitive data prior to Exfiltration.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

T1119Automated Collection×1

Once established within a system or network, an adversary may use automated techniques for collecting internal data. Methods for performing this technique could include use of a Command and Scripting Interpreter to search for and copy information fitting set criteria such as file type, location, or name at specific time intervals.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

Command and Control TA0011

T1071.001Application Layer Protocol: Web Protocols×1

Adversaries may communicate using application layer protocols associated with web traffic to avoid detection/network filtering by blending in with existing traffic. Commands to the remote system, and often the results of those commands, will be embedded within the protocol traffic between the client and server.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

T1102.001Web Service: Dead Drop Resolver×1

Adversaries may use an existing, legitimate external Web service to host information that points to additional command and control (C2) infrastructure. Adversaries may post content, known as a dead drop resolver, on Web services with embedded (and often obfuscated/encoded) domains or IP addresses. Once infected, victims will reach out to and be redirected by these resolvers.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

T1104Multi-Stage Channels×1

Adversaries may create multiple stages for command and control that are employed under different conditions or for certain functions. Use of multiple stages may obfuscate the command and control channel to make detection more difficult.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

T1568Dynamic Resolution×1

Adversaries may dynamically establish connections to command and control infrastructure to evade common detections and remediations. This may be achieved by using malware that shares a common algorithm with the infrastructure the adversary uses to receive the malware's communications. These calculations can be used to dynamically adjust parameters such as the domain name, IP address, or port number the malware uses for command and control.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

Exfiltration TA0010

T1041Exfiltration Over C2 Channel×1

Adversaries may steal data by exfiltrating it over an existing command and control channel. Stolen data is encoded into the normal communications channel using the same protocol as command and control communications.

Evidence: 2026-09-17/phantomraven-npm-llm-generated-infostealer · ATT&CK page ↗

T1048.003Exfiltration Over Alternative Protocol: Exfiltration Over Unencrypted Non-C2 Protocol×1

Adversaries may steal data by exfiltrating it over an un-encrypted network protocol other than that of the existing command and control channel. The data may also be sent to an alternate network location from the main command and control server.

Evidence: 2026-10-10/ghostaction-fake-audit-workflow-git-history-credential-theft · ATT&CK page ↗

T1567.001Exfiltration Over Web Service: Exfiltration to Code Repository×1

Adversaries may exfiltrate data to a code repository rather than over their primary command and control channel. Code repositories are often accessible via an API (ex: https://api.github.com). Access to these APIs are often over HTTPS, which gives the adversary an additional level of protection.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

Impact TA0040

T1485Data Destruction×1

Adversaries may destroy data and files on specific systems or in large numbers on a network to interrupt availability to systems, services, and network resources. Data destruction is likely to render stored data irrecoverable by forensic techniques through overwriting files or data on local and remote drives. Common operating system file deletion commands such as <code>del</code> and <code>rm</code> often only remove pointers to files without wiping the contents of the files themselves, making the files recoverable by proper forensic methodology. This behavior is distinct from Disk Content Wipe and Disk Structure Wipe because individual files are destroyed rather than sections of a storage disk or the disk's logical structure.

Evidence: 2026-08-06/chaindrop-shai-hulud-npm-worm-onchain-c2-resolver · ATT&CK page ↗

Entries about GitHub Actions (4)

2026-10-10 · view entry permalink →

NOTABLEupdatedNATOB1

GhostAction returns: stolen maintainer credentials push a fake security-audit workflow into the victims' own GitHub repositories, which now harvests credentials from the entire git history

StepSecurity reports that on 2026-10-08 the GhostAction GitHub Actions credential-theft campaign used the accounts of two open-source maintainers to push a workflow disguised as a security improvement to 345 repositories in two automated sweeps, among them an Uber-owned repository that one maintainer could still write to (StepSecurity, 2026-10-09); Socket's independent analysis counts 346 (Socket, 2026-10-09). The operator holds a maintainer's GitHub credential, which StepSecurity assesses as most plausibly a personal access token leaked through infostealer logs or credential dumps, then commits a workflow titled to look like a security audit straight to the default branch under the victim's own identity, unsigned and without a pull request; that push runs it, and nothing in an audit log looks anomalous unless the content is read (StepSecurity, 2026-10-09). GitGuardian says the technique was later reused in the Shai-Hulud campaigns and remains at the core of the Mini Shai-Hulud malware family (GitGuardian, 2026-10-07).

The newer payload sends the named Actions secrets and every cloud, AI-provider and SaaS credential pattern found in the working tree and the entire git history to a hardcoded address over plain HTTP, so no DNS lookup occurs (StepSecurity, 2026-10-09). StepSecurity saw the attacker's server acknowledge the request four seconds into the run at the Uber-owned repository (StepSecurity, 2026-10-09); neither it nor Socket has seen a malicious package release from the stolen credentials yet (Socket, 2026-10-09; StepSecurity, 2026-10-09). The wave was far larger than those first counts: Socket's update of 9 October reports more than 500 accounts committing the workflow to tens of thousands of repositories since 7 October (Socket, 2026-10-09), and GitGuardian's update of 13 October counts more than 30,000 repositories across 3,000 users and organisations between 8 and 12 October, reached by compromising about 1,900 GitHub accounts (GitGuardian, 2026-10-07).

Triage: the audit-log pattern separates this from a team adding a scanning workflow: no pull request, unsigned commits across many repositories, and a manual dispatch right after creation (StepSecurity, 2026-10-09).

confirms the exfiltration completed successfully: the attacker's server acknowledged receipt four seconds after the workflow started

Nothing in an audit log looks anomalous unless the workflow content itself is inspected

The approval gate is worth singling out: it is the single control observed stopping this campaign's exfiltration this week.

StepSecurity 2026-10-09

Socket has observed no malicious package versions published to PyPI or crates.io as a result of this activity at the time of writing.

Socket 2026-10-09

Rotating the secrets exfiltrated by the malicious workflow is not enough. The GitHub credential that allowed the injection in the first place must be found and revoked too, or someone else will use it again.

In total, our dataset shows the threat actor targeted more than 30,000 repositories across 3,000 users and orgs.

This resulted from compromising the GitHub accounts of about 1,900 users.

However, GitHub started preventing the malicious workflow from running starting October 9.

GitGuardian 2026-10-07
Updaterun 2026-10-20T0835Z-auditbodyevidencesourcing_notesummary

GitGuardian updated its analysis on 2026-10-13 from its own dataset: between 8 and 12 October the campaign targeted more than 30,000 repositories across 3,000 users and organisations by compromising the GitHub accounts of about 1,900 users, and tried to extract 3,174 secrets from public repositories' CI, with the largest spike on 8 and 9 October (GitGuardian, 2026-10-07). Socket's update of 9 October, with more than 500 accounts and tens of thousands of repositories since 7 October, is of the same order (Socket, 2026-10-09). GitGuardian says GitHub started preventing the malicious workflow from running on 9 October, so the further waves it saw on 10 and 12 October, with the same payload, could not extract any secrets (GitGuardian, 2026-10-07); a workflow from those later waves still means the account that committed it is compromised. Part of the October victims had already been hit in the September 2025 and August 2026 waves, and GitGuardian assesses that the operator likely relies in part on secrets left unrotated since earlier campaigns (GitGuardian, 2026-10-07).

Builds on: CloudSEK: a Gentlemen affiliate reached victims through stolen GitLab CI/CD secrets and drove… · Megalodon mass-poisons 5,561 GitHub repos in a 6-hour window; SysDiag + Optimize-Build…

threat10 Oct 03:52Zmulti-sourceOpen finding →

2026-08-06 · view entry permalink →

HIGHexploitedupdatedNATOB1

CHAINDROP, the Shai-Hulud npm worm returns through the keyv maintainer, backdoors 400+ packages, and resolves its exfiltration endpoint from an Ethereum smart contract

Elastic Security Labs identified a new Shai-Hulud campaign on 2026-08-04 that began by trojanising the monorepo of keyv, a widely used key-value storage library, and embedding a self-propagating worm it names CHAINDROP (Elastic Security Labs, 2026-08-06). Elastic reports over 400 unique npm packages compromised at the time of writing, and quantifies the blast radius through download volume: keyv alone received over 600 million downloads in the preceding month, with flat-cache near 580 million, cacheable-request over 137 million, cacheable over 30 million and cache-manager over 16 million (Elastic Security Labs, 2026-08-06). OX Security published its own first-hand analysis two days earlier and describes a massive Shai-Hulud campaign against npm on its own larger package and download counts (OX Security, 2026-08-04). Elastic frames the wave as the return of Shai-Hulud, and points to Dune-themed references in the payload and to its similarities with previous Shai-Hulud campaigns (Elastic Security Labs, 2026-08-06).

Execution. The chain starts at a preinstall hook in package.json, abusing a legitimate npm feature that runs arbitrary commands before a package is installed and therefore needs no interaction from the victim beyond the install itself (Elastic Security Labs, 2026-08-06). Every subpackage in the keyv repository was backdoored with a dropper that checks whether the Bun JavaScript runtime is present and, if not, detects the host platform and architecture and downloads Bun directly from its official release page before using it to execute the payload; the temporary Bun directory is deleted afterwards (Elastic Security Labs, 2026-08-06). The payload is cross-platform across Linux, macOS and Windows, and is heavily obfuscated at 711 kilobytes using control-flow flattening (Elastic Security Labs, 2026-08-06). It appears under two filenames (one in packages compromised directly from the keyv monorepo, another in packages trojanised during worm propagation) which share the same hash, so the filename indicates which generation of the infection a defender is looking at (Elastic Security Labs, 2026-08-06).

A second infection route that does not involve installing anything. In Visual Studio Code a folderOpen task under tasks.json runs the dropper when an infected repository is merely opened, and where the stolen credential set includes a GitHub App token the worm commits malicious hooks to up to 50 branches per accessible repository, injecting both a .claude/settings.json and a .vscode/tasks.json into each, so a developer can be infected by opening the repository (Elastic Security Labs, 2026-08-06). That is the operationally important departure: an organisation that responds to a supply-chain wave purely by pinning or freezing dependency installs has not closed the path that fires when an engineer clones and opens the repository, and the AI-assistant configuration file is a trust surface most repository review does not read.

Collection and exfiltration. A collector component scans over 300 unique patterns across credential stores on a developer machine, with notable targeting of AI-tooling credentials for Anthropic, Claude, Codex, Cursor, OpenAI and Gemini, alongside AWS, GCP, Azure and Alibaba Cloud credentials, GitHub personal-access tokens, JWTs and session tokens, HashiCorp Vault tokens, SSH private keys, Kubernetes service-account tokens and npm tokens (Elastic Security Labs, 2026-08-06). Harvested material is gzip-compressed, encrypted under a randomly generated AES-256-GCM key, and that key is in turn RSA-encrypted to the attacker's hardcoded public key (Elastic Security Labs, 2026-08-06). For delivery, CHAINDROP does not hardcode a command-and-control domain: it queries an Ethereum smart contract at runtime to retrieve the current exfiltration endpoint, using multiple RPC providers as fallbacks, so the operator can rotate infrastructure by updating the contract rather than by shipping a new payload (Elastic Security Labs, 2026-08-06). If that path and its successor fail, it falls back to exfiltrating through a public GitHub repository created under the victim's own account with a fixed Shai-Hulud description string (Elastic Security Labs, 2026-08-06).

Containment sequencing: remove the monitor before revoking. OX Security states the malware carries a dead man's switch that deletes the current machine if the stolen GitHub token is revoked (OX Security, 2026-08-04). Elastic's guidance is to revoke all GitHub tokens for impacted machines, and it reads the revoke-warning string in the worm's commit messages as an attempt to intimidate developers not to revoke the token (Elastic Security Labs, 2026-08-06). Dead man's switch: OX Security describes a dead man's switch tied to token revocation, separate from the commit-message string warning developers not to revoke the token, which OX calls an extortion string (OX Security, 2026-08-04) and Elastic reads as intimidation; Elastic does not mention a switch (Elastic Security Labs, 2026-08-06). Socket's later analysis of a release that it matches to this wave's file structure describes the mechanism in detail, and tells responders to remove the token monitor before revoking anything (see the update of 2026-10-11 below) (Socket, 2026-10-08). Sequence the response around it: isolating and imaging a suspected host and removing any token-monitor persistence before revoking its GitHub token loses nothing if the switch does not fire, while revoking first loses the host and its evidence if it does.

Propagation gate. The worm activates only when the credential sweep turns up an npm token meeting two conditions together: package-write permission, and the ability to publish without two-factor authentication (Elastic Security Labs, 2026-08-06). Given a qualifying token it enumerates every package the victim can publish to, downloads each latest tarball from the registry, and republishes it trojanised (Elastic Security Labs, 2026-08-06). That gate is the single most useful fact in the report for a defender, because it converts an unbounded ecosystem-wide risk into a property you can audit on your own accounts.

Triage: developer and CI hosts legitimately run script interpreters from package-manager parents on every build, and legitimately download toolchains, so neither alone discriminates. The separating features are that the runtime is fetched mid-install rather than during provisioning and its directory is removed immediately afterwards; that the process reads credential stores belonging to unrelated tools (cloud CLIs, SSH, Kubernetes, AI assistants) in one burst, which no ordinary build step does; and that outbound blockchain RPC follows the credential reads in the same process tree. Any one of these is weak on its own; the sequence is the signal.

keyv alone received over 600 million downloads last month

Execution is triggered via a preinstall hook in package.json.

package write permissions and the ability to publish without two-factor authentication (bypass_2fa)

CHAINDROP does not hardcode a C2 domain; instead, it queries an Ethereum smart contract

Elastic Security Labs 2026-08-06

A massive Shai-Hulud campaign hit npm

OX Security 2026-08-04

locates the Runner.Worker process on GitHub Actions runners, opens /proc/<pid>/maps and /proc/<pid>/mem, and searches live process memory for OpenID Connect (OIDC) tokens and runner secrets.

This is not forged provenance. The attestation says the tarball was built in that repository by that workflow, and that is true.

Pivot on the Rekor log index and the workflow identity inside the certificate, not on whether the signature checks out.

Palo Alto Networks Unit 42 2026-08-06

The malicious release shipped through the project's normal GitHub Actions pipeline and even carried valid build provenance.

Endor Labs 2026-10-08

Revoking the stolen GitHub token while the monitor is still running triggers the dead-man switch to wipe the user's home directory, regardless of where the revocation is done.

Socket 2026-10-08
Updaterun 2026-08-08T0409Z-intelactionsaffected_productsevidencesectorssourcestagstechniquesbody

Unit 42 published its own analysis of the CHAINDROP wave on 2026-08-06, and two of its findings change what defenders can rely on rather than adding detail to what they already knew.

The first is credential theft that never touches disk. An embedded Python helper hidden inside an encrypted blob in the payload "locates the Runner.Worker process on GitHub Actions runners, opens /proc/<pid>/maps and /proc/<pid>/mem, and searches live process memory for OpenID Connect (OIDC) tokens and runner secrets" (Unit 42, 2026-08-06). Ephemeral OIDC tokens exist to avoid long-lived secrets sitting in a file or a variable; reading them out of the runner's address space while they are live defeats that design, and any secret-scanning control that inspects files or environment variables at rest sees nothing.

The second is a single-target path that is worse than a forgery. Before collecting anything, the worm checks three environment variables: when it is inside GitHub Actions, in a repository whose name contains /opensearch-js, in a workflow whose reference contains release-drafter.yml, it runs only a republishing routine and exits without collecting; in an /opensearch-js repository with any other workflow it exits and steals nothing, staying silent in exactly the runs a maintainer is most likely to be reading (Unit 42, 2026-08-06). In that path it asks the runner for an OIDC token scoped to npm:registry.npmjs.org and trades it at npm's own trusted-publishing exchange for a real publish credential, the repository's legitimate release identity becomes the attacker's. It then downloads the latest tarball, bumps the patch version and adds a single dependency line typosquatting the project's own scope, never touching install scripts at all, so detections built around preinstall hooks would miss it. Finally it requests a second OIDC token for Sigstore, obtains a Fulcio certificate, builds an in-toto SLSA v1 provenance statement over the tarball's SHA-512 hash, signs it and uploads the entry to the public Rekor transparency log (Unit 42, 2026-08-06).

Unit 42 is explicit about what that means: "This is not forged provenance. The attestation says the tarball was built in that repository by that workflow, and that is true." Its guidance follows directly; a package having valid npm provenance does not mean the package is clean, only that the tarball came out of the workflow named in the certificate, and if that workflow is running attacker code then valid provenance is what you should expect to see. "Pivot on the Rekor log index and the workflow identity inside the certificate, not on whether the signature checks out" (Unit 42, 2026-08-06).

Unit 42 states it did not observe this path execute and that it cannot execute anywhere except in that one workflow in that one repository, but that it is fully implemented and reachable from the payload's main entry point (Unit 42, 2026-08-06). The worm also runs a locale gate before any collection, exiting cleanly on a Russian-language host (Unit 42, 2026-08-06).

Updaterun 2026-10-11T0256Z-intelactionsevidencesourcessourcing_notesummarytechniquesbody

A further package carrying this payload family was published on 2026-10-08: tensorlake@0.5.144, the npm SDK of an AI-agent sandbox platform, went out at 01:12 UTC with a preinstall hook that runs an obfuscated loader, which in turn launches a large payload under Bun; Socket flagged it about 11 minutes later, the release has since been removed and 0.5.143 is clean (Socket, 2026-10-08; Endor Labs, 2026-10-08). Socket says the hook and payload file names match the structure documented in the August wave (Socket, 2026-10-08). Endor Labs reports that the release shipped through the project's normal GitHub Actions pipeline with valid build provenance after the attacker modified the main branch first, most likely through a compromised maintainer account, and notes that provenance confirms where a build came from, not that the source was clean (Endor Labs, 2026-10-08). That is the situation the update of 2026-08-08 warned about, now on a published package. Socket reports that the payload harvests npm and GitHub tokens, AWS credentials (instance metadata, ECS, Secrets Manager and Parameter Store), a local HashiCorp Vault, Kubernetes service-account tokens and kubeconfig files, SSH keys, environment files and AI-tool configuration, resolves its endpoint from an Ethereum contract through about 30 public RPC endpoints with a GitHub fallback, and republishes itself with Sigstore provenance to packages the victim can publish (Socket, 2026-10-08).

The dead-man switch is described in detail here. A PowerShell monitor persisted through a scheduled task that runs at logon polls the GitHub API with the stolen token and, when the token is revoked, runs an attacker-supplied handler; Socket says the revoke-wipe string in the code appeared in earlier waves (Socket, 2026-10-08). Socket and OX Security both tell responders to isolate the host and remove the gh-token-monitor persistence first (a systemd user unit on Linux, a LaunchAgent on macOS, a scheduled task on Windows) and only then revoke and rotate, because revoking while the monitor runs wipes the user's home directory; removing the npm dependency alone does not remove that persistence (Socket, 2026-10-08; OX Security, 2026-10-08).

Attribution is split: Socket frames the release as part of this wave (Socket, 2026-10-08), while OX Security reports new public keys that may indicate an independent actor or a new group using the Shai-Hulud name (OX Security, 2026-10-08).

Correctionrun 2026-10-11T1307Z-auditbodysourcing_note

Elastic reads the string the worm writes into its commit messages beside the stolen token, warning that revoking it will crash production servers, as "an attempt to intimidate developers not to revoke the GitHub token" (Elastic Security Labs, 2026-08-06); OX Security calls the same string an extortion string and describes a dead man's switch separately (OX Security, 2026-08-04), which Elastic does not mention. Unit 42's three-variable check selects the opensearch-js republishing path: with all three set the worm republishes and exits without collecting, and in any other workflow of that project it exits without stealing; outside that project it follows its normal collection chain (Unit 42, 2026-08-06).

threat06 Aug 04:11Zmulti-sourceOpen finding →

2026-09-17 · view entry permalink →

NOTABLENATOB2

PhantomRaven: CrowdStrike attributes an LLM-generated npm infostealer, hidden from registry scanners via a remote-URL dependency trick, to a self-described bug-bounty hunter

CrowdStrike Counter Adversary Operations attributes PhantomRaven, an npm information stealer, to a single financially motivated actor who publicly describes themself as a bug-bounty hunter and has been active since November 2022 (CrowdStrike, 2026-09-16). CrowdStrike assesses with high confidence that the malware's code is LLM-generated, based on verbose per-symbol comments explaining the obvious, placeholder code, and statistical token-analysis patterns consistent with an LLM token stream (CrowdStrike, 2026-09-16). The actor distributes the stealer through typosquatted npm packages whose visible code is trivial and non-malicious, but whose package.json specifies a dependency via a raw HTTP URL rather than a normal registry reference, a Remote Dynamic Dependency that npm fetches silently at install time from attacker-controlled infrastructure, so the real payload never appears in the registry's own web interface or most automated scanners. The fetched payload registers as a preinstall script that auto-executes on npm install; CrowdStrike credits npm 12's June 2026 default block on unapproved preinstall scripts with narrowing this vector going forward (CrowdStrike, 2026-09-16).

Once running, the stealer harvests host/OS information, local and external IP addresses, Node.js version, the current working directory and process ID, Git- and npm-configured usernames and emails, and CI/CD environment variables covering GitHub Actions, GitLab CI, Jenkins and CircleCI, tokens, project IDs and build URLs consistent with harvesting CI/CD account credentials rather than end-user secrets. Exfiltration goes out over both HTTP GET and POST to the same command-and-control domains, and the code also carries an incomplete fallback WebSocket exfiltration path CrowdStrike reads as unfinished, redundant infrastructure rather than a live channel. CrowdStrike correlated npm usernames, an X account, a HackerOne-referencing alias, a GitHub account and a rejected 2025 PyPI submission back to the same operator, who publicly claims via their own X profile to have collected bounties from at least nine organizations across tech, retail and hospitality via Bugcrowd, Intigriti, YesWeHack, HackenProof and HackerOne, using compromises their own malware enabled as leverage for disclosure submissions (CrowdStrike, 2026-09-16). The malware family itself and its Remote Dynamic Dependency technique were first documented by Koi Security, whose original wave affected 126+ packages with over 86,000 downloads (Endor Labs, 2026-03-10, citing Koi Security); Endor Labs' own follow-up research identified three further waves totalling 88 more packages between November 2025 and February 2026 (Endor Labs, 2026-03-10). CrowdStrike's new contribution is the actor-identification and monetization-motive finding.

Triage: a legitimate build tool's own telemetry or update-check call is the benign lookalike; the discriminators are the absence of any corresponding, expected package purpose for the network call and a destination domain pattern that is freshly registered or "artifact"/"registry"-themed rather than a known vendor telemetry endpoint.

PhantomRaven is a simple JS information stealer that exfiltrates system information and continuous integration/continuous deployment (CI/CD)-related environment variables, likely in an attempt to collect account credentials. The code was almost certainly LLM-generated, and the author's technical sophistication is likely low.

In npm version 12 or later, if a developer attempts to install a dependency package with a preinstall script, they receive a warning message indicating that the script has been blocked and will not automatically execute.

CrowdStrike Counter Adversary Operations 2026-09-16
threat17 Sep 04:48Zsingle-sourceOpen finding →

Earlier coverage (1)

Co-occurring entities

Derived: referenced by the same focused operational entries (weekly summaries and report roundups don't count); ×N counts the shared entries.

Where this entity is cited

  • Threats2
  • Deep dive1
  • Research1

Source distribution

  • endorlabs.com2 (15%)
  • ox.security2 (15%)
  • socket.dev2 (15%)
  • bleepingcomputer.com1 (8%)
  • blog.gitguardian.com1 (8%)
  • crowdstrike.com1 (8%)
  • elastic.co1 (8%)
  • stepsecurity.io1 (8%)
  • other2 (15%)
All cited sources (13)