TL؛ DR
در ۱۴ سپتامبر ۲۰۲۵، محققان شناسایی کردند شای هولود، یک کرم خود تکثیر شونده پنهان در درون بستههای npmتبدیل یک بهروزرسانی وابستگی روتین به یک بهروزرسانی کامل حمله زنجیره تامیناولین بار در @ctrl/tinycolor بستهای که توسط دنیل دوس سانتوس پریرا نوشته شده است، Shai-Hulud اطلاعات محرمانه را جمعآوری میکند، آنها را از طریق مخازن و گردشهای کاری GitHub استخراج میکند و با استفاده از اعتبارنامههای سرقت شده، خود را در رجیستری مجدداً منتشر میکند. ظرف چند روز، تعداد بستههای آلوده از دهها به صدها افزایش یافت که این موضوع را تأیید میکند. شیحولود فقط یک تروجان دیگر نیست، بلکه یک کرم است که برای پخش خودکار در اکوسیستم npm طراحی شده است.
تأثیر: هر توسعهدهنده یا مجری CI که بستههای عمومی npm را نصب میکند، در معرض خطر است.
اقدامات فوری: نسخههای شناختهشده را مسدود کنید، به نصبهای فقط-فایل تغییر دهید، توکنهای npm و GitHub را بچرخانید، گردشهای کاری را حسابرسی کنید و شاخصهای سازش (IoC) را رصد کنید.
چه اتفاقی میافتد؟
La حمله زنجیره تامین Shai-Hulud در بستههای npm یکی از مخربترین حوادث در حافظه اخیر است. برخلاف تروجانهای منفرد، این کرم ترکیبی از سرقت اطلاعات احراز هویت، استخراج خودکار و خود تکثیریدر نتیجه، جدول زمانی ابتلا از چند هفته به فقط چند ساعت کاهش یافت.
برای تیمهای DevOps، درس عبرت واضح است: اگر هر نصبی بتواند کدی را اجرا کند، پس هر بهروزرسانی وابستگی یک نقطه نفوذ بالقوه است.
اعتبارنامههای برداری اولیه و هدفمند احتمالی
تحلیل اولیه نشان میدهد که حمله احتمالاً با ... آغاز شده است. اعتبارنامههای سرقت شدهبرای مثال، کمپینهای فیشینگ که npm را جعل میکنند login یا ممکن است درخواستهای MFA توکنهای توسعهدهندگان را به سرقت برده باشند. به محض اینکه مهاجمان اولین جای پای خود را پیدا کردند، این کرم با جاسازی خود در بستههای npm و سرقت اطلاعات محرمانه بیشتر از موارد زیر گسترش یافت:
- فایلهای پیکربندی npm حرفه ای
.npmrc، که اغلب حاوی توکنهای انتشار است. - متغیرهای محیطی و پیکربندیها با GitHub PATs و CI/CD رازها
- نقاط پایانی ابرداده (AWS، GCP، Azure) که اعتبارنامههای کوتاهمدتی برای حرکت جانبی ارائه میدهند.
بنابراین، سرقت اطلاعات کاربری به سکوی پرتاب تبدیل شد. با توکنهای معتبر npm و رمزهای گیتهاب، Shai-Hulud میتوانست بدون تلاش انسانی اضافی، خود را در چندین بسته و مخزن تکثیر کند.
تأثیر اجرایی حمله زنجیره تأمین شای-هولود
Shai-Hulud هنوز هم فعال است. این کرم زمانبندی تأثیر خود را تسریع میکند. کاری که قبلاً با یک تروجان هفتهها طول میکشید، اکنون در عرض چند ساعت انجام میشود. در نتیجه، شیوع سریعتر و مهار آن دشوارتر است. این پیشرفت توسط:
- دزدیدن توکنهای انتشار npm و اطلاعات محرمانهی گیتهاب.
- انتشار مجدد خود در سایر بستههای npm.
- افزودن گردشهای کاری مخرب GitHub Actions برای ماندگاری.
چه کسی تحت تأثیر قرار میگیرد:
هر تیمی که بستههای عمومی npm را نصب کند، در معرض خطر است. علاوه بر این، توسعهدهندگانی که npm یا توکنهای GitHub را در حافظه پنهان دارند، با ریسک بالایی مواجه هستند. گردانندگان CI که از اسرار با دامنه وسیع استفاده میکنند نیز آسیبپذیر هستند.
ریسک تجاری
تأثیر این موضوع بر کسب و کار به سرعت افزایش مییابد. توکنهای دزدیده شده میتوانند منجر به تصاحب حساب، ربودن بسته و حتی سوءاستفاده از فضای ابری شوند. علاوه بر این، ماندگاری در گردشهای کاری GitHub، پاکسازی آن را دشوارتر میکند. بنابراین، تیمها باید با شای-هولود به عنوان یک حادثهی جاری برخورد کنند، نه یک حادثهی مختومه.
نحوهی عملکرد حملهی زنجیرهی تأمین Shai-Hulud در بستههای npm
اهداف و انگیزههای مهاجم
این کمپین سه چیز را بهینه میکند:
- هدف اول این است که سرقت اطلاعات احراز هویت در مقیاس بزرگ از لپتاپهای توسعهدهندگان و اجراکنندگان CI. این شامل توکنهای انتشار npm، توکنهای GitHub و اعتبارنامههای ابری میشود. در واقع، تجزیه و تحلیلهای متعدد، برداشت سیستماتیک اطلاعات محرمانه، مانند اجرای TruffleHog و پرسوجو از نقاط پایانی ابرداده را تأیید میکند.
- هدف دوم این است که به طور خودکار پخش شود با سوءاستفاده از حقوق انتشار نگهدارندگانِ در معرض خطر. در نتیجه، یک جای پا به سرعت به جاهای زیادی گسترش مییابد، زیرا نسخههای آلوده جدید از بستههای دیگر بدون تلاش انسانی اضافی ظاهر میشوند.
- هدف سوم این است که با اطمینان ادامه دهید و از فیلتر خارج شوید از طریق زیرساخت گیتهاب. مهاجمان یک مخزن عمومی به نام «شای-هولود» با یک مبنای دو برابر ۶۴ ایجاد میکنند. data.jsonو علاوه بر این، آنها یک گردش کار ایجاد میکنند که سریالسازی میکند ${{ toJSON(secrets) }} و آن را به یک وبهوک استاتیک ارسال میکند.
نتیجه احتمالی شامل دسترسی طولانی مدت به رجیستریها و کد منبع، انتقال سریع جانبی به حسابهای ابری و گزینه استفاده بیشتر از زنجیره تأمین به عنوان سلاح است. گزارشهای عمومی نشان میدهد که بازخریدهای خصوصی با ... به صورت عمومی واگذار شدهاند. «مهاجرت» پسوند، که میزان نمایش دادهها و شتاب آنها را افزایش میدهد
درون محموله Shai-Hulud: bundle.js در بستههای npm
شای-هولود به عنوان یک کشتی بزرگ، همراه با Webpack و به شدت فشرده شده فایل جاوا اسکریپت (bundle.js(حدود ۳ تا ۳.۷ مگابایت) که از یک اجرا میشود نصب پس از نصب قلاب در pack.jsonدر نتیجه, هر نصب، به طور خودکار payload را فعال میکند. این طراحی، شناسهها را پنهان میکند، جریان کنترل را فشرده میکند و تمام منطق را در یک مصنوع واحد قرار میدهد که در حین نصب اجرا میشود. تحلیلگران به طور مداوم بستهبندی Webpack، اندازه غیرمعمول فایل و اجرای زمان نصب را تأیید میکنند.
ویژگیهای مبهمسازی و ضدتحلیل که در نمونهها مشاهده خواهید کرد:
- نمودار ماژول کوچکشده با شناسههای ماژول عددی، نظرات پراکنده و جریان کنترل مسطح. علاوه بر این, این ساختار، بررسی دستی را بسیار دشوار میکند.
- پنهان کردن رشته از طریق لایههای base64 و ابزارهای کمکی ساخت. برای مثال, رمزگذاری و رمزگشایی مکرر base64 معمولاً در اطراف روالهای استخراج دادهها ظاهر میشود.
- اعزام پویا از طریق ارزیابی-الگوهای سبکبندیشده و بدنههای تابع تولیدشده، که در نتیجه کد را قادر میسازد رفتار را در زمان اجرا تغییر دهد.
- فیلترینگ سیستم عامل ترجیح میدهم لینوکس و macOS را به خصوص روی لپتاپهای توسعهدهندگان و کاربران CI اجرا کنم.
از زاویه عملکردی، این بسته ماژولار است. نوشتهها، ماژولهایی را برای کشف سیستمعامل، اسکنهای سیستم فایل و مخفی گیت، دسترسی به SDK ابری، عملیات API گیتهاب و یک موتور انتشار که سایر بستههای متعلق به نگهدارنده را ویرایش میکند، شرح میدهند. در واقع، StepSecurity و ReversingLabs هر دو تابعی را برجسته میکنند که بهطور خودکار بستهها را با قلاب مخرب بهروزرسانی میکند.
اجرای زمان نصب در Shai-Hulud: چگونه بستههای npm کرم را فعال میکنند
حمله زمانی شروع میشود که پس از نصب، گره اجرا میشود bundle.js. در این مرحله، اسکریپت مقداردهی اولیه شده و حالت کاری را در حافظه باز میکند و زمینه را برای عملیات کامل کرم فراهم میکند.
کشف و برداشت
- این payload فایل process.env را dump میکند و فایلهای محلی را برای یافتن رمزهای با آنتروپی بالا و پیشوندهای توکن اسکن میکند. علاوه بر این، با اجرای TruffleHog پوشش را گسترش میدهد.
- این ابزار، نقاط پایانی ابرداده را برای جمعآوری اعتبارنامههای کوتاهمدت پرسوجو میکند. به عنوان مثال، تماس می گیرد
169.254.169.254روی AWS یاmetadata.google.internalروی GCP اغلب در میزبانهای آلوده ظاهر میشوند. - در نتیجه، هر اعتبارنامهای که پیدا شود، بلافاصله برای انتشار بستههای جدید npm یا ارسال گردشهای کاری GitHub قابل استفاده خواهد بود.
اکسفیلتراسیون
- این کرم یک مخزن گیتهاب جدید با نام زیر ایجاد میکند: شای هولود و یک کد دو پایه 64 کدگذاری شده مینویسد
data.jsonبا جزئیات پلتفرم، دادههای محیطی و اسرار. همانطور که مشاهده میشود، اگر مدافعان بدانند کجا را جستجو کنند، این رفتار پر سر و صدا به راحتی قابل تشخیص است. - همچنین یک گردش کار GitHub Actions را، اغلب در شاخهای به نام شای-هولود، که سریال سازی می کند
${{ toJSON(secrets) }}و دادهها را به یک وبهوک استاتیک ارسال میکند. علاوه بر این، این گردش کار تا زمانی که کسی به طور فعال آن را حذف نکند، ادامه مییابد.
انتشار
- با هر توکن npm کشفشده، این payload تمام بستههای متعلق به نگهدارندهی آسیبدیده را فهرست میکند. سپس، هر tarball را دریافت میکند، bundle.js و یک ورودی postinstall را تزریق میکند و بسته را دوباره منتشر میکند.
- در نتیجه، دهها بسته آلوده میتوانند در عرض چند ساعت ظاهر شوند و شعاع انفجار را در سراسر اکوسیستم چند برابر کنند.
پایداری و قرار گرفتن در معرض
این کرم، گردشهای کاری مخرب را فعال نگه میدارد و در چندین مورد، مخازن خصوصی را با ... به مخازن عمومی تبدیل میکند. «مهاجرت» پسوند. در مجموع، این تضمین میکند که مهاجم جای پای خود را حفظ کند و نشت دادهها را به حداکثر برساند.
یادداشت تشخیص کلید
این استفاده غیرمعمول از ${{ toJSON(secrets) }} گردشهای کاری در Actions نادر است. از این رو، تیمها باید در طول شکار، آن را به عنوان یک شاخص مهم در نظر بگیرند.
الگوی گردش کارِ پاکسازیشدهای که باید به دنبالش باشید
این استفاده غیرمعمول از به JSON (اسرار) در این حادثه، «در اقدامات» یک شاخص مهم است.
شبهکد انتشار سطح بالا (ایمن، توصیفی)
تحلیلگران این حلقه را در مقیاس بزرگ مشاهده کردند که جهش سریع از دهها به صدها بسته آلوده را توضیح میدهد.
چرا این یک کرم در اکوسیستم بستهبندی است؟
کرم، بدافزاری است که به خودی خود و بدون نیاز به مراحل دستی اپراتور در هر مرحله، پخش میشود. در سیستمعاملها، کرمها معمولاً از آسیبپذیریهای شبکه برای انتقال از یک دستگاه به دستگاه دیگر استفاده میکنند. در مقابل، Shai-Hulud در داخل رجیستری npm فعالیت میکند. مسیر کارآمد آن از طریق ... است. استفاده مجدد از اعتبار.
این کرم از توکنهای انتشار npm دزدیده شده سوءاستفاده میکند. به محض اینکه اعتبارنامههای معتبر را به دست آورد، نسخههای آلوده را تحت بستههای دیگر متعلق به همان نگهدارنده دوباره منتشر میکند. متعاقباً، آن بستهها توسط توسعهدهندگان یا اجراکنندگان CI ناآگاه نصب میشوند و این چرخه تکرار میشود.
به همین دلیل، تحلیلگران امنیتی، از جمله تاریک خوانی، شای-هولود را به عنوان یک کرم خود تکثیر شونده به جای یک تروجان ساده یا یک حادثهی اشتباه تایپی. تفاوت مهم است: یک تروجان معمولاً یک میزبان را به خطر میاندازد، اما یک کرم تأثیر خود را به طور خودکار در سراسر یک اکوسیستم تقویت میکند.
برگه تقلب «چگونه کار میکند»
برای خلاصه کردن چرخه زندگی شای-هولود، در اینجا یک نتیجهگیری آمده است:cisتجزیه و تحلیل مراحل اصلی آن:
- یک بسته با نصب پس از نصب نصب شده است، و
bundle.jsاجرا می کند. - این payload متغیرهای محیطی را dump میکند، فایلها و تاریخچه git را اسکن میکند، اجرا میشود. ترافل هاگو از سرویسهای ابرداده پرسوجو میکند. در نتیجه، هر راز پیدا شده بلافاصله مفید واقع میشود.
- خروج اطلاعات از سیستم به دو صورت انجام میشود: اول، با ایجاد یک مخزن عمومی به نام شای هولود با کدگذاری دو پایه 64
data.jsonدوم، با ایجاد یک گردش کار GitHub Actions که پستها را ارسال میکند${{ toJSON(secrets) }}به یک وب هوک. - این کرم با استفاده از هر توکن npm دزدیده شده، تمام بستههای دیگر متعلق به نگهدارندهی آسیبدیده را با همان قلاب مخرب دوباره منتشر میکند. به این ترتیب، آلودگی به سرعت تکثیر میشود.
- در نهایت، مهاجم اسرار بیشتری در اختیار دارد، بستههای بیشتری برای پخش شدن دارد، و اصرار داخل حسابها و مخازن گیتهاب.
چگونه عملاً از این نوع حمله جلوگیری کنیم
Shai-Hulud یک زنگ خطر است. کرمی که توکنها را میدزدد و خودش را بازنشر میدهد، خطری برای آینده نیست، بلکه در حال حاضر فعال است. اکوسیستم بستههای npm امروز. برای جلوگیری از این نوع حمله زنجیره تامینتیمها به کنترلهایی نیاز دارند که قابل برنامهریزی، خودکار و مستقیماً در ... اعمال شوند. CI/CD pipelineاینها همان دفاعهایی هستند که میتوانید با آنها پیادهسازی کنید. شیگنی.
جلوی مصنوعات بد را در دروازه بگیرید
شما باید بستههای npm و tarballها را قبل از رسیدن به دست توسعهدهندگان یا مشاغل CI اسکن کنید. bundle.js فایلها، نصب پس از نصب مشکوک hooksو نشانگرهای مبهمسازی، همگی به عنوان پرچمهای قرمز اولیه عمل میکنند. علاوه بر این، اعمال دورههای آرامش و نسخههای پین شده در pipelines از مصرف خودکار نسخههای تازه و بررسی نشده جلوگیری میکند.
سخت تر CI/CD به صورت پیش فرض
Guardrails in CI/CD ضروری هستند. آنها ادغامها یا نصبهایی را که اسکریپتها یا فایلهای باینری جدید را معرفی میکنند، رد میکنند. در عین حال، گردش کارهایی را که اسرار را سریالی میکنند یا سعی در ارسال پستهای خارجی دارند، مسدود میکنند. تیمها همچنین باید نصبهای فقط-فایل قفل (lockfile-only) را الزامی کنند.npm ci) در همه موارد pipelineبنابراین مجموعههای وابستگی قابل تکرار و ایمن باقی میمانند.
شعاع انفجار توکن را کاهش دهید
اسرار نباید به نقاط شکست تبدیل شوند. به طور مداوم کد، پیکربندیها و ... را اسکن کنید. pipeline خروجی برای اعتبارنامههای افشا شدهتوکنها باید به طور دقیق بررسی شوند، طول عمر کوتاهی داشته باشند و در صورت شناسایی آسیبپذیری، به طور خودکار تغییر داده شوند. به عنوان یک قاعده، هر توکنی که در میزبانی که یک نصب پس از نصب مشکوک را اجرا کرده است، به عنوان توکن آلوده در نظر گرفته شود.
رفتار کرم را زود ببینید
تشخیص ناهنجاری کلیدی است. برای مثال، افزایش ناگهانی رویدادهای انتشار npm، گردشهای کاری جدیدی که بدون دلیل ظاهر میشوند، یا مخازن عمومی جدید پر از فایلهای رمزگذاری شده عجیب، همگی میتوانند نشاندهنده فعالیت کرم باشند. بنابراین، تیمها باید به سرعت هشدارها را اعلام کرده و هر نگهدارنده یا اجراکنندهای را که این علائم هشدار دهنده را نشان میدهد، ایزوله کنند.
بدون خراب شدن ساختارها، به سرعت اصلاح کنید
سرعت و ایمنی باید با هم باشند. خودکار pull requests میتواند بستههای npm آسیبپذیر را با نسخههای تأیید شده جایگزین کند. علاوه بر این، دستیابی و قابلیت بهرهبرداری تجزیه و تحلیل تضمین میکند که ارتقاءها حداقل و پایدار بمانند. در نهایت، پس از تأیید قرار گرفتن در معرض حمله، اجراکنندههای CI آسیبدیده را از تصاویر سالم بازسازی کنید و از گسترش بیشتر حمله جلوگیری کنید.
شاخص های سازش (IoCs)
هنگام تحلیل شای-هولود، تیمها باید هر دو را در نظر داشته باشند IoC های استاتیک در فایلها و IoC های رفتاری in pipelineاین سیگنالها در کنار هم به تشخیص زودهنگام عفونتها و واکنش قبل از گسترش بیشتر کرم کمک میکنند.
IoC های استاتیک
تطابق هضم SHA-256 زیر مشاهده شد bundle.js نمونه ها:
- 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
- 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
- dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c
علاوه بر این، مراقب این الگوهای تکرارشونده باشید:
- A
bundle.jsدر ریشه بسته. "postinstall": "node bundle.js"داخلpackage.json.- مخازن نامگذاری شده شای هولود.
- گردشهای کاری GitHub شامل
${{ toJSON(secrets) }}.
IoC های رفتاری
فراتر از امضاهای فایل، فعالیت کرم خود را از طریق رفتار آشکار میکند. برای مثال:
- انفجار ناگهانی رویدادهای انتشار npm از یک نگهدارنده.
- گردشهای کاری جدید که دادهها را به نقاط انتهایی خارجی هدایت میکنند.
- درخواستهای POST خروجی از سوی اجراکنندگان CI فعال میشوند.
- مخازن عمومی اخیراً ایجاد شده با حبابهای رمزگذاری شده.
شکارهای سریع
نتیجهگیری: درسهایی از شای-هلود
La حمله زنجیره تأمین Shai-Hulud در بستههای npm نشان میدهد که زنجیره تأمین نرمافزار امروزی چقدر شکننده شده است. این کرم کاری بیش از اضافه کردن کد مخرب انجام داد. توکنها را میدزدید، دادهها را ارسال میکرد و سپس خود را به طور خودکار بازنشر میکرد. به همین دلیل، حمله به جای چند هفته، در عرض چند ساعت گسترش یافت.
برای توسعهدهندگان و تیمهای DevOps، درسها واضح هستند:
- هر نصب، کدی را اجرا میکند. حتی یک بسته npm معمولی هم میتواند یک کرم پس از نصب را پنهان کند.
- هر توکن ارزش بالایی دارد. پس از سرقت، میتوان از آن برای گسترش بیشتر بدافزار استفاده کرد.
- هر pipeline نیاز به بررسی دارد. بدون guardrails در مورد وابستگیها، گردشهای کاری و اسرار، یک سازش میتواند به سرعت به تولید ضربه بزند.
بنابراین، متوقف کردن حملاتی مانند Shai-Hulud نیازمند کنترلهایی است که خودکار و به راحتی قابل اجرا باشند. تیمها باید قبل از نصب، بستههای npm را اسکن کنند، از ساختهای lockfile استفاده کنند، فعالیتهای انتشار عجیب را شناسایی کنند و توکنها را کوتاه مدت نگه دارند. این مراحل دیگر اختیاری نیستند. در عوض، آنها پایه و اساس انعطافپذیری در سیستمهای مدرن هستند. pipelines.
در Xygeni، ما حمله زنجیره تأمین Shai-Hulud را به عنوان هشداری برای کل اکوسیستم متنباز میبینیم. راه پایدار پیش رو، وارد کردن مستقیم امنیت زنجیره تأمین به فرآیند توسعه است، در نقطهای که کد، بستههای npm و pipelineاتصال برقرار کنید.
در زیر لیست کامل بستههای npm و نسخههای گزارششده به عنوان آسیبپذیر در Shai-Hulud آمده است. از آن برای بررسی فایلهای قفل، رجیستریها و CI خود استفاده کنید. pipelineبرای قرار گرفتن در معرض.
فهرست بستههای آسیبپذیر
📦 پیشنمایش بستههای npm آسیبپذیر
| نام بسته | نسخه | تاریخ انتشار |
|---|---|---|
| موتور-قوانین-json-سادهشده | 0.2.1 | 2025-09-14T17:58:51.203Z |
| خلبان هواپیما | 0.8.8 | 2025-09-14T18:35:07.600Z |
| نمودار دانش MCP | 1.2.1 | 2025-09-14T18:35:09.494Z |
| فرمانده نیروی هوایی | 0.3.1 | 2025-09-14T18:35:09.521Z |
| جامپگیت | 0.0.2 | 2025-09-14T18:35:09.651Z |
| تیوی-کلی | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/callback-window | 1.1.4 | 2025-09-14T20:31:38.479Z |
| @tnf-dev/api | 1.0.8 | 2025-09-14T20:31:39.547Z |
| @tnf-dev/js | 1.0.8 | 2025-09-14T20:31:41.251Z |
| @tnf-dev/mui | 1.0.8 | 2025-09-14T20:31:41.259Z |
| @tnf-dev/core | 1.0.8 | 2025-09-14T20:31:42.728Z |
| @teselagen/react-table | 6.10.20 | 2025-09-14T20:37:08.597Z |
| @hestjs/دمو | 0.1.2 | 2025-09-14T20:45:52.348Z |
| @nexe/eslint-config | 0.1.1 | 2025-09-14T20:45:53.625Z |
| @hestjs/eslint-config | 0.1.2 | 2025-09-14T20:45:55.044Z |
| @nexe/config-manager | 0.1.1 | 2025-09-14T20:45:55.066Z |
| @nexe/logger | 0.1.3 | 2025-09-14T20:45:55.170Z |
| @hestjs/logger | 0.1.6 | 2025-09-14T20:45:55.197Z |
| @hestjs/اعتبارسنجی | 0.1.6 | 2025-09-14T20:45:55.595Z |
| @hestjs/core | 0.2.1 | 2025-09-14T20:45:55.888Z |
➡️ مشاهده لیست کامل بستههای آلوده
| نام بسته | نسخه | تاریخ انتشار |
|---|---|---|
| موتور-قوانین-json-سادهشده | 0.2.1 | 2025-09-14T17:58:51.203Z |
| خلبان هواپیما | 0.8.8 | 2025-09-14T18:35:07.600Z |
| نمودار دانش MCP | 1.2.1 | 2025-09-14T18:35:09.494Z |
| فرمانده نیروی هوایی | 0.3.1 | 2025-09-14T18:35:09.521Z |
| جامپگیت | 0.0.2 | 2025-09-14T18:35:09.651Z |
| تیوی-کلی | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/callback-window | 1.1.4 | 2025-09-14T20:31:38.479Z |
| @tnf-dev/api | 1.0.8 | 2025-09-14T20:31:39.547Z |
| @tnf-dev/js | 1.0.8 | 2025-09-14T20:31:41.251Z |
| @tnf-dev/mui | 1.0.8 | 2025-09-14T20:31:41.259Z |
| @tnf-dev/core | 1.0.8 | 2025-09-14T20:31:42.728Z |
| @teselagen/react-table | 6.10.20 | 2025-09-14T20:37:08.597Z |
| @hestjs/دمو | 0.1.2 | 2025-09-14T20:45:52.348Z |
| @nexe/eslint-config | 0.1.1 | 2025-09-14T20:45:53.625Z |
| @hestjs/eslint-config | 0.1.2 | 2025-09-14T20:45:55.044Z |
| @nexe/config-manager | 0.1.1 | 2025-09-14T20:45:55.066Z |
| @nexe/logger | 0.1.3 | 2025-09-14T20:45:55.170Z |
| @hestjs/logger | 0.1.6 | 2025-09-14T20:45:55.197Z |
| @hestjs/اعتبارسنجی | 0.1.6 | 2025-09-14T20:45:55.595Z |
| @hestjs/core | 0.2.1 | 2025-09-14T20:45:55.888Z |
| @hestjs/cqrs | 0.1.6 | 2025-09-14T20:45:55.966Z |
| @hestjs/اسکالر | 0.1.7 | 2025-09-14T20:45:56.386Z |
| آپلود فایل ng2 | 7.0.3 | 2025-09-15T02:44:29.555Z |
| کنترلکننده اعلان خازن | 0.0.2 | 2025-09-15T04:54:48.431Z |
| خازن-پلاگین-فوناژ | 1.0.2 | 2025-09-15T04:54:48.501Z |
| افزونه خازن-healthapp | 0.0.2 | 2025-09-15T04:54:48.704Z |
| مجوزهای اندروید خازنی | 0.0.4 | 2025-09-15T04:54:48.753Z |
| کیت تماس ویپ | 1.0.2 | 2025-09-15T04:54:49.223Z |
| خازن-پلاگین-ihealth | 1.1.8 | 2025-09-15T04:55:08.113Z |
| @art-ws/common | 2.0.22 | 2025-09-15T05:21:15.411Z |
| @art-ws/config-eslint | 2.0.4 | 2025-09-15T05:21:17.199Z |
| ngx-ws | 1.1.5 | 2025-09-15T05:21:17.514Z |
| @art-ws/slf | 2.0.15 | 2025-09-15T05:21:17.524Z |
| @art-ws/http-server | 2.0.21 | 2025-09-15T05:21:17.745Z |
| pm2-gelf-json | 1.0.4 | 2025-09-15T05:21:18.413Z |
| @art-ws/di | 2.0.28 | 2025-09-15T05:21:18.488Z |
| @art-ws/di-node | 2.0.13 | 2025-09-15T05:21:18.849Z |
| @art-ws/config-ts | 2.0.7 | 2025-09-15T05:21:19.408Z |
| @art-ws/db-context | 2.0.21 | 2025-09-15T05:21:19.814Z |
| @art-ws/openapi | 0.1.9 | 2025-09-15T05:21:19.969Z |
| @art-ws/web-app | 1.0.3 | 2025-09-15T05:21:20.383Z |
| @art-ws/ssl-info | 1.0.9 | 2025-09-15T05:21:20.927Z |




