AsyncAPI and Microsoft: AsyncAPI Malware Contains Modules to Steal GitHub, npm, Cloud and AI API Credentials

AsyncAPI and Microsoft: AsyncAPI Malware Contains Modules to Steal GitHub, npm, Cloud and AI API Credentials

AsyncAPI npm Supply Chain Attack Exposes Developers to Credential Theft

On July 14, 2026, attackers executed a supply chain compromise targeting the AsyncAPI project on the npm registry, publishing five malicious package versions within a 90-minute window. The attack bypassed traditional security measures by embedding malware that activates upon module import, rather than relying on install scripts rendering the ignore-scripts safety setting ineffective.

Attack Mechanics & Impact

The malware, identified by Microsoft, delivered a modular runtime called Miasma, capable of persistence, remote command execution, and credential theft. While some harvesting modules were dormant in the analyzed sample, the framework included encrypted logic that could be activated later via remote updates.

The compromised packages @asyncapi/specs, @asyncapi/generator, generator-components, and generator-helpers were distributed through legitimate npm publishing workflows, leveraging a misconfigured GitHub Actions workflow that exposed a privileged bot token. This allowed attackers to push poisoned commits under a valid npm identity, expanding the attack’s reach to developer laptops, CI/CD pipelines, containers, and production services.

Credential Theft Capabilities

Miasma targeted over 100 environment variables and files, including:

  • Source control tokens (GitHub, GitLab, npm, Node.js auth tokens)
  • Cloud credentials (AWS, Azure, Google Cloud)
  • AI platform keys (Anthropic, OpenAI)
  • Container & orchestration tokens (Docker, Kubernetes)
  • Secret management files (.npmrc, AWS credentials, kubeconfig, Vault tokens, SSH keys)

When a GitHub token was detected, the malware could enumerate repositories and CI context via public APIs, mirroring tactics from prior npm-based credential theft campaigns.

Persistence & Command Channels

The attack chain involved:

  1. Initial compromise via a malicious pull request exploiting a misconfigured GitHub Actions workflow.
  2. Poisoned package releases published through AsyncAPI’s trusted pipeline.
  3. Hidden Node process execution upon package import, fetching an encrypted second-stage payload from IPFS.
  4. Installation of sync.js in OS-specific NodeJS directories (Windows, macOS, Linux).
  5. C2 communication via 85.137.53[.]71 (ports 8080, 8081, 8091) and decentralized fallback networks.

Indicators of Compromise (IoCs)

Compromised Packages & Hashes:

  • @asyncapi/specs@6.11.2-alpha.1 (SHA-256: d425e4583cc6185d41e95c45eda00550045a5d1919b9a012236a4520d009dbd7)
  • @asyncapi/specs@6.11.2 (SHA-256: 9b2e65db653ca8575c9b10eefb9a80c6006404812c2ec212bf5675e3c690233b)
  • @asyncapi/generator@3.3.1 (SHA-256: bfaeb987faa6de2b5a5eb63b1233d055215b09b0349a9394f2175fd7cdf385e4)
  • @asyncapi/generator-components@0.7.1 (SHA-256: 082d733db0687dcd768104972b065d4b58cb1e6043688c6c20fa3702337f36ab)
  • @asyncapi/generator-helpers@1.1.1 (SHA-256: 34014776d3d3ff11bc4439b02fd7ac0f02a887eb3a052eeafff236e2f6db8ad1)

Second-Stage Payloads:

  • IPFS CIDs: Qmet4fhsAaWMBUxNDfREHwgiyDeSWy4YSYs9wiKUW5jGyf (generator-family), QmQobZSp1wRPrpSEQ56qnyq7ecZh5Bg5k1fnjt4SUwwHb9 (specs)
  • Drop paths: %LOCALAPPDATA%\NodeJS\sync.js (Windows), ~/.local/share/NodeJS/sync.js (Linux), ~/Library/Application Support/NodeJS/sync.js (macOS)

C2 Infrastructure:

  • Primary IP: 85.137.53[.]71 (ports 8080, 8081, 8091)
  • Publisher identity: npm-oidc-no-reply@github[.]com

Mitigation Steps (For Reference)

Teams were advised to:

"id": "ASYMIC1785327908",
"linkid": "asyncapi, microsoft-threat-intelligence",
"type": "Cyber Attack",
"date": "7/2026",
"severity": "100",
"impact": "5",
"explanation": "Attack threatening the organization's existence"
{'affected_entities': [{'customers_affected': 'Developers, organizations using '
                                              'AsyncAPI packages',
                        'industry': 'Software Development',
                        'name': 'AsyncAPI Project',
                        'type': 'Open-source software project'}],
 'attack_vector': 'Malicious npm package import',
 'customer_advisories': 'Teams advised to rotate secrets and purge caches',
 'data_breach': {'data_encryption': 'Yes (encrypted second-stage payload)',
                 'data_exfiltration': 'Yes (via C2 communication)',
                 'file_types_exposed': ['.npmrc',
                                        'AWS credentials',
                                        'kubeconfig',
                                        'Vault tokens',
                                        'SSH keys'],
                 'sensitivity_of_data': 'High (authentication tokens, API '
                                        'keys, SSH keys)',
                 'type_of_data_compromised': ['Source control tokens',
                                              'Cloud credentials',
                                              'AI platform keys',
                                              'Container & orchestration '
                                              'tokens',
                                              'Secret management files']},
 'date_detected': '2026-07-14',
 'date_publicly_disclosed': '2026-07-14',
 'description': 'On July 14, 2026, attackers executed a supply chain '
                'compromise targeting the AsyncAPI project on the npm '
                'registry, publishing five malicious package versions within a '
                '90-minute window. The attack bypassed traditional security '
                'measures by embedding malware that activates upon module '
                'import, delivering a modular runtime called Miasma capable of '
                'persistence, remote command execution, and credential theft. '
                'The compromised packages were distributed through legitimate '
                'npm publishing workflows, leveraging a misconfigured GitHub '
                'Actions workflow that exposed a privileged bot token.',
 'impact': {'brand_reputation_impact': 'High (trusted npm packages '
                                       'compromised)',
            'data_compromised': 'Source control tokens, cloud credentials, AI '
                                'platform keys, container & orchestration '
                                'tokens, secret management files',
            'identity_theft_risk': 'High (PII and credentials exposed)',
            'operational_impact': 'Potential unauthorized access to '
                                  'repositories, CI/CD pipelines, and cloud '
                                  'environments',
            'systems_affected': 'Developer laptops, CI/CD pipelines, '
                                'containers, production services'},
 'initial_access_broker': {'backdoors_established': 'Poisoned npm packages '
                                                    'with hidden Node process '
                                                    'execution',
                           'entry_point': 'Malicious pull request exploiting '
                                          'misconfigured GitHub Actions '
                                          'workflow',
                           'high_value_targets': 'GitHub tokens, cloud '
                                                 'credentials, CI/CD '
                                                 'pipelines'},
 'investigation_status': 'Ongoing',
 'lessons_learned': 'Importance of securing CI/CD pipelines, reviewing GitHub '
                    'Actions token scopes, and monitoring for malicious '
                    'package imports.',
 'motivation': 'Credential theft, data exfiltration',
 'post_incident_analysis': {'corrective_actions': 'Securing CI/CD pipelines, '
                                                  'reviewing token scopes, '
                                                  'implementing package import '
                                                  'monitoring',
                            'root_causes': 'Misconfigured GitHub Actions '
                                           'workflow exposing privileged bot '
                                           'token, lack of package import '
                                           'monitoring'},
 'recommendations': ['Remove compromised package versions and purge npm/Yarn '
                     'caches',
                     'Rotate all exposed secrets (cloud keys, tokens, API '
                     'credentials)',
                     'Hunt for `sync.js` in NodeJS directories and detached '
                     'Node processes',
                     'Pin known-good versions and rebuild from clean lockfiles',
                     'Block malicious IPFS CIDs',
                     'Update npm CLI and review GitHub Actions token scopes'],
 'references': [{'source': 'Microsoft Security Blog'}],
 'response': {'containment_measures': 'Removal of compromised package '
                                      'versions, purging npm/Yarn caches',
              'recovery_measures': 'Pinning known-good versions, rebuilding '
                                   'from clean lockfiles, updating npm CLI',
              'remediation_measures': 'Rotation of exposed secrets, hunting '
                                      'for `sync.js` files, blocking malicious '
                                      'IPFS CIDs',
              'third_party_assistance': 'Microsoft (malware analysis)'},
 'title': 'AsyncAPI npm Supply Chain Attack Exposes Developers to Credential '
          'Theft',
 'type': 'Supply Chain Compromise',
 'vulnerability_exploited': 'Misconfigured GitHub Actions workflow (exposed '
                            'privileged bot token)'}
Great! Next, complete checkout for full access to Rankiteo Blog.
Welcome back! You've successfully signed in.
You've successfully subscribed to Rankiteo Blog.
Success! Your account is fully activated, you now have access to all content.
Success! Your billing info has been updated.
Your billing was not updated.