फैंटमसिंक: npm क्रिप्टो पैकेज वॉलेट स्टीलर को छुपाते हैं

फैंटमसिंक: आठ क्रिप्टो-डेवलपर एनपीएम पैकेज एक विलंबित, स्व-स्थायी ड्रॉपर को छुपाते हैं

TL, डॉ

एक ही एनपीएम प्रकाशक ने आठ छोटे पैकेज जारी किए जिनके नाम ब्लॉकचेन और वॉलेट विकास के लिए रोजमर्रा के बिल्डिंग ब्लॉक की तरह लगते थे। base58-utils, abi-encode, eth-dev, arb-kit, layer2-sdk, solana-key-utils, eth-wallet-helpers, तथा crypto-validate-libप्रत्येक मॉड्यूल में एक कार्यशील यूटिलिटी मौजूद है। हालाँकि, उस यूटिलिटी के बाद एक स्व-प्रेरित कोड ब्लॉक जोड़ा गया है जो मॉड्यूल आयात होते ही चलने लगता है।

आयात के लगभग 37 सेकंड बादवह ब्लॉक पैकेज के अंदर परीक्षण फिक्स्चर के रूप में छिपे हुए पेलोड को डिकोड करता है, उसे उपयोगकर्ता के होम डायरेक्टरी के अंतर्गत एक छिपी हुई फ़ाइल में लिखता है, और प्रत्येक बार पुनः आरंभ होने के लिए स्वयं को पंजीकृत करता है। login यह विंडोज़, macOS और लिनक्स पर काम करता है और डिकोड की गई स्क्रिप्ट को एक अलग प्रक्रिया के रूप में लॉन्च करता है। npm install के दौरान इसमें कुछ भी सक्रिय नहीं होता; यह कोड के आयात और चलने का इंतजार करता है, जो कि इंस्टालेशन की तुलना में अधिक शांत प्रक्रिया है।

पेलोड अपारदर्शी नहीं है। यह सादे बेस64 के रूप में भेजा जाता है, इसलिए "टेस्ट फिक्स्चर" को डिकोड करने से दूसरा चरण पूरी तरह से प्राप्त हो जाता है: एक क्रिप्टो-वॉलेट और रहस्य चुराने वाला यह मशीन के निष्क्रिय होने का इंतजार करता है, निजी कुंजी और सीड वाक्यांशों को एकत्रित करता है, प्रत्येक खोज को हार्डकोडेड RSA-4096 कुंजी के साथ एन्क्रिप्ट करता है, और इसे सार्वजनिक IPFS स्टोरेज पर पिन करके बाहर निकालता है, और हर 12 घंटे में वापस सूचना भेजता है।

हम क्लस्टर को ट्रैक करते हैं फैंटमसिंकविश्लेषण के समय सभी आठ पैकेज एनपीएम रजिस्ट्री में लाइव थे और एक ही खाते के तहत प्रकाशित किए गए थे।

पारिस्थितिकी तंत्रNPM
संकुलbase58-utils, abi-encode, eth-dev, arb-kit, layer2-sdk, solana-key-utils, eth-wallet-helpers, crypto-validate-lib
लक्षित प्लेटफ़ॉर्मविंडोज, मैकओएस, लिनक्स
मुख्य व्यवहारविलंबित, आयात-समय ड्रॉपर को परीक्षण फिक्स्चर के रूप में छिपाया गया है; क्रॉस-प्लेटफ़ॉर्म परसिस्टेंस स्थापित करता है।
पेलोडक्रिप्टो-वॉलेट और गुप्त जानकारी चुराने वाला उपकरण, RSA-4096 एन्क्रिप्शन, सार्वजनिक IPFS पिनिंग के माध्यम से डेटा की चोरी

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

पहली नजर में हर पैकेज सामान्य सा लगता है। बेस58-यूटिल्सउदाहरण के लिए, यह कुछ किलोबाइट का शून्य-निर्भरता वाला बेस58/बिटकॉइन-वाईआईएफ सहायक कोड है - बिल्कुल वैसा ही जैसा नाम से पता चलता है। संबंधित कोड यहाँ स्थित है। बाद मॉड्यूल का मॉड्यूल.निर्यातजहां फाइल के ऊपरी हिस्से को सरसरी तौर पर पढ़ने वाले पाठक की नज़र पड़ने की संभावना नहीं है: एक स्व-प्रेरित फ़ंक्शन जो टाइमर के साथ खुद को शेड्यूल करता है।

पैकेज स्रोत से पुनर्निर्मित संचालन की श्रृंखला इस प्रकार चलती है:

1. Package is required() by the host project 2. A self-invoking function schedules a callback ~37,000 ms later (setTimeout) 3. On fire, the callback reads test/fixtures/keypairs.dat (a base64 blob) 4. It base64-decodes that blob into a Node.js script 5. It writes the script to ~/.cache-db/.node-sync/syncd.js (mode 0o700) 6. It installs login-persistence for that script (see below) 7. It spawns "node syncd.js" as a detached process

दो डिजाइन विकल्प विशेष रूप से उल्लेखनीय हैं।

पेलोड एक परीक्षण उपकरण के रूप में यात्रा करता है। दूसरा चरण स्पष्ट कोड के रूप में नहीं लिखा गया है। यह इसमें मौजूद है। test/fixtures/keypairs.datएक बेस64 फ़ाइल जिसका नाम एक ऐसे पैकेज में घुलमिल जाता है जो कुंजी युग्मों को संभालने का दावा करता है। टारबॉल को सरसरी तौर पर देखने वाले किसी व्यक्ति को यह नमूना डेटा जैसा लगता है; संलग्न कोड के लिए, यह डिकोड करने और चलाने के लिए एक स्क्रिप्ट है। ड्रॉपर में स्वयं कोई नेटवर्क पता नहीं होता है - वे दूसरे चरण में होते हैं - लेकिन कोई अतिरिक्त अस्पष्टीकरण नहीं है: फिक्स्चर बेस64 की एक एकल परत है, इसलिए इसे डिकोड करना (बेस64 -डी) पूर्ण पुनर्प्राप्त करता है syncd.js और इसके नेटवर्क व्यवहार के बारे में। अगला भाग बताता है कि वह पुनर्प्राप्त चरण क्या करता है।

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

एक बार डिकोड की गई स्क्रिप्ट डिस्क पर आ जाने के बाद ~/.cache-db/.node-sync/syncd.js — एक ऐसा पथ चुना गया है जो एक नियमित कैश निर्देशिका की तरह पढ़ा जाता है — ड्रॉपर इसे तीनों प्रमुख प्लेटफार्मों पर रीबूट के बाद भी सुरक्षित रखता है:

  • लिनक्स: एक क्रॉन एंट्री जो स्क्रिप्ट को पुनः प्रारंभ करती है। यह एंट्री मौजूदा क्रॉनटैब को फ़िल्टर करके स्थापित की जाती है। grep -v syncdजिसका एक दुष्प्रभाव यह है कि समान नाम के लिए खोज करने वाली सामान्य सूची से नई प्रविष्टि छूट जाती है।
  • Windows: एक निर्धारित कार्य जिसका नाम है विननोडसिंकइसे 12 मिनट के अंतराल पर दोबारा प्रसारित किया जाएगा।
  • मैक ओ एस: एक लॉन्चड जॉब जिसे लेबल किया गया है कॉम.एप्पल.सिंक्डकई पैकेजों में मौजूद एक लेबल जो एक वैध ऐप्पल सिस्टम सेवा की नकल करता है।

इसके बाद स्क्रिप्ट को तुरंत एक अलग प्रक्रिया के रूप में शुरू किया जाता है, इसलिए आयात करने वाले प्रोग्राम के समाप्त होने के बाद भी यह चलती रहती है।

दूसरे चरण में क्या होता है

क्योंकि फिक्स्चर एक सिंगल बेस64 लेयर है, इसलिए दूसरा चरण साफ-सुथरा डिकोड होता है और इसे पूरी तरह से पढ़ा जा सकता है। सभी आठ पैकेज एक ही स्क्रिप्ट के तीन वेरिएंट में से एक को ले जाते हैं, जो हेडर कमेंट में खुद को पहचानता है। फैंटम सिंकड v3 - टॉपो ड्यूरमिएंटे (“स्लीपिंग मोल”)। इसका काम क्रिप्टोकरेंसी वॉलेट की जानकारी और डेवलपर के गुप्त रहस्यों को चुराना और उन्हें सिस्टम से बाहर भेजना है। यह इन चरणों में काम करता है:

  • 1. मशीन के निष्क्रिय होने तक प्रतीक्षा करें। कुछ भी करने से पहले, syncd.js यह जांच करता है कि उपयोगकर्ता कितने समय से निष्क्रिय है और केवल एक निश्चित सीमा (लगभग 15 मिनट) के बाद ही आगे बढ़ता है। xprintidle लिनक्स पर, आयोरेग macOS पर HIDIdleTime और Windows पर PowerShell आइडल-टाइम क्वेरी का उपयोग किया जाता है। इसलिए डेटा संग्रह तब होता है जब कीबोर्ड पर कोई मौजूद नहीं होता है।
  • 2. दूरस्थ नियंत्रण वाला सक्रियण स्विच प्राप्त करें।यह स्क्रिप्ट कार्रवाई करने से पहले डेड-ड्रॉप से ​​एक छोटा कॉन्फ़िगरेशन प्राप्त करती है। प्राथमिक स्रोत एक GitHub गिस्ट रॉ यूआरएल है (gist.githubusercontent.com/juang55/…/cfg.txt); स्क्रिप्ट तभी सक्रिय होती है जब वह कॉन्फ़िगरेशन इस प्रकार पढ़ा जाता है सक्रिय=1यदि गिस्ट उपलब्ध नहीं है, तो यह तीन हार्डकोडेड आईपीएफएस सामग्री पहचानकर्ताओं पर वापस आ जाता है, जिन्हें सार्वजनिक गेटवे के माध्यम से प्राप्त किया जाता है। गेटवे.पिनटा.क्लाउड, ipfs.io, तथा cloudflare-ipfs.comइससे ऑपरेटर को बाद में हथियार रखने/निरस्त्र करने का नियंत्रण और एक ऐसा बैकअप मिलता है जो हमले से सुरक्षित रहता है। (सबसे छोटा संस्करण, जो इसमें भेजा जाता है) क्रिप्टो-वैलिडेट-लिब, eth-वॉलेट-सहायक, तथा सोलाना-की-यूटिल्स(इसमें गिस्ट लेयर को हटा दिया गया है और यह केवल IPFS पहचानकर्ताओं पर निर्भर करता है।)
  • 3. बटुए से जुड़ी सामग्री और रहस्यों को इकट्ठा करें। यह स्क्रिप्ट उपयोगकर्ता की होम डायरेक्टरी में जाती है — ~/.config/solana, ~/.ethereum/keystore, ~/.फाउंड्री, ~/.hardhat, ~ / .ssh, तथा डेस्कटॉप/दस्तावेज़/डाउनलोड (स्पेनिश भाषा के फ़ोल्डर नामों सहित), साथ ही ~/.env और शेल आरसी फ़ाइलें, और समकक्ष AppData विंडोज़ पर स्थित स्थानों पर। यह एथेरियम निजी कुंजी, बिटकॉइन WIF कुंजी, BIP-39 सीड वाक्यांश, सोलाना कुंजीजोड़े, एथेरियम कीस्टोर JSON, SSH कुंजी और गुप्त-युक्त पर्यावरण चर को लक्षित करता है। बड़ा संस्करण (में एबी-एनकोड, बेस58-यूटिल्स, एथ-देव) इसमें 2048 शब्दों का पूरा BIP-39 शब्दकोश शामिल है और यह नियमित अभिव्यक्तियों का उपयोग करता है। उद्धरण यह किसी भी पाठ से व्यक्तिगत कुंजी और मान्य बीज वाक्यांशों का मिलान करता है; इसके दो छोटे संस्करण कीवर्ड द्वारा फ़ाइलों का मिलान करते हैं (बीज, स्मृति सहायक, बटुआ, metamask, प्रेत, खाता बही, Trezor, …) और पूरी फाइलें अपलोड करें।
  • 4. सार्वजनिक पिनिंग सेवा के माध्यम से एन्क्रिप्ट करें और डेटा को बाहर निकालें। प्रत्येक निष्कर्ष को होस्ट फिंगरप्रिंट के साथ बंडल किया जाता है (उपयोगकर्ता नाम@होस्टनेमडेटा का आकार (प्लेटफ़ॉर्म, टाइमस्टैम्प) होता है और इसे स्क्रिप्ट में एम्बेडेड हार्डकोडेड RSA-4096 पब्लिक कुंजी से एन्क्रिप्ट किया जाता है। एन्क्रिप्टेड रिकॉर्ड को फिर IPFS पर पिन करके अपलोड किया जाता है। api.pinata.cloud/pinning/pinJSONToIPFSहार्डकोडेड पिनाटा एपीआई क्रेडेंशियल्स के साथ प्रमाणित। जब्त करने के लिए कोई विशेष सी2 सर्वर नहीं है: चुराया गया डेटा सार्वजनिक विकेन्द्रीकृत संग्रहण में रखा जाता है, जिसे ऑपरेटर परिणामी सामग्री हैश का उपयोग करके पुनः प्राप्त कर सकता है। अपलोड कुछ सेकंड के यादृच्छिक अंतराल के साथ किए जाते हैं, और एक स्थानीय लॉग रिकॉर्ड किया जाता है। टाइमस्टैम्प | कुंजी प्रकार | लौटाया गया हैश रखा जाता है ~/.cache-db/.node-sync/.sl.
  • 5. 12 घंटे के चक्र पर निरंतर संकेत भेजते रहें। दूसरा चरण अपनी निरंतरता को पुनः स्थापित करता है — लिनक्स पर एक क्रॉन एंट्री, एक कॉम.एप्पल.सिंक्ड macOS पर launchd जॉब, और एक शेड्यूल्ड टास्क जिसका नाम है विंडोजनोडसिंक विंडोज़ पर — हर 12 घंटे में पुनः चलने के लिए सेट करें। ध्यान दें कि यह एक विभिन्न ड्रॉपर द्वारा इंस्टॉल किए गए विंडोज टास्क का नाम (विननोडसिंकदोनों ही तलाशने लायक हैं।

समयरेखा

ये आठ पैकेज 13 जुलाई 2026 और 14 जुलाई 2026 को एक साथ प्रकाशित किए गए थे। इनमें से कई के एक से अधिक संस्करण हैं; ड्रॉपर सभी संस्करणों में समान है, केवल लाइन ऑफसेट में बदलाव होता है क्योंकि इसके ऊपर मौजूद सामान्य उपयोगिता कोड का आकार बदलता रहता है।

तारीख कार्यक्रम
2026-07-13 क्लस्टर में पहले पैकेज एक प्रकाशक के अंतर्गत दिखाई देते हैं (solana-key-utils, eth-wallet-helpers, crypto-validate-lib और बाकी के शुरुआती संस्करण)
2026-07-13 → 07-14 शेष नाम और अनुवर्ती संस्करण प्रकाशित किए गए; प्रत्येक में समान संलग्न ड्रॉपर जहाज हैं
2026-07-14 सभी आठों पैकेज चिह्नित और विश्लेषित किए गए; प्रत्येक पैकेज अभी भी रजिस्ट्री से इंस्टॉल किया जा सकता है।

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

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

नीचे दिए गए सभी संकेतक विश्लेषण के समय मौजूद होने की पुष्टि की गई थी — "द्वितीय चरण" तालिकाओं में डिकोडिंग द्वारा। test/fixtures/keypairs.dat और पुनर्प्राप्त को पढ़ना syncd.js.

फ़ाइलें और पथ

सूचक भूमिका
~/.cache-db/.node-sync/syncd.js दूसरे चरण को डिकोड किया गया, मोड 0o700 के साथ लिखा गया
~/.cache-db/.node-sync/.sl स्थानीय डेटा चोरी लॉग (टाइमस्टैम्प | कुंजी प्रकार | IPFS हैश)
test/fixtures/keypairs.dat टारबॉल के अंदर बेस64-एनकोडेड पेलोड को "टेस्ट फिक्स्चर" के रूप में रखा गया है।

द्वितीय चरण का नेटवर्क अवसंरचना (syncd.js से प्राप्त)

सूचक भूमिका
gist.githubusercontent.com/juang55/b298754cb72942b1cdcf02ccd45cde2f/raw/cfg.txt एक्टिवेशन डेड-ड्रॉप; स्क्रिप्ट तभी चलती है जब कॉन्फ़िगरेशन पढ़ा जाता है active=1
Qmcqz3w8j4qFQXDAXAxnrdc2oSX3nzBT4NqtpTqL8mr1ga IPFS कॉन्फ़िगरेशन फ़ॉलबैक (CID)
QmdTXoqVmTHY1i4ZWLdLkoQ9YChp5TXPh5cWXwnAYZt5iF IPFS कॉन्फ़िगरेशन फ़ॉलबैक (CID)
QmfJkLU5gdCpqbbqEjWYC2anXW9FmuEeSLLeLiHVJKYUjp IPFS कॉन्फ़िगरेशन फ़ॉलबैक (CID)
gateway.pinata.cloud, ipfs.io, cloudflare-ipfs.com IPFS गेटवे का उपयोग कॉन्फ़िगरेशन फ़ॉलबैक प्राप्त करने के लिए किया जाता है।
api.pinata.cloud/pinning/pinJSONToIPFS डेटा चोरी होने पर उसे सार्वजनिक IPFS से जोड़ दिया गया।
पिनाटा एपीआई कुंजी 13c766575b9270a9825dहार्डकोडेड एक्सफ़िल्ट्रेशन क्रेडेंशियल

द्वितीय चरण के संग्रह लक्ष्य (syncd.js से प्राप्त)

सूचक भूमिका
~/.config/solana, ~/.ethereum/keystore, ~/.foundry, ~/.hardhat, ~/.ssh, ~/.envशेल आरसी फ़ाइलें कुंजी और गुप्त जानकारी के लिए खोजी गई निर्देशिकाएँ/फ़ाइलें
AppData\Roaming\Solana, AppData\Local\ethereum\keystore विंडोज़ समकक्षों की खोज की गई
एकत्रित कलाकृतियों के प्रकार ETH निजी कुंजी, बिटकॉइन WIF, BIP-39 सीड वाक्यांश, सोलाना कुंजीजोड़े, एथेरियम कीस्टोर JSON, SSH कुंजी, गुप्त पर्यावरण चर

दृढ़ता कलाकृतियाँ

मंच सूचक
Linux क्रॉन एंट्री लॉन्च हो रही है syncd.jsक्रोनटैब के माध्यम से स्थापित, फ़िल्टर किया गया grep -v syncd
विंडोज निर्धारित कार्य WinNodeSync (ड्रॉपर) और WindowsNodeSync (दूसरा चरण)
macOS लॉन्चड लेबल com.apple.syncd
सब दूसरा चरण 12 घंटे के चक्र पर स्वयं को दोहराता है।

व्यवहार

  • स्वयं-आह्वान फ़ंक्शन को बाद में जोड़ा गया मॉड्यूल.निर्यात, शेड्यूलिंग सेटटाइमआउट आयात पर लगभग 37,000 मिलीसेकंड का समय लगा।
  • चाइल्ड_प्रोसेस स्पॉन(“नोड”, ) अलग करने का विकल्प सेट होने के साथ।
  • दूसरे चरण में निष्क्रिय-गेटेड सक्रियण (xprintidle / आयोरेग HIDIdleTime / पॉवरशेल निष्क्रिय समय; लगभग 15 मिनट की सीमा)।
  • पहले RSA-4096 एन्क्रिप्शन का उपयोग करें, फिर HTTPS का। पोस्ट एक सार्वजनिक IPFS पिनिंग API के लिए।

पैकेज और संस्करण (npm, प्रकाशक solbuilder_io)

पैकेज संस्करण
base58-utils 1.0.0, 1.0.1, 1.0.3
abi-encode 1.0.0, 1.0.1, 1.0.2
eth-dev 1.0.0, 1.0.1, 1.0.2
arb-kit 1.0.0, 1.0.1
layer2-sdk 1.0.0, 1.0.1
solana-key-utils 1.0.0
eth-wallet-helpers 1.0.0
crypto-validate-lib 1.0.0

प्रकाशक

  • solbuilder_io - angel_lopez89[@]proton[.]meईमेल सत्यापित नहीं है, कोई सत्यापित स्रोत-नियंत्रण खाता नहीं है, कोई लिंक किया गया रिपॉजिटरी नहीं है।

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

आठों पैकेज एक ही प्रकाशक खाते और एक ही पेलोड को साझा करते हैं। प्रत्येक एक साधारण पैकेज है - कुछ किलोबाइट का वास्तविक उपयोगिता कोड जिसमें समान ड्रॉपर जोड़ा गया है - बिना किसी लिंक किए गए रिपॉजिटरी के और एक अविश्वसनीय डिस्पोजेबल-शैली के ईमेल के तहत प्रकाशित किया गया है। यह एकरूपता, साझा ड्रॉप पथ, साझा परसिस्टेंस लेबल और साझा keypairs.dat स्टेजिंग फाइलें ही क्लस्टर को आपस में जोड़ती हैं।

ये पैकेज अपने व्यवहार के बारे में असामान्य रूप से स्पष्ट हैं। सोलाना-की-यूटिल्स इसमें संलग्न ब्लॉक का सरल शब्दों में वर्णन करने वाली इनलाइन टिप्पणियाँ शामिल हैं — एक टिप्पणी इसे लेबल करती है फैंटम: अदृश्य दृढ़ताएक अन्य (स्पेनिश में) इस प्रकार है: पृष्ठभूमि में टोपो निष्पादित करें“पृष्ठभूमि में तिल चलाएँ।” ये कोड के स्वयं के एनोटेशन हैं कि यह क्या करता है; इस पोस्ट में अभियान का नाम उस पहले लेबल के साथ-साथ नकली नोड “सिंक डेमन” से लिया गया है (सिंक्रनाइज़्ड) जिसे निरंतरता तंत्र अनुकरण करता है।

हम केवल वही वर्णन कर रहे हैं जो कोड प्रत्यक्ष रूप से करता है। पैकेजों के नामकरण — सभी क्रिप्टो, वॉलेट और ब्लॉकचेन-टूलिंग शब्दों से संबंधित — से उन डेवलपर्स का संकेत मिलता है जिनके द्वारा इन्हें नाम से डाउनलोड किए जाने की सबसे अधिक संभावना है; इससे प्रकाशक की पहचान स्थापित नहीं होती। दूसरे चरण को बेस64 फिक्स्चर को डिकोड करके पूरी तरह से पुनर्प्राप्त किया जा सकता था, और इसके व्यवहार का वर्णन ऊपर किया गया है: यह वॉलेट कुंजी, सीड वाक्यांश और गुप्त डेटा एकत्र करता है और उन्हें RSA एन्क्रिप्टेड रूप में पिनाटा के माध्यम से सार्वजनिक IPFS स्टोरेज में भेजता है। एक उल्लेखनीय डिज़ाइन विकल्प निजी C2 सर्वर की अनुपस्थिति है — कॉन्फ़िगरेशन GitHub गिस्ट और IPFS से प्राप्त होता है, और चोरी किया गया डेटा सामग्री हैश द्वारा कुंजीबद्ध सार्वजनिक विकेन्द्रीकृत स्टोरेज में संग्रहीत किया जाता है, इन दोनों को किसी एक हमलावर-नियंत्रित होस्ट की तुलना में जब्त करना अधिक कठिन है। लेखन के समय इस क्लस्टर से मेल खाने वाली कोई पूर्व सार्वजनिक रिपोर्टिंग नहीं मिली।

कौन जोखिम में है? कोई भी व्यक्ति जिसने इनमें से किसी एक पैकेज को नोड प्रोजेक्ट में जोड़ा और फिर उसे इम्पोर्ट करने वाला कोड चलाया। क्योंकि विस्फोट इम्पोर्ट के समय होता है, इंस्टॉल के समय नहीं, इसलिए केवल पैकेज का मौजूद होना ही पर्याप्त नहीं है — बल्कि मॉड्यूल को लोड करने वाला कोई भी सामान्य उपयोग पेलोड तक पहुँच जाता है। लुभावने नाम एथेरियम, सोलाना, आर्बिट्रम, लेयर-2 और सामान्य वॉलेट/एनकोडिंग टूलिंग पर काम करने वाले डेवलपर्स को लक्षित करते हैं — वह समूह जिसके पास दूसरे चरण में खोजे जाने वाले एसेट्स होने की सबसे अधिक संभावना है। कोई भी व्यक्ति जिसने वॉलेट कीज़, सीड फ्रेज़, कीस्टोर्स, एसएसएच कीज़ या अन्य किसी भी मशीन पर इनमें से किसी एक मॉड्यूल को चलाया, .env गुप्तचरों को उन क्रेडेंशियल्स को खतरे में मानकर उन्हें बदलते रहना चाहिए।

दो ऐसे पैटर्न जिन्हें आत्मसात करना फायदेमंद होगा। सबसे पहले, पेलोड-एज़-फिक्स्चर: दूसरे चरण को बेस64 के रूप में एक संभावित नाम वाली डेटा फ़ाइल के अंदर भेजना (test/fixtures/keypairs.dat) पैकेज के दृश्य स्रोत को साफ-सुथरा बनाए रखता है और दुर्भावनापूर्ण सामग्री को एक ऐसी फ़ाइल में धकेल देता है जिसे समीक्षा उपकरण और मानव स्कैन अक्सर निष्क्रिय डेटा मानते हैं। दूसरा, क्रॉस-प्लेटफ़ॉर्म परसिस्टेंस के साथ आयात-समय विलंबित निष्पादनट्रिगर को इंस्टॉल हुक से हटाकर, टाइमर जोड़कर, और फिर क्रॉन, शेड्यूल्ड टास्क और लॉन्चडी में इसे बनाए रखकर, यह जानबूझकर उन शोरगुल वाली इंस्टॉल-स्क्रिप्ट तकनीकों से दूर हटने का कदम है जिन पर स्वचालित रजिस्ट्री स्कैनिंग सबसे करीब से नजर रखती है।

रक्षकों और रखवालों के लिए मार्गदर्शन:

  • संलग्न कोड का उपचार करें मॉड्यूल.निर्यात समीक्षा की प्राथमिकता के रूप में — ड्रॉपर लॉजिक अक्सर "वास्तविक" मॉड्यूल सतह के नीचे छिपा रहता है।
  • डेटा फ़ाइलों को निष्क्रिय न समझें। एक बेस64 ब्लॉब परीक्षण/फिक्स्चर/ रनटाइम पर पढ़ी और डिकोड की गई फ़ाइल निष्पादन योग्य के निकट होती है; फ़्लैग रनटाइम पर फिक्स्चर फ़ाइलों को पढ़ता है जो फ़ीड करती हैं समारोह/विकसित करना/लिखो-फिर-अंडे जंजीर।
  • ड्रॉप पाथ की खोज करें ~/.cache-db/.node-sync/ और निरंतरता इकाइयों के लिए विननोडसिंक (निर्धारित कार्य) और कॉम.एप्पल.सिंक्ड (launchd) ने उन डेवलपर मशीनों पर काम किया जिन्होंने ये नाम प्राप्त किए।
  • उन नोड प्रक्रियाओं पर ध्यान दें जो क्रॉन प्रविष्टियाँ, निर्धारित कार्य या लॉन्चड जॉब बनाती हैं — वैध लाइब्रेरी आयात के दौरान ऐसा शायद ही कभी करती हैं।
  • लॉकफाइल और पिंड किए गए संस्करणों को प्राथमिकता दें, और किसी भी नई छोटी "उपयोगिता" निर्भरता के अंतर की समीक्षा करें, विशेष रूप से शून्य-निर्भरता वाले पैकेज प्रकाशित किए गए बिना किसी संबद्ध भंडार वाले अपुष्ट खातों द्वारा।

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

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

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

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