forge-jsxy npm Infostealer: IOCs और पहचान गाइड

forge-jsxy: npm का वो सूचना चुराने वाला टूल जो अपना नाम बदलता रहता है

विषय - सूची

अवश्य पढ़ें पोस्ट

रुचि के नवीनतम पोस्ट

TL, डॉ

मोटे तौर पर दो महीनेएक एकल npm इन्फोस्टीलर कई पैकेज नामों के तहत फिर से सामने आया है, जबकि इसका पेलोड लगभग अपरिवर्तित है। यह खुले तौर पर शुरू हुआ था। forge-jsxy, उत्पन्न forge-jsx3 / forge-jsx4 भाई-बहनों ने फिर डेवलपर इंफ्रास्ट्रक्चर के रूप में खुद को पेश करने के लिए "फोर्ज" ब्रांडिंग को पूरी तरह से हटा दिया - पहले zredis-typedऔर, सबसे हाल ही में pinokio-redis.

प्रत्येक वेरिएंट में यह सुविधा होती है। समान आंतरिक टूलचेन: नाम वाली फ़ाइलें forge-jsx-explorer-*तक relayPackageServe एक मॉड्यूल जो सेवा प्रदान करता है forge-jsxy-package.tgzऔर एक टिकाऊ रनटाइम जो एक डॉटेड डायरेक्टरी के अंतर्गत छिपा हुआ है ताकि यह एनपीएम पैकेज के डिलीट होने पर भी बना रहे।

पेलोड में लिखा है क्रिप्टोकरेंसी वॉलेट सामग्री होस्ट से डेवलपर क्रेडेंशियल प्राप्त करता है और उन्हें डिस्कॉर्ड वेब पर भेजता है।hooksइसमें HuggingFace Hub अपलोड और एक हार्डकोडेड C2 एंडपॉइंट शामिल है। यह OS-स्तर का ऑटोस्टार्ट इंस्टॉल करता है ताकि रीबूट के बाद यह फिर से चल सके, और यह क्लिपबोर्ड, कीबोर्ड और स्क्रीन गतिविधि को कैप्चर करता है। नवीनतम संस्करण, pinokio-redisयह स्वयं को "ऑटोडस्क फोर्ज" एकीकरण के रूप में वर्णित करता है - एक ऐसा विवरण जो कोड के कार्य से असंबंधित है।

पारिस्थितिकी तंत्रNPM
पेलोड वर्गबहु-स्तरीय सूचना चोरीकर्ता + रिमोट-कंट्रोल एजेंट (आरएटी)
प्राथमिक लक्ष्यक्रिप्टो वॉलेट, ब्राउज़र वॉलेट एक्सटेंशन, डेवलपर/क्लाउड क्रेडेंशियल
हठछिपा हुआ टिकाऊ रनटाइम + ओएस ऑटोस्टार्ट (पैकेज हटाने के बाद भी काम करता है)
exfiltrationवेब विवादhooks + रिले, हगिंगफेस हब, पोर्ट 9877 पर हार्डकोडेड C2
प्रेक्षित अवधिमई 2026 – जुलाई 2026 (जारी)
नवीनतम नामpinokio-redis:1.0.127

आक्रमण शरीर रचना

इस परिवार के सभी वेरिएंट एक ही आकार के माध्यम से स्थापित होते हैं: एक पैकेज। जो अपने लिस्टिंग पेज पर निष्क्रिय दिखता है लेकिन पोस्टइंस्टॉल हुक घोषित करता है, इसलिए पैकेज को निर्भरता के रूप में स्थापित करते ही पेलोड चलने लगता है। हुक पांच चरणों वाली श्रृंखला को संचालित करता है।

  • पहला चरण — साकार होना। इंस्टॉल स्क्रिप्ट एक बंडल किए गए, एन्कोडेड फ़ाइल को डिकोड करती है। यह रनटाइम स्क्रिप्ट के एक सेट में ब्लॉब करता है और उन्हें प्लेटफ़ॉर्म कॉन्फ़िगरेशन स्थान के अंतर्गत एक छिपी हुई निर्देशिका में लिखता है (forge-jsxy संस्करण डॉटेड .forge-jsxy/runtime/v का उपयोग करते थे)। / पथ)। चूंकि यह प्रतिलिपि node_modules के बाहर स्थित है, इसलिए npm पैकेज को हटाने या अप्रकाशित करने से चल रहे एजेंट को नहीं हटाया जाता है।
  • चरण 2 — लगे रहो। यह प्रक्रिया ऑपरेटिंग सिस्टम में ऑटोस्टार्ट एंट्री रजिस्टर करती है, जिससे रीबूट होने पर एजेंट फिर से लॉन्च हो जाता है। विंडोज में यह एक छिपे हुए पॉवरशेल डायग्नोस्टिक्स स्क्रिप्ट के माध्यम से चलता है; एजेंट प्रक्रिया को अलग से शुरू किया जाता है और विंडोज़हाइड सेटिंग का उपयोग किया जाता है ताकि कोई कंसोल विंडो दिखाई न दे।
  • तीसरा चरण — भाग निकलना। रनटाइम निरंतर एकीकरण मार्करों की जाँच करता है और CI वातावरण का पता चलने पर चुपचाप बाहर निकल जाता है, इसलिए स्वचालित बिल्ड सैंडबॉक्स को कुछ भी दिखाई नहीं देता है। forge-jsxy संस्करणों में, एक स्रोत टिप्पणी में कहा गया था कि package.json से दृश्यमान forgeInstall फ़ील्ड को जानबूझकर हटा दिया गया था "क्योंकि वह फ़ील्ड npm पर दिखाई देगा" - ऑपरेटर ने ट्रिगर मेटाडेटा को जानबूझकर सार्वजनिक सूची से बाहर रखा था।
  • चरण 4 — संग्रह करें। एक बार चालू हो जाने पर, एजेंट एक ही बार में निम्नलिखित जानकारी एकत्र करता है:
  1. क्रिप्टो वॉलेट सामग्री। एक बंडल की गई secret_filename_patterns.json लक्ष्य सूची wallet.dat, *.mnemonic / के लिए फ़ाइल सिस्टम स्वीप को संचालित करती है.seed / *.phrase फ़ाइलें, keypair.json, Ethereum UTC– इस बंडल में keystores, और *.p12 / *.pfx / *.jks keystores शामिल हैं। वॉलेट-डेरिवेशन लाइब्रेरी (bip39, secp256k1, base58check, और Solana हेल्पर) भी मौजूद हैं।
  2. ब्राउज़र वॉलेट एक्सटेंशन। एक chromiumExtensionDbHarvest मॉड्यूल क्रोमियम ब्राउज़र के स्थानीय एक्सटेंशन-स्टोरेज डेटाबेस को पढ़ता है, वह स्थान जहां ब्राउज़र-आधारित वॉलेट एक्सटेंशन अपना वॉल्ट डेटा रखते हैं।
  3. पहचान पत्र और गोपनीय जानकारी। एजेंट शेल हिस्ट्री और गोपनीय फाइलों को स्कैन करता है और डेवलपर/क्लाउड क्रेडेंशियल पढ़ता है, फिर अपलोड के लिए हगिंगफेस क्रेडेंशियल को एन्कोड करता है।
  4. लाइव इनपुट। क्लिपबोर्ड की सामग्री, कीबोर्ड इनपुट और स्क्रीनशॉट लगातार कैप्चर किए जाते हैं।
  • चरण 5 — बाहर निकलनाएकत्रित डेटा तीन चरणों के माध्यम से होस्ट से बाहर निकलता है। समानांतर रूप से संचालित होने वाले चैनल: डिस्कॉर्ड वेबhooks (डिस्कॉर्डवेबहुकपोस्ट) और एक डिस्कोर्ड रिले अपलोडर जो ` से बात करता हैdiscord.com/api/v10` (discordRelayUpload), HuggingFace Hub अपलोड (hfUpload), और एक पोर्ट 9877 पर हार्डकोडेड C2 एंडपॉइंट तक पहुंचा गया। एक रिलेपैकेजसर्व मॉड्यूल अतिरिक्त रूप से forge-jsxy-package.tgz को वापस आउटपुट करता है — वही प्रत्येक नाम परिवर्तन पर आर्टिफैक्ट का नाम।

महत्वपूर्ण संरचनात्मक बिंदु यह है कि चरण 1-3 स्थापना के समय चलते हैं। उपयोगकर्ता के साथ कोई हस्तक्षेप नहीं होता है, और चरण 1 पेलोड को पैकेज में कहीं रख देता है। मैनेजर नज़र नहीं रखता। एक डेवलपर जो अजीब निर्भरता को नोटिस करता है और npm uninstall चलाने से लिस्टिंग तो हट जाती है लेकिन एजेंट नहीं हटता।

पेलोड को तुरंत पढ़ना भी मुश्किल है। रनटाइम स्क्रिप्ट शिप नहीं की जाती हैं। स्पष्ट रूप से: एक एनकोड-तैनाती चरण परिचालन तर्क को एक के रूप में रखता है एनकोडेड ब्लॉब जो इंस्टॉलेशन चेन पूरी होने के बाद ही पठनीय स्क्रिप्ट में विस्तारित होता है इसे छिपी हुई रनटाइम डायरेक्टरी में डिकोड करता है। जो फाइलें दिखाई देती हैं लिस्टिंग पर — पतली पोस्टइंस्टॉल शिम और एक डिस्ट-मटेरियलाइजेशन सहायक — अंततः क्या चलता है, इसके बारे में बहुत कम जानकारी देता है। यह एन्कोडेड-डिलीवरी डिजाइन का ट्राइएज पर मापने योग्य प्रभाव पड़ा है: परिवार के पूरे जीवनकाल में, स्वचालित वर्गीकरण द्वारा कई पुष्ट वेरिएंट को सुरक्षित घोषित किया गया। और पेलोड इतना अस्पष्ट रहा है कि स्वचालित समीक्षा पूरी तरह से रुक गई है। परिवार की पहचान उजागर करने वाले व्यवहार केवल कोडित प्रक्रिया के बाद ही दिखाई देते हैं। स्टेज का विस्तार किया जाता है, और रनटाइम को सीधे पढ़ा जाता है।

समयरेखा

परिवार का भार उल्लेखनीय रूप से स्थिर रहा है; जो बदलता है वह है... बॉक्स पर नाम। चाप खुले "फोर्ज" ब्रांडिंग से आगे की ओर जाता है। असंबंधित डेवलपर टूल के रूप में छद्मवेश धारण करता है।

तिथि (2026) पैकेज : संस्करण नोट
मई (शुरुआती) forge-jsxy:1.0.81, :1.0.90 सबसे पहले पुष्टि किए गए वेरिएंट — AES-256-GCM-एन्क्रिप्टेड C2 के साथ RAT
मई 19 forge-jsxy:1.0.92 / 1.0.105 / 1.0.107 / 1.0.108 अभियान सक्रिय प्रकाशन में है; 1.0.92 को शुरू में सुरक्षित मानकर गलती की गई थी, लेकिन कोड की पुनः समीक्षा के बाद इसे उलट दिया गया।
मई के अंत में forge-jsx3 / forge-jsx4:1.0.122 / 1.0.123, zod-pino समान पैकेज नाम, एक ही टूलचेन
जून 4 forge-jsxy:1.0.120 जारी; एमएल मॉडल द्वारा सुरक्षित वर्गीकृत किया गया (एक चूक)
21-23 जून forge-jsxy:1.0.121 मॉड्यूल सेट 1.0.120 से अपरिवर्तित है
जुलाई 6 zredis-typed:1.0.127 नाम से "फोर्ज" हटा दिया गया; फिर भी जहाज़ चलते हैं forge-jsxy-package.tgz और forgeAgent* कॉन्फ़िगरेशन कुंजियाँ
जुलाई 7 pinokio-redis:1.0.127 वही टूलचेन; नया C2; स्वयं को "ऑटोडस्क फोर्ज" एकीकरण के रूप में वर्णित करता है

समयरेखा में दो बातें प्रमुखता से सामने आती हैं। पहली बात, संस्करण संख्या 1.0.127 को zredis-typed और pinokio-redis दोनों में हूबहू पुन: उपयोग किया गया है - नाम तो बदल जाते हैं लेकिन बिल्ड वंशावली रीसेट नहीं होती। दूसरी बात, "forge-*" नामों से दूर हटने का चलन सामान्य बुनियादी ढांचे (redis, pinokio) के नामों की ओर बदलाव के साथ मेल खाता है, जिससे डेवलपर द्वारा नाम को सरसरी तौर पर देखने और संशय करने की संभावना कम हो जाती है।

समझौता के संकेतक

नीचे दिए गए IOC को निष्क्रिय कर दिया गया है। C2 होस्ट forge-jsxy लाइन के बीच घूमता रहा। और नवीनतम संस्करण को उसी पोर्ट के साथ बरकरार रखा गया है।

सूचक वैल्यू में देखा
C2 एंडपॉइंट 212.193.3[.]61:9877 pinokio-redis:1.0.127
C2 एंडपॉइंट 79.108.162[.]160:9877 forge-jsxy लाइन, zredis-typed:1.0.127
एक्सफ़िल चैनल discord.com/api/webhooks/… (वेबहुक पोस्ट) सभी प्रकार
एक्सफ़िल चैनल discord.com/api/v10 (रिले अपलोड) सभी प्रकार
एक्सफ़िल चैनल हगिंगफेस हब अपलोड सभी प्रकार
परोसी गई कलाकृति forge-jsxy-package.tgz (वाया relayPackageServe) सभी प्रकार
टूलचेन फ़ाइलें chromiumExtensionDbHarvest, discordRelayUpload, discordWebhookPost, hfUpload, encode-hf-credentials, forge-jsx-explorer-* सभी प्रकार
लक्ष्य सूची secret_filename_patterns.json (wallet.dat, .mnemonic/.seed/.phrase, keypair.json, UTC--, .p12/.pfx/*.jks) सभी प्रकार
छिपा हुआ रनटाइम छितराया हुआ …/.forge-jsxy/runtime/v<version>/ कॉन्फ़िगरेशन निर्देशिका पथ forge-jsxy लाइन
विंडोज़ दृढ़ता हिडन पॉवरशेल "फोर्ज डायग्नोस्टिक्स" ऑटोस्टार्ट स्क्रिप्ट सभी प्रकार
ट्रिगर स्थापित करें पोस्टइंस्टॉल हुक एक डिस्ट-मटेरियलाइज़ेशन स्क्रिप्ट चेन को कॉल करता है सभी प्रकार

सबसे टिकाऊ पहचान संकेत कोई एक होस्ट या वेबहुक नहीं है - बल्कि वे हैं घुमाएँ — लेकिन टूलचेन फ़ाइलनाम और forge-jsxy-package.tgz ऐसी कलाकृतियाँ, जो हर बार नाम बदलने के बावजूद हूबहू बनी रही हैं।

आरोपण एवं प्रेक्षित व्यवहार

ये पैकेज एक से अधिक npm खातों के अंतर्गत प्रकाशित किए गए थे। forge-jsxy इस पंक्ति में प्रकाशक jacksonkaandorp2 (jacksonkaandorp2@outlook[.]com) का उपयोग किया गया है; पिनोकियो-रेडिस का नवीनतम संस्करण डोनिमिक द्वारा प्रकाशित किया गया था। (donimiqueakers@gmail[.]com)। दोनों खातों में न तो सत्यापित ईमेल था और न ही एक लिंक्ड सोर्स रिपॉजिटरी। खातों के बीच की मुख्य कड़ी यह है: टूलचेन, प्रकाशक की पहचान नहीं — मॉड्यूल के नाम वही हैं, वही .tgz फ़ाइल का उपयोग किया गया, और प्रकाशनकर्ता कोई भी हो, डेटा निकालने का वही तरीका बार-बार दोहराया गया।

कई प्रत्यक्ष व्यवहार जानबूझकर छिपाने का संकेत देते हैं, न कि किसी और कारण से। आकस्मिक अधिक संग्रहण:

रनटाइम को नोड_मॉड्यूल्स के बाहर एक छिपी हुई निर्देशिका में रखा जाता है, इसलिए यह उस पैकेज से अधिक समय तक मौजूद रहता है जिसने इसे डिलीवर किया था।

जब एजेंट को सीआई वातावरण का पता चलता है तो वह बाहर निकल जाता है, जिससे स्वचालित विश्लेषण सैंडबॉक्स में जोखिम सीमित हो जाता है।

एजेंट प्रक्रिया को अलग से लॉन्च किया जाता है और विंडो-छिपा हुआ.इन forge-jsxy संस्करणों में, एक टिप्पणी ने दृश्यमान इंस्टॉल फ़ील्ड के लोप को उस फ़ील्ड के "npm पर दृश्यमान" होने से जोड़ा।

सार्वजनिक पैकेज विवरण कोड से असंबंधित हैं - पिनोकियो-रेडिस को "ऑटोडस्क फोर्ज" एकीकरण के रूप में प्रस्तुत किया गया है।

सुरक्षाकर्मियों के लिए एक बार-बार सामने आने वाली पहचान संबंधी कमी पर ध्यान देना महत्वपूर्ण है। स्वचालित वर्गीकरण: इस परिवार में कई पुष्ट वेरिएंट पाए गए। कोड समीक्षा से पहले एमएल क्लासिफायर द्वारा सुरक्षित के रूप में स्कोर किया गया था, जिसे बाद में ठीक किया गया। निर्णय। समीक्षक जिन स्थिर तत्वों पर ध्यान केंद्रित कर सकता है - स्थापना-समय चेन, हिडन रनटाइम, टूलचेन फ़ाइलनाम — ये बिल्कुल वही हैं जो नाम परिवर्तन के बाद भी बने रहते हैं।

हम उपरोक्त को प्रेक्षित व्यवहार के रूप में वर्णित करते हैं। हम इसका श्रेय किसी को नहीं देते। हम किसी भी नामित व्यक्ति के लिए अभियान नहीं चलाते हैं, और हम ऑपरेटर के बारे में कोई दावा नहीं करते हैं। कोड और बुनियादी ढांचे द्वारा प्रदर्शित की गई चीज़ों से परे पहचान या उद्देश्य।

प्रभाव, रुझान और रक्षक मार्गदर्शन

कौन जोखिम में है? यह संग्रह सेट विशेष रूप से डेवलपर्स को लक्षित करता है। मशीनें: क्रिप्टोकरेंसी वॉलेट और कीस्टोर, ब्राउज़र वॉलेट एक्सटेंशन, शेल हिस्ट्री और क्लाउड/सर्विस क्रेडेंशियल्स। कोई भी व्यक्ति जो इंस्टॉल करता है प्रभावित पैकेज — प्रत्यक्ष रूप से या किसी अन्य रूप में सकर्मक निर्भरता - दौरान लाइव विंडो दायरे में है, और निरंतरता डिजाइन का मतलब है कि पैकेज हटाने के बाद भी जोखिम समाप्त नहीं होता है।

दृढ़ता क्यों महत्वपूर्ण है। क्योंकि चरण 1 पेलोड को कॉपी करता है छिपी हुई रनटाइम डायरेक्टरी और स्टेज 2 ऑटोस्टार्ट को रजिस्टर करता है, सामान्य सुधार की प्रवृत्ति (खराब निर्भरता को अनइंस्टॉल करें, नोड_मॉड्यूल्स को हटा दें, पुनः स्थापित करने से एजेंट को हटाया नहीं जाता है। घटना प्रतिक्रिया को इसकी तलाश करनी होगी। केवल पैकेज ही नहीं, बल्कि आउट-ऑफ-ट्री रनटाइम और ऑटोस्टार्ट एंट्री भी।

प्रचलन। यह परिवार एक ऐसे पैटर्न का उदाहरण प्रस्तुत करता है जिस पर ध्यान देना चाहिए: एक स्थिर और परिपक्व पेलोड, जो डिस्पोजेबल पदार्थों की एक धारा में लिपटा हुआ है।पैकेज के नाम जो किसी पूर्व हटाए गए नाम से अलग हो जाते हैं पहचानने योग्य, उन नामों की ओर जो सामान्य बुनियादी ढांचे के रूप में पढ़े जाते हैं। नाम-आधारित इसके चलते ब्लॉकलिस्ट और प्रकाशक की प्रतिष्ठा जल्दी ही फीकी पड़ जाती है; व्यवहार- और कलाकृति-आधारित संकेत ऐसा नहीं करते हैं।

डेवलपर्स और उपभोक्ताओं के लिए

इंस्टॉलेशन के समय चलने वाली स्क्रिप्ट को प्राथमिक जोखिम का स्रोत मानें। जहां संभव हो, स्क्रिप्ट को अक्षम करके इंस्टॉल करें और किसी भी निर्भरता की समीक्षा करें जो किसी समस्या का संकेत देती हो। पोस्टइंस्टॉल। पारगमनशील निर्भरताओं को चिह्नित करें और उनकी जांच करें; इस प्रकार का मैलवेयर प्रत्यक्ष निर्भरता के साथ-साथ उप-निर्भरता के माध्यम से भी आसानी से आ सकता है।

संदिग्ध होस्ट पर, पैकेज से परे जाकर जांच करें: प्लेटफ़ॉर्म कॉन्फ़िगरेशन स्थान में छिपी हुई रनटाइम निर्देशिका, अप्रत्याशित ऑटोस्टार्ट प्रविष्टि आदि की तलाश करें। और डिस्कोर्ड वेबहुक या :9877 एंडपॉइंट्स से आउटबाउंड कनेक्शन।

मान लें कि प्रभावित होस्ट पर जोखिम अवधि के दौरान मौजूद कोई भी वॉलेट सीड वाक्यांश, कीस्टोर या क्रेडेंशियल खतरे में है, और उसे बदल दें।

रजिस्ट्रियों और रक्षकों के लिए

टिकाऊ कलाकृतियों (forge-jsxy-package.tgz, forge-jsx-explorer-* / chromiumExtensionDbHarvest / discordRelayUpload) पर अलर्ट पैकेज के नाम के बजाय (फ़ाइलनामों के आधार पर), जो बदलता रहता है।

उस संरचनात्मक संयोजन को चिह्नित करें जिस पर परिवार निर्भर करता है — एक पोस्टइंस्टॉल जो स्क्रिप्ट को एक छिपे हुए कॉन्फ़िगरेशन-डायरेक्टरी पथ और एक ऑपरेटिंग सिस्टम में बदल देता है। ऑटोस्टार्ट पंजीकरण — इसमें शामिल विशिष्ट स्ट्रिंग्स से स्वतंत्र।

पैकेज पर नाम कम से कम चार बार बदला जा चुका है; अंदर का डिब्बा ऐसा नहीं हुआ है। कोड की कार्यप्रणाली पर आधारित पहचान प्रणाली हर चीज से आगे निकल चुकी है। अब तक लेबलिंग का काम पूरा हो चुका है।

एससीए-टूल्स-सॉफ्टवेयर-कंपोजिशन-एनालिसिस-टूल्स
अपने सॉफ़्टवेयर जोखिमों को प्राथमिकता दें, उनका निवारण करें और उन्हें सुरक्षित करें।
अपना निःशुल्क खाता प्राप्त करें।
किसी क्रेडिट कार्ड की आवश्यकता नहीं।

अपने सॉफ़्टवेयर विकास और वितरण को सुरक्षित करें

Xygeni प्रोडक्ट सूट के साथ