• व्यापक रूप से उपयोग होने वाले axios HTTP client के दो malicious versions npm पर प्रकाशित किए गए, जो install होने पर remote access trojan (RAT) वितरित करते हैं
  • हमलावर ने maintainer account credentials की चोरी के जरिए GitHub Actions को bypass किया और malicious package को manually upload किया
  • malicious versions में fake dependency plain-crypto-js@4.2.1 शामिल थी, जो postinstall script से RAT install करती है और निशान मिटा देती है
  • RAT macOS, Windows, Linux तीनों को संक्रमित करता है और C2 server (sfrclak.com:8000) से संपर्क करके अतिरिक्त payload डाउनलोड करता है
  • npm और GitHub ने तेज़ी से malicious versions हटा दिए, लेकिन supply chain security मज़बूत करने और credentials की सुरक्षा का महत्व फिर सामने आया

axios npm supply chain attack का overview

  • 31 मार्च 2026 को, व्यापक रूप से उपयोग होने वाली axios HTTP client library के दो malicious versions (axios@1.14.1, axios@0.30.4) npm पर प्रकाशित किए गए
  • हमलावर ने axios के प्रमुख maintainer के npm credentials चुराकर GitHub Actions CI/CD pipeline को bypass किया और malicious packages manually publish किए
  • दोनों versions में plain-crypto-js@4.2.1 नाम की fake dependency डाली गई, यह package postinstall script के जरिए remote access trojan (RAT) install करता है
  • RAT macOS, Windows, Linux सभी को target करता है और C2 (Command and Control) server (sfrclak.com:8000) से संपर्क कर second-stage payload डाउनलोड करता है
  • install के बाद यह malicious code और उसके निशान हटा देता है और साफ package.json से replace कर forensic detection से बचता है

attack timeline

  • 30 मार्च 05:57 UTC: plain-crypto-js@4.2.0 (normal version) प्रकाशित
  • 30 मार्च 23:59 UTC: plain-crypto-js@4.2.1 (malicious version) प्रकाशित, postinstall hook जोड़ा गया
  • 31 मार्च 00:21 UTC: axios@1.14.1 प्रकाशित, malicious dependency डाली गई
  • 31 मार्च 01:00 UTC: axios@0.30.4 प्रकाशित, वही malicious dependency डाली गई
  • 31 मार्च 03:15 UTC: npm ने दोनों malicious versions हटा दिए
  • 31 मार्च 04:26 UTC: npm ने plain-crypto-js को security holder stub (0.0.1-security.0) से replace किया

axios overview

  • axios JavaScript ecosystem में सबसे व्यापक रूप से उपयोग होने वाले HTTP clients में से एक है, और Node.js व browser दोनों में इस्तेमाल होता है
  • साप्ताहिक downloads 30 करोड़ से अधिक हैं, इसलिए केवल एक malicious release भी व्यापक नुकसान की संभावना रखती है
  • सामान्य developers के लिए npm install के दौरान malicious code install होना पहचानना मुश्किल है

attack stages

  • चरण 1 — maintainer account takeover

    • हमलावर ने jasonsaayman npm account takeover किया और email को ifstap@proton.me में बदल दिया
    • इसके बाद 1.x और 0.x release branches दोनों में malicious builds प्रकाशित किए
    • सामान्य release GitHub Actions के OIDC Trusted Publisher के जरिए प्रकाशित होती हैं, लेकिन axios@1.14.1 manual publish था, इसलिए उसमें gitHead और OIDC signature नहीं था
    • अनुमान है कि हमलावर ने लंबे समय तक मान्य npm access token का उपयोग किया
  • चरण 2 — malicious dependency की pre-deployment

    • plain-crypto-js@4.2.1 को nrwise@proton.me account से प्रकाशित किया गया
    • यह crypto-js का भेष धारण करता है और वही description व repository URL इस्तेमाल करता है
    • इसमें "postinstall": "node setup.js" hook शामिल है, जो install के समय अपने-आप चलता है
    • attack के बाद package.md को package.json से replace कर सबूत मिटाने की तैयारी की गई
  • चरण 3 — axios में dependency injection

    • plain-crypto-js@^4.2.1 को runtime dependency के रूप में जोड़ा गया
    • code में इसे एक बार भी import नहीं किया गया → phantom dependency
    • npm install के समय यह अपने-आप install होकर postinstall script चलाता है

RAT dropper (setup.js) analysis

  • obfuscation techniques

    • strings को array stq[] में encrypt करके रखा गया और _trans_1 (XOR) व _trans_2 (Base64+reverse) से decrypt किया गया
    • C2 URL है http://sfrclak.com:8000/6202033
    • decrypted strings में OS identifiers (win32, darwin), file paths, shell commands आदि शामिल हैं
  • platform-specific payloads

    • macOS

      • AppleScript को /tmp में लिखकर osascript से चलाया जाता है
      • C2 से RAT binary लेकर /Library/Caches/com.apple.act.mond में save और execute किया जाता है
      • file name को Apple system daemon जैसा दिखाने के लिए चुना गया
    • Windows

      • PowerShell path खोजने के बाद %PROGRAMDATA%\\wt.exe में copy किया जाता है
      • VBScript के जरिए C2 से PowerShell RAT download और execute किया जाता है
      • temporary files (.vbs, .ps1) execution के बाद delete कर दिए जाते हैं
    • Linux

      • curl से /tmp/ld.py download कर nohup python3 से चलाया जाता है
      • /tmp/ld.py file बनी रहती है
      • तीनों platforms में packages.npm.org/product0~2 POST body का उपयोग कर वैध npm traffic जैसा भेष बनाया जाता है
  • self-deletion and concealment

    • setup.js और package.json delete किए जाते हैं
    • package.md को package.json से replace कर normal package जैसा भेष बनाया जाता है
    • इसके बाद npm audit या manual review से detection संभव नहीं रहता
    • हालांकि node_modules/plain-crypto-js/ का मौजूद होना खुद infection का सबूत है

StepSecurity Harden-Runner के जरिए execution verification

  • Harden-Runner GitHub Actions में network, process, और file events को real time में log करता है
  • axios@1.14.1 install के दौरान C2 से दो connections (curl, nohup) detect किए गए
    • पहला connection npm install शुरू होने के 2 सेकंड बाद हुआ
    • दूसरा 36 सेकंड बाद हुआ और background process के रूप में चलता रहा
  • process tree analysis के अनुसार nohup process PID 1 (init) के अधीन orphan process के रूप में रहकर लगातार चलता रहा
  • file event logs में package.json को दो बार overwrite किया गया
    • पहली बार: install के दौरान malicious version लिखा गया
    • दूसरी बार: 36 सेकंड बाद साफ stub से replace किया गया

indicators of compromise (IOC)

  • malicious npm packages

    • axios@1.14.1 · shasum: 2553649f232204966871cea80a5d0d6adc700ca
    • axios@0.30.4 · shasum: d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71
    • plain-crypto-js@4.2.1 · shasum: 07d889e2dadce6f3910dcbc253317d28ca61c766
  • network

  • file paths

    • macOS: /Library/Caches/com.apple.act.mond
    • Windows: %PROGRAMDATA%\\wt.exe
    • Linux: /tmp/ld.py
  • attacker accounts

    • jasonsaayman (compromised maintainer)
    • nrwise (attacker-created account)
  • safe version

    • axios@1.14.0 (normal)

impact verification and response procedure

  • npm list axios या package-lock.json में 1.14.1 / 0.30.4 की जाँच करें
  • node_modules/plain-crypto-js की मौजूदगी जाँचें
  • OS-specific RAT files मिलने पर system को पूर्ण रूप से compromised मानें
  • CI/CD logs में इन versions के install history की जाँच करें और सभी secrets व tokens rotate करें

recovery steps

  1. axios को safe version (1.14.0 या 0.30.3) पर pin करें
  2. plain-crypto-js folder हटाकर npm install --ignore-scripts के साथ दोबारा install करें
  3. RAT के निशान मिलें तो system rebuild करें
  4. सभी credentials (AWS, SSH, CI/CD आदि) rotate करें
  5. CI/CD pipeline की जाँच करें और secrets बदलें
  6. automated builds में --ignore-scripts option का उपयोग करें
  7. C2 domain/IP को firewall या /etc/hosts से block करें

StepSecurity Enterprise features

  • Harden-Runner

    • GitHub Actions में network egress whitelist लागू करता है
    • abnormal traffic को block और log करता है
    • sfrclak.com:8000 connection को पहले से block किया जा सकता है
  • Dev Machine Guard

    • developer PCs पर installed npm packages की real-time monitoring
    • axios@1.14.1, 0.30.4 installed systems की तुरंत पहचान
  • npm Package Cooldown Check

    • newly published packages पर अस्थायी install block period लागू करता है
    • plain-crypto-js@4.2.1 जैसी तेज़ malicious publishing को detect कर सकता है
  • Compromised Updates Check

    • real-time malicious package DB के आधार पर PR merge को block करता है
    • axios@1.14.1, plain-crypto-js@4.2.1 तुरंत register किए गए
  • Package Search

    • पूरे organization के PRs और repositories में किसी specific package के introduction points खोजता है
    • impact range (repository, team, PR) तुरंत समझी जा सकती है
  • AI Package Analyst

    • npm registry की real-time monitoring और behavior-based malicious detection
    • दोनों malicious versions को publish होने के कुछ मिनटों में detect किया गया
  • Threat Center Alert

    • attack summary, IOC, response procedure सहित threat intel alert प्रदान करता है
    • SIEM integration के जरिए real-time visibility मिलती है

acknowledgements

  • axios maintainers और community ने GitHub issue #10604 के जरिए तेज़ी से response दिया
  • GitHub ने compromised account suspend किया और npm ने malicious versions हटाकर security holder लागू किया
  • maintainers, GitHub, और npm के coordinated response से दुनिया भर के developers को होने वाला नुकसान कम किया गया

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.