PhantomSync: npm Crypto Packages Hide Wallet Stealer

PhantomSync: آٹھ کرپٹو ڈویلپر این پی ایم پیکجز ایک تاخیری، خود کو برقرار رکھنے والے ڈراپر کو چھپاتے ہیں

TL؛ ڈاکٹر

ایک واحد npm پبلشر نے آٹھ چھوٹے پیکج بھیجے جن کے نام بلاک چین اور والیٹ کی ترقی کے لیے روزمرہ کے بلڈنگ بلاکس کی طرح پڑھتے ہیں، base58-utils, abi-encode, eth-dev, arb-kit, layer2-sdk, solana-key-utils, eth-wallet-helpers، اور crypto-validate-lib. ہر ایک میں کام کرنے والی افادیت ہوتی ہے۔ اس افادیت کے بعد شامل کیا گیا ہے، اگرچہ، کوڈ کا ایک خود ساختہ بلاک ہے جو ماڈیول کے درآمد ہونے کے وقت چلتا ہے۔

درآمد کے بعد تقریباً 37 سیکنڈ، یہ بلاک ایک پے لوڈ کو ڈی کوڈ کرتا ہے جو ٹیسٹ فکسچر کے بھیس میں پیکیج کے اندر بھیجتا ہے، اسے صارف کی ہوم ڈائرکٹری کے نیچے ایک پوشیدہ فائل میں لکھتا ہے، ہر ایک پر دوبارہ شروع کرنے کے لیے خود کو رجسٹر کرتا ہے۔ login ونڈوز، میک او ایس، اور لینکس میں، اور ڈی کوڈ شدہ اسکرپٹ کو ایک علیحدہ عمل کے طور پر لانچ کرتا ہے۔ این پی ایم انسٹال کے دوران اس آگ کے بارے میں کچھ نہیں ہے۔ یہ کوڈ کے درآمد اور چلانے کا انتظار کرتا ہے، جو انسٹالیشن سے زیادہ پرسکون لمحہ ہے۔

پے لوڈ مبہم نہیں ہے۔ یہ سادہ بیس 64 کے طور پر بھیجتا ہے، لہذا "ٹیسٹ فکسچر" کو ڈی کوڈ کرنے سے دوسرا مرحلہ مکمل طور پر بحال ہو جاتا ہے: a crypto-wallet اور راز چوری کرنے والا جو مشین کے بیکار بیٹھنے کا انتظار کرتا ہے، پرائیویٹ کیز اور بیج کے فقروں کی کٹائی کرتا ہے، ہر ایک کو ہارڈ کوڈ شدہ RSA-4096 کلید کے ساتھ انکرپٹ کرتا ہے، اور اسے ہر 12 گھنٹے بعد بیک بیک کرتے ہوئے اسے عوامی IPFS اسٹوریج میں پن کر کے نکال دیتا ہے۔

ہم کلسٹر کو بطور ٹریک کرتے ہیں۔ فینٹم سنک. تجزیے کے وقت تمام آٹھ پیکجز npm رجسٹری میں لائیو تھے، جو ایک اکاؤنٹ کے تحت شائع کیے گئے تھے۔

ماحولیاتی نظامnpm
پیکجوں کےbase58-utils, abi-encode, eth-dev, arb-kit, layer2-sdk, solana-key-utils, eth-wallet-helpers, crypto-validate-lib
پلیٹ فارمز کو نشانہ بنایا گیا۔ونڈوز ، میکوس ، لینکس
بنیادی سلوکتاخیر سے، امپورٹ ٹائم ڈراپر ٹیسٹ فکسچر کے طور پر چھپا ہوا ہے۔ کراس پلیٹ فارم استقامت کو انسٹال کرتا ہے۔
پیلوڈکرپٹو والیٹ اور راز چوری کرنے والا، RSA-4096 انکرپشن، عوامی IPFS پننگ کے ذریعے اخراج

حملہ اناٹومی

ہر پیکج پہلی بار پڑھنے پر غیر معمولی لگتا ہے۔ base58-utilsمثال کے طور پر، صفر پر منحصر بیس 58 / Bitcoin-WIF مددگار کوڈ کے چند کلو بائٹس ہیں — بالکل وہی جو نام وعدہ کرتا ہے۔ متعلقہ کوڈ بیٹھتا ہے۔ کے بعد ماڈیول کی module.exports، جہاں فائل کے اوپری حصے کو سکیم کرنے والے قاری کے نظر آنے کا امکان نہیں ہے: ایک خود کو طلب کرنے والا فنکشن جو ٹائمر کے ساتھ خود کو شیڈول کرتا ہے۔

پیکج کے ماخذ سے دوبارہ تشکیل شدہ آپریشنز کا سلسلہ اس طرح چلتا ہے:

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، ایک base64 فائل جس کا نام ایک پیکیج میں گھل مل جاتا ہے جو کلیدی جوڑوں کو سنبھالنے کا دعوی کرتا ہے۔ ٹربال کو سکیم کرنے والے انسان کے لیے، یہ نمونہ ڈیٹا کی طرح لگتا ہے۔ ضمیمہ کوڈ میں، یہ ڈی کوڈ اور چلانے کے لیے ایک اسکرپٹ ہے۔ ڈراپر میں خود کوئی نیٹ ورک ایڈریس نہیں ہوتا ہے - جو دوسرے مرحلے میں رہتے ہیں - لیکن اس میں کوئی اضافی مبہم نہیں ہے: فکسچر بیس 64 کی ایک پرت ہے، لہذا اسے ڈی کوڈ کرنا (بیس 64 -d) مکمل بازیافت کرتا ہے۔ syncd.js اور اس کے نیٹ ورک کا رویہ۔ اگلا حصہ اس سے گزرتا ہے کہ وہ بازیافت مرحلہ کیا کرتا ہے۔

دھماکہ تاخیر سے ہوتا ہے اور درآمد سے منسلک ہوتا ہے، انسٹال نہیں ہوتا۔ کیونکہ محرک ہے۔ کی ضرورت ہے () نیز انسٹال ہک کے بجائے ~ 37-سیکنڈ ٹائمر، طرز عمل سائیڈ اسٹپس چیک کرتا ہے جو صرف دیکھتے ہیں این ایم پی انسٹال قدم، اور تاخیر بہت سے قلیل المدتی سینڈ باکس اور CI رنز کو ختم کر دیتی ہے۔ جب تک کچھ بھی ہوتا ہے، وہ انسٹال جس نے پیکیج کو کھینچا تھا وہ طویل عرصے سے ختم ہو چکا ہے۔

ایک بار جب ڈی کوڈ شدہ اسکرپٹ ڈسک پر ہے۔ ~/.cache-db/.node-sync/syncd.js - ایک روٹین کیش ڈائرکٹری کی طرح پڑھنے کے لیے منتخب کیا گیا راستہ - ڈراپر اسے تینوں بڑے پلیٹ فارمز پر ریبوٹس پر زندہ رہنے دیتا ہے:

  • لینکس: ایک کرون اندراج جو اسکرپٹ کو دوبارہ شروع کرتی ہے۔ اندراج موجودہ کرونٹاب کو فلٹر کرکے انسٹال کیا جاتا ہے۔ grep -v syncd، جس کا ضمنی اثر ہوتا ہے نئی اندراج کو ایک سادہ فہرست سے باہر چھوڑنے کا جو ایک ہی نام کے لیے گریپ کرتا ہے۔
  • ونڈوز: ایک طے شدہ کام کا نام ہے۔ WinNodeSync، 12 منٹ کے وقفے پر دوبارہ چلانے کے لیے مقرر ہے۔
  • macOS: ایک شروع شدہ کام کا لیبل لگا ہوا ہے۔ com.apple.syncd, کئی پیکجوں میں موجود ہے — ایک لیبل جو ایپل سسٹم کی ایک جائز سروس کی نقل کرتا ہے۔

اس کے بعد اسکرپٹ کو ایک علیحدہ عمل کے طور پر فوری طور پر شروع کر دیا جاتا ہے، اس لیے یہ درآمدی پروگرام کے ختم ہونے کے بعد بھی چلتا رہتا ہے۔

دوسرا مرحلہ کیا کرتا ہے۔

چونکہ فکسچر ایک واحد بیس 64 پرت ہے، دوسرا مرحلہ صاف طور پر ڈی کوڈ ہوتا ہے اور اسے مکمل پڑھا جا سکتا ہے۔ تمام آٹھ پیکجوں میں ایک ہی اسکرپٹ کی تین اقسام میں سے ایک ہے، جو خود کو ہیڈر تبصرے میں شناخت کرتا ہے فینٹم سنک ڈی وی 3 - ٹاپو ڈرمینٹی ("سوتے ہوئے تل")۔ اس کا کام cryptocurrency-wallet کے مواد اور ڈویلپر کے رازوں کو چرانا اور انہیں مشین سے باہر بھیجنا ہے۔ یہ ان مراحل میں چلتا ہے:

  • 1. مشین کے بیکار ہونے تک انتظار کریں۔ کچھ کرنے سے پہلے، syncd.js چیک کرتا ہے کہ صارف کتنے عرصے سے غیر فعال ہے اور صرف ایک حد سے آگے بڑھتا ہے (تقریبا 15 منٹ) — xprintidle لینکس پر، ioreg macOS پر HIDIdleTime، اور Windows پر PowerShell آئیڈل ٹائم استفسار۔ اس لیے کٹائی اس وقت ہوتی ہے جب کوئی کی بورڈ پر نہ ہو۔
  • 2. دور سے کنٹرول شدہ ایکٹیویشن سوئچ حاصل کریں۔. اسکرپٹ اداکاری سے پہلے ڈیڈ ڈراپ سے ایک چھوٹی سی ترتیب کھینچتی ہے۔ بنیادی ذریعہ ایک GitHub خلاصہ خام URL ہے (gist.githubusercontent.com/juang55/…/cfg.txt); اسکرپٹ صرف اس صورت میں چالو ہوتی ہے جب وہ تشکیل پڑھتا ہے۔ فعال = 1. اگر خلاصہ دستیاب نہیں ہے، تو یہ تین ہارڈ کوڈ شدہ آئی پی ایف ایس مواد کے شناخت کنندگان پر واپس آتا ہے، جو عوامی گیٹ ویز کے ذریعے حاصل کیا جاتا ہے۔ gateway.pinata.Cloud, ipfs.io، اور cloudflare-ipfs.com. یہ آپریٹر کو حقیقت کے بعد بازو/غیر مسلح کنٹرول اور ٹیک ڈاؤن مزاحم فال بیک دیتا ہے۔ (سب سے چھوٹی شکل، بھیج دی گئی۔ crypto-validate-lib, eth-wallet-helpers، اور solana-key-utils، نے خلاصہ پرت کو ہٹا دیا ہے اور صرف IPFS شناخت کنندگان پر انحصار کرتا ہے۔)
  • 3. بٹوے کے مواد اور رازوں کو حاصل کریں۔ اسکرپٹ صارف کی ہوم ڈائرکٹری پر چلتا ہے۔ ~/.config/solana, ~/.ethereum/keystore, ~/.فاؤنڈری, ~/.hardhat, ~/.ssh، اور ڈیسک ٹاپ/دستاویزات/ڈاؤن لوڈز (ہسپانوی زبان کے فولڈر کے ناموں سمیت)، پلس ~/.env اور شیل آر سی فائلیں، اور مساوی ایپ ڈیٹا۔ ونڈوز پر مقامات۔ یہ Ethereum پرائیویٹ کیز، Bitcoin WIF کیز، BIP-39 سیڈ فقرے، Solana keypairs، Ethereum keystore JSON، SSH کیز، اور سیکریٹ بیئرنگ انوائرمنٹ متغیرات کو نشانہ بناتا ہے۔ بڑی قسم (میں abi-encode, base58-utils, eth-dev) 2048 الفاظ کی مکمل BIP-39 لغت رکھتا ہے اور اس کے لیے ریگولر ایکسپریشنز استعمال کرتا ہے۔ نکالنے انفرادی چابیاں اور تصدیق شدہ بیج کے فقرے کسی بھی متن سے جو اسے پڑھتا ہے۔ اس کے بجائے دو چھوٹے متغیرات مطلوبہ الفاظ کے لحاظ سے فائلوں سے ملتے ہیں (بیج, یادداشت, والیٹ, میٹاماسک, پریت, اکاؤنٹ, trezor، …) اور پوری فائلیں اپ لوڈ کریں۔
  • 4. ایک عوامی پننگ سروس کے ذریعے خفیہ کاری اور خارج کریں۔ ہر تلاش ایک میزبان فنگر پرنٹ کے ساتھ بنڈل ہے (username@hostname، پلیٹ فارم، ٹائم اسٹیمپ) اور اسکرپٹ میں سرایت شدہ ہارڈ کوڈ RSA-4096 عوامی کلید کے ساتھ خفیہ کردہ۔ اس کے بعد خفیہ کردہ ریکارڈ کو آئی پی ایف ایس کے ذریعے پن لگا کر اپ لوڈ کیا جاتا ہے۔ api.pinata.cloud/pinning/pinJSONToIPFS، ہارڈ کوڈ شدہ Pinata API اسناد کے ساتھ تصدیق شدہ۔ ضبط کرنے کے لیے کوئی مخصوص C2 سرور نہیں ہے: چوری شدہ ڈیٹا کو عوامی وکندریقرت اسٹوریج میں کھڑا کیا جاتا ہے، جو آپریٹر کے ذریعے حاصل ہونے والے مواد کے ہیشز کا استعمال کرتے ہوئے بازیافت کیا جا سکتا ہے۔ اپ لوڈز میں چند سیکنڈ کے بے ترتیب گھماؤ، اور مقامی لاگ کے ساتھ فاصلہ رکھا گیا ہے۔ ٹائم اسٹیمپ | کلیدی قسم | لوٹا ہوا ہیش پر رکھا جاتا ہے۔ ~/.cache-db/.node-sync/.sl.
  • 5. 12 گھنٹے کے سائیکل پر قائم رہیں اور بیکن بنائیں۔ دوسرا مرحلہ اپنی استقامت کو دوبارہ قائم کرتا ہے — لینکس پر ایک کرون انٹری، a com.apple.syncd macOS پر نوکری شروع کی، اور ایک طے شدہ کام کا نام دیا گیا۔ ونڈوز نوڈ سنک ونڈوز پر - ہر 12 گھنٹے میں دوبارہ چلانے کے لیے سیٹ کریں۔ نوٹ کریں کہ یہ ایک ہے۔ مختلف ونڈوز ٹاسک کا نام جس سے ڈراپر انسٹال کرتا ہے (WinNodeSync); دونوں شکار کے قابل ہیں۔

ٹائم لائن

آٹھ پیکجز 2026-07-13 اور 2026-07-14 کو سخت برسٹ میں شائع ہوئے تھے۔ کئی ایک سے زیادہ ورژن لے جاتے ہیں؛ ڈراپر تمام ورژنز میں یکساں ہے، صرف لائن آفسیٹس شفٹ ہوتے ہیں کیونکہ اس کے اوپر موجود سومی یوٹیلیٹی کوڈ کا سائز تبدیل ہوتا ہے۔

تاریخ واقعہ
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 ایکٹیویشن ڈیڈ ڈراپ؛ اسکرپٹ صرف اس صورت میں چلتا ہے جب config پڑھتا ہے۔ active=1
Qmcqz3w8j4qFQXDAXAxnrdc2oSX3nzBT4NqtpTqL8mr1ga IPFS کنفیگریشن فال بیک (CID)
QmdTXoqVmTHY1i4ZWLdLkoQ9YChp5TXPh5cWXwnAYZt5iF IPFS کنفیگریشن فال بیک (CID)
QmfJkLU5gdCpqbbqEjWYC2anXW9FmuEeSLLeLiHVJKYUjp IPFS کنفیگریشن فال بیک (CID)
gateway.pinata.cloud, ipfs.io, cloudflare-ipfs.com آئی پی ایف ایس گیٹ وے کنفگ فال بیک لانے کے لیے استعمال ہوتے ہیں۔
api.pinata.cloud/pinning/pinJSONToIPFS ایکسفلٹریشن اینڈ پوائنٹ، چوری شدہ ڈیٹا کو عوامی IPFS پر پن کیا گیا ہے۔
Pinata API کلید 13c766575b9270a9825d, hardcoded exfiltration کی سند

دوسرے مرحلے کے مجموعہ کے اہداف (syncd.js سے بازیافت)

اشارے کردار
~/.config/solana, ~/.ethereum/keystore, ~/.foundry, ~/.hardhat, ~/.ssh, ~/.env، شیل آر سی فائلیں۔ چابیاں اور رازوں کی تلاش کی گئی ڈائریکٹریز/فائلز
AppData\Roaming\Solana, AppData\Local\ethereum\keystore ونڈوز کے مساوی تلاش کیے گئے۔
آرٹفیکٹ کی قسمیں کٹائی گئیں۔ ETH نجی چابیاں، Bitcoin WIF، BIP-39 بیج کے جملے، Solana keypairs، Ethereum keystore JSON، SSH کیز، خفیہ env vars

استقامت کے نمونے

پلیٹ فارم اشارے
لینکس کرون انٹری لانچنگ syncd.js; کرونٹاب کے ذریعے فلٹر کے ذریعے انسٹال کیا گیا۔ grep -v syncd
ونڈوز طے شدہ کام WinNodeSync (ڈراپر) اور WindowsNodeSync (دوسرا مرحلہ)
MacOS کے لئے اولمپ ٹریڈ ایپ شروع کردہ لیبل com.apple.syncd
تمام دوسرا مرحلہ 12 گھنٹے کے چکر پر دوبارہ برقرار رہتا ہے۔

طرز عمل

  • سیلف انووکنگ فنکشن کے بعد شامل کیا گیا۔ module.exports, شیڈولنگ a مقررہ وقت درآمد پر ~37,000 ms۔
  • بچہ_عمل سپون ("نوڈ"، ) علیحدہ آپشن سیٹ کے ساتھ۔
  • دوسرے مرحلے میں بیکار گیٹڈ ایکٹیویشن (xprintidle / ioreg HIDIdleTime / PowerShell بیکار وقت؛ ~15 منٹ کی حد)۔
  • فی فائنڈنگ RSA-4096 انکرپشن، پھر HTTPS POST عوامی IPFS پننگ API میں۔

پیکجز اور ورژن (npm، publisher 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 اسٹیجنگ فائل وہ ہیں جو کلسٹر کو ایک ساتھ باندھتی ہیں۔

پیکجز اپنے رویے کے بارے میں غیر معمولی طور پر واضح ہیں۔ solana-key-utils ان لائن تبصرے کرتا ہے جو ضمیمہ بلاک کو سادہ الفاظ میں بیان کرتے ہیں - ایک اسے لیبل کرتا ہے۔ پریت: پوشیدہ استقامت، ایک اور (ہسپانوی میں) پڑھتا ہے۔ پس منظر میں باہر نکلیں، "پس منظر میں تل چلائیں۔" یہ کوڈ کی اپنی تشریحات ہیں کہ یہ کیا کرتا ہے۔ اس پوسٹ میں مہم کا نام جعلی نوڈ "sync ڈیمون" کے ساتھ اس پہلے لیبل سے اخذ کیا گیا ہے (مطابقت پذیری) جس کی استقامت کی مشینری نقل کرتی ہے۔

ہم صرف وہی بیان کرتے ہیں جو کوڈ مشاہداتی طور پر کرتا ہے۔ پیکجوں کا نام دینا — تمام کریپٹو، والیٹ، اور بلاکچین ٹولنگ کی اصطلاحات — اس بات کی نشاندہی کرتی ہے کہ ڈویلپر سامعین زیادہ تر انہیں نام سے کھینچتے ہیں۔ یہ خود اس بات کا تعین نہیں کرتا ہے کہ ناشر کون ہے۔ بیس 64 فکسچر کو ڈی کوڈ کرکے دوسرا مرحلہ مکمل طور پر بحال کیا جا سکتا تھا، اور اس کے رویے کو اوپر بیان کیا گیا ہے: یہ بٹوے کی چابیاں، بیج کے فقرے، اور راز اکٹھا کرتا ہے اور انہیں RSA- انکرپٹڈ، Pinata کے ذریعے عوامی IPFS اسٹوریج میں نکال دیتا ہے۔ ایک قابل ذکر ڈیزائن کا انتخاب نجی C2 سرور کی عدم موجودگی ہے — کنفیگریشن ایک GitHub خلاصہ اور IPFS سے آتی ہے، اور چوری شدہ ڈیٹا کو عوامی وکندریقرت اسٹوریج میں رکھا جاتا ہے جسے مواد ہیش کے ذریعے کلید کیا جاتا ہے، دونوں کو ضبط کرنا ایک ہی حملہ آور کے زیر کنٹرول میزبان سے زیادہ مشکل ہے۔ تحریر کے وقت اس کلسٹر سے مماثل کوئی پیشگی عوامی رپورٹنگ موجود نہیں تھی۔

جو بے نقاب ہے۔ کوئی بھی جس نے ان پیکجوں میں سے ایک کو نوڈ پروجیکٹ میں شامل کیا اور پھر کوڈ چلایا جو اسے درآمد کرتا ہے۔ چونکہ دھماکہ انسٹال کے وقت کی بجائے درآمدی وقت ہے، اس لیے صرف پیکیج کا موجود ہونا کافی نہیں ہے — لیکن کوئی بھی عام استعمال جو ماڈیول کو لوڈ کرتا ہے وہ پے لوڈ تک پہنچ جاتا ہے۔ لالچ کے نام Ethereum, Solana, Arbitrum, Layer-2، اور جنرل والیٹ/انکوڈنگ ٹولنگ پر تعمیر کرنے والے ڈویلپرز کو نشانہ بناتے ہیں — آبادی کے پاس بالکل وہی اثاثے ہونے کا امکان ہے جس کا دوسرا مرحلہ تلاش کرتا ہے۔ کوئی بھی جو ان میں سے کسی ایک ماڈیول کو مشین پر چلاتا ہے جس میں بٹوے کی چابیاں، بیج کے فقرے، کی اسٹورز، SSH کیز، یا .env رازوں کو ان اسناد کو سمجھوتہ کرنے والا سمجھنا چاہئے اور انہیں گھمایا جانا چاہئے۔

اندرونی بنانے کے قابل دو پیٹرن۔ سب سے پہلے، پے لوڈ کے طور پر فکسچر: دوسرے مرحلے کو بیس 64 کے طور پر ممکنہ طور پر نامزد ڈیٹا فائل کے اندر بھیجنا (test/fixtures/keypairs.dat) پیکیج کے مرئی ماخذ کو صاف ستھرا رکھتا ہے اور بدنیتی پر مبنی مواد کو ایک فائل میں دھکیلتا ہے جس کا جائزہ لینے والے ٹولز اور انسانی سکیم اکثر غیر فعال ڈیٹا کے طور پر پیش آتے ہیں۔ دوسرا، درآمدی وقت میں تاخیر سے عمل درآمد کراس پلیٹ فارم استقامت کے ساتھ: ٹرگر کو انسٹال ہک سے ہٹانا، ٹائمر شامل کرنا، اور پھر کرون، طے شدہ کاموں، اور لانچڈ پر قائم رہنا شور مچانے والی انسٹال اسکرپٹ تکنیکوں سے ایک جان بوجھ کر دور ہے جو رجسٹری اسکیننگ کو خودکار طریقے سے دیکھتی ہے۔

محافظوں اور دیکھ بھال کرنے والوں کے لیے رہنمائی:

  • اس کے بعد منسلک کوڈ کا علاج کریں۔ module.exports جائزے کی ترجیح کے طور پر — ڈراپر منطق اکثر "حقیقی" ماڈیول کی سطح کے نیچے چھپ جاتی ہے۔
  • فرض نہ کریں کہ ڈیٹا فائلیں غیر فعال ہیں۔ ایک بیس 64 بلاب کے نیچے ٹیسٹ/فکسچر/ جو رن ٹائم پر پڑھا جاتا ہے اور ڈی کوڈ کیا جاتا ہے وہ قابل عمل-ملحق ہے۔ فلیگ رن ٹائم فکسچر فائلوں کو پڑھتا ہے جو فیڈ a فنکشن/eval/لکھیں پھر-انڈے چین
  • ڈراپ پاتھ کی تلاش کریں۔ ~/.cache-db/.node-sync/ اور استقامت کی اکائیوں کے لیے WinNodeSync (شیڈول کردہ کام) اور com.apple.syncd (لانچ) ڈویلپر مشینوں پر جنہوں نے یہ نام کھینچے۔
  • نوڈ پروسیسز پر انتباہ جو کرون اندراجات، طے شدہ کام، یا شروع کی گئی ملازمتیں تخلیق کرتے ہیں - جائز لائبریریاں شاذ و نادر ہی درآمد پر ایسا کرتی ہیں۔
  • لاک فائلوں اور پن شدہ ورژن کو ترجیح دیں، اور کسی بھی نئی چھوٹی "افادیت" کے انحصار کے فرق کا جائزہ لیں، خاص طور پر زیرو ڈیپنڈنسی پیکجز شائع ہوئے۔ غیر تصدیق شدہ اکاؤنٹس کے ذریعے جن کا کوئی منسلک ذخیرہ نہیں ہے۔

رجسٹری ڈیفنڈرز کے لیے، ٹیک وے یہ ہے کہ انسٹال ہک مانیٹرنگ ضروری ہے لیکن کافی نہیں: ڈیٹا فائل کے اندر ایک درآمدی وقت، ٹائمر میں تاخیر کرنے والا ڈراپر صرف انسٹال وقت کی جانچ کو پاس کرے گا، اور استقامت کا مرحلہ اکثر سب سے بلند مشاہدہ کرنے والا سگنل ہوتا ہے۔

sca-tools-software-composition-analysis-tools
اپنے سافٹ ویئر کے خطرات کو ترجیح دیں، تدارک کریں اور محفوظ کریں۔
اپنا مفت اکاؤنٹ حاصل کریں۔
کوئی کریڈٹ کارڈ کی ضرورت نہیں ہے.

اپنے سافٹ ویئر ڈویلپمنٹ اور ڈیلیوری کو محفوظ بنائیں

Xygeni پروڈکٹ سویٹ کے ساتھ