TL, д-р
14 верасня 2025 года даследчыкі вызначылі Шай-Хулуд, чарвяк, які самаўзнаўляецца, схаваны ўнутры Пакеты npm, ператвараючы звычайнае абнаўленне залежнасцей у паўнамаштабнае атака на ланцужкі паставакУпершыню заўважаны ў @ctrl/маленькі колер Пакет ад Даніэля душ Сантуша Перэйры, Shai-Hulud збірае сакрэты, выцягвае іх праз рэпазітарыі і працоўныя працэсы GitHub і зноў публікуе сябе ў рэестры, выкарыстоўваючы скрадзеныя ўліковыя дадзеныя. На працягу некалькіх дзён колькасць заражаных пакетаў вырасла з дзясяткаў да соцень, што пацвярджае, што Шайхулуд гэта не проста чарговы траян, а чарвяк, прызначаны для аўтаматычнага распаўсюджвання па экасістэме npm.
ўздзеянне: Любы распрацоўшчык або кіраўнік неперарыўнай інтэграцыі, які ўсталёўвае публічныя пакеты npm, знаходзіцца пад пагрозай.
Неадкладныя дзеянні: блакаваць вядомыя версіі, пераключацца на ўсталёўку толькі з файлаў блакіроўкі, ратаваць токены npm і GitHub, праводзіць аўдыт працоўных працэсаў і кантраляваць індыкатары кампраметацыі (IoC).
Што здарылася?
,en Атака на ланцужок паставак Shai-Hulud у пакетах npm — адзін з самых разбуральных інцыдэнтаў за апошні час. У адрозненне ад асобных траянаў, гэты чарвяк змешвае крадзеж уліковых дадзеных, аўтаматызаваная эксфільтрацыя і самаўзнаўленнеУ выніку, тэрміны заражэння скараціліся з тыдняў да некалькіх гадзін.
Для каманд DevOps урок відавочны: калі кожная ўстаноўка можа выконваць код, то кожнае абнаўленне залежнасцей з'яўляецца патэнцыйнай кропкай парушэння бяспекі.
Магчымыя пачатковыя вектарныя і мэтавыя паўнамоцтвы
Ранні аналіз паказвае, што напад, верагодна, пачаўся з выкрадзеныя ўліковыя дадзеныяНапрыклад, фішынгавыя кампаніі, якія падманваюць npm login або запыты MFA маглі перахапіць токены распрацоўшчыка. Як толькі зламыснікі атрымалі гэтую першую кропку доступу, чарвяк распаўсюдзіўся, убудоўваючыся ў npm-пакеты і крадучы больш сакрэтаў з:
- файлы канфігурацыі npm як
.npmrc, часта змяшчаючы токены публікацыі. - Environment variables і канфігурацыі з дапамогай PAT-файлаў GitHub і CI/CD сакрэты.
- Канцавыя кропкі метададзеных воблака (AWS, GCP, Azure), што дае кароткачасовыя паўнамоцтвы для латэральнага перамяшчэння.
Такім чынам, крадзеж уліковых дадзеных стаў стартавай пляцоўкай. Маючы дзеючыя токены npm і сакрэты GitHub, Shai-Hulud мог самастойна рэплікаваць у некалькі пакетаў і рэпазіторыяў без дадатковых намаганняў чалавека.
Уплыў атакі Шай-Хулуда на ланцужок паставак на кіраўніцтва
Shai-Hulud усё яшчэ актыўны і сёння. Гэты чарвяк паскарае час уздзеяння. Тое, што раней займала тыдні ў выпадку з траянам, цяпер адбываецца за гадзіны. У выніку распаўсюджванне адбываецца хутчэй і яго цяжэй стрымаць. Яно прасоўваецца шляхам:
- Крадзеж публікацыйных токенаў npm і сакрэтаў GitHub.
- Паўторная публікацыя сябе ў іншых npm-пакетах.
- Даданне шкоднасных працоўных працэсаў GitHub Actions для захавання.
Каго гэта тычыцца:
Любая каманда, якая ўсталёўвае публічныя npm-пакеты, падвяргаецца ўздзеянню. Больш за тое, распрацоўшчыкі з кэшаванымі npm-токенамі або GitHub сутыкаюцца з высокай рызыкай. Таксама ўразлівыя CI-менеджэры, якія выкарыстоўваюць сакрэты шырокага ахопу.
Бізнес-рызыка
Уплыў на бізнес хутка расце. Скрадзеныя токены могуць прывесці да захопу акаўнта, захопу пакетаў і нават злоўжывання воблакам. Акрамя таго, захаванне працоўных працэсаў GitHub абцяжарвае іх ачыстку. ТамуКаманды павінны разглядаць Шай-Хулуд як бягучы інцыдэнт, а не як завершаны.
Як працуе атака Shai-Hulud на ланцужок паставак у npm-пакетах
Мэты і матыў нападніка
Кампанія аптымізуе тры рэчы:
- Першая мэта — крадзеж уліковых дадзеных у вялікіх маштабах з ноўтбукаў распрацоўшчыкаў і кіраўнікоў неперарыўнай інтэграцыі. Гэта ўключае ў сябе токены публікацыі npm, токены GitHub і воблачныя ўліковыя дадзеныя. Фактычна, шматлікія аналізы пацвярджаюць сістэматычны збор сакрэтных дадзеных, напрыклад, запуск TruffleHog і запыт канчатковых кропак воблачных метададзеных.
- Другая мэта — распаўсюджвацца аўтаматычна злоўжываючы правамі на публікацыю кампраметаваных распрацоўшчыкаў. У выніку адзін плацдарм хутка пашыраецца на многія, бо новыя заражаныя версіі іншых пакетаў з'яўляюцца без дадатковых намаганняў чалавека.
- Трэцяя мэта — захоўвацца і надзейна выходзіць праз інфраструктуру GitHub. Зламыснікі ствараюць публічны рэпазітар пад назвай «Shai-Hulud» з падвойнай базай64 data.jsonі, акрамя таго, яны ўкараняюць працоўны працэс, які серыялізуе ${{ toJSON(сакрэты) }} і адпраўляе яго на статычны вэбхук.
Верагодная выгада ўключае працяглы доступ да рэестраў і зыходнага кода, хуткі пераход у воблачныя акаўнты і магчымасць далейшага ўзбраення ланцужка паставак. Публічная справаздачнасць паказвае, што прыватныя рэпазітарыі ператвараюцца ў публічныя з... «-міграцыя» суфікс, які павялічвае даступнасць дадзеных і імпульс
Унутры карыснай нагрузкі Шай-Хулуда: bundle.js у пакетах npm
Шай-Хулуд адпраўляецца як вялікі, аб'яднаны з Webpack і моцна мініфікаваны Файл JavaScript (bundle.js, каля 3–3.7 МБ) які выконваецца з пасля ўстаноўкі падчапіць package.jsonТакім чынам, Кожная ўсталёўка аўтаматычна запускае карысную нагрузку. Такая канструкцыя хавае ідэнтыфікатары, сціскае паток кіравання і змяшчае ўсю логіку ў адзін артэфакт, які выконваецца падчас усталёўкі. Аналітыкі паслядоўна пацвярджаюць аб'яднанне Webpack, незвычайны памер файла і выкананне падчас усталёўкі.
Рысы заблытвання і антыаналізу, якія вы ўбачыце ў прыкладах:
- Мініфікаваны граф модуляў з лічбавымі ідэнтыфікатарамі модуляў, рэдкімі каментарамі і сплюшчаным патокам кіравання. Больш за тое, такая структура надзвычай ускладняе ручную праверку.
- Схаванне радка праз слаі base64 і памочнікі пабудовы. Напрыклад, паўторнае кадаванне і дэкадаванне base64 звычайна з'яўляецца вакол працэдур экстрафільтрацыі.
- Дынамічная адпраўка праз эвалшаблоны ў стылі -і згенераваныя целы функцый, што дазваляе коду змяняць паводзіны падчас выканання.
- Фільтраванне АС аддаваць перавагу выкананню ў Linux і macOS, асабліва на чыстаканніковых прыладах і ноўтбуках распрацоўшчыкаў.
З функцыянальнага пункту гледжання, камплект з'яўляецца модульным. У артыкулах апісаны модулі для выяўлення аперацыйнай сістэмы, сканавання файлавых сістэм і сакрэтных дадзеных git, доступу да хмарных SDK, аперацый з API GitHub і механізму распаўсюджвання, які рэдагуе іншыя пакеты, якімі валодае распрацоўшчык. Фактычна, StepSecurity і ReversingLabs вылучаюць функцыю, якая аўтаматычна абнаўляе пакеты са шкоднасным перахопнікам.
Выкананне падчас усталёўкі ў Shai-Hulud: як npm-пакеты запускаюць чарвяка
Атака пачынаецца, калі пасля ўсталёўкі запускае вузел bundle.js. На гэтым этапе скрыпт ініцыялізуецца і распакоўвае працоўны стан у памяці, падрыхтоўваючы чарвяка да паўнавартаснай працы.
Адкрыццё і збор ураджаю
- Карысная нагрузка стварае дамп process.env і скануе лакальныя файлы на наяўнасць сакрэтаў з высокай энтрапіяй і прэфіксаў токенаў. Акрамя таго, яна пашырае пакрыццё, запускаючы TruffleHog.
- Ён запытвае канчатковыя кропкі метададзеных воблака для збору кароткатэрміновых уліковых дадзеных. Так, напрыклад, званкі да
169.254.169.254на AWS абоmetadata.google.internalна GCP часта з'яўляюцца ў заражаных гаспадароў. - Такім чынам, Любыя знойдзеныя ўліковыя дадзеныя адразу ж можна выкарыстоўваць для публікацыі новых npm-пакетаў або запуску працоўных працэсаў на GitHub.
Эксфільтрацыя
- Чарвяк стварае новы рэпазітар GitHub пад назвай Шай-Хулуд і запісвае падвойнае кадзіраванне base64
data.jsonз падрабязнасцямі платформы, дампамі асяроддзя і сакрэтамі. Як бачна, такую шумную паводзіну лёгка заўважыць, калі абаронцы ведаюць, куды шукаць. - Ён таксама размяшчае працоўны працэс GitHub Actions, часта ў галінцы з назвай шай-хулуд, які серыялізуе
${{ toJSON(secrets) }}і адпраўляе дадзеныя ў статычны вэбхук. Больш за тое, гэты працоўны працэс працягваецца, пакуль хтосьці актыўна яго не выдаліць.
Распаўсюджванне
- З любым выяўленым токенам npm карысная нагрузка пералічвае ўсе пакеты, якія належаць узламанаму распрацоўшчыку. Затым яна атрымлівае кожны tar-архіў, устаўляе bundle.js і запіс postinstall, а затым перапублікуе пакет.
- У выніку, дзясяткі заражаных пакетаў могуць з'явіцца за лічаныя гадзіны, што шматразова павялічвае радыус выбуху па ўсёй экасістэме.
Устойлівасць і ўздзеянне
Чарвяк падтрымлівае працу шкоднасных працоўных працэсаў і ў некаторых выпадках пераводзіць прыватныя рэпазітарыі ў публічныя з дапамогай «-міграцыя» суфікс. У цэлым гэта гарантуе, што зламыснік захавае сваю пазіцыю і максімізуе ўцечку дадзеных.
Заўвага па выяўленні ключа
Гэта незвычайнае выкарыстанне ${{ toJSON(secrets) }} у працоўных працэсах "Дзеянні" сустракаецца рэдка. Такім чынам, Каманды павінны разглядаць гэта як важны сігнал падчас палявання.
Ачышчаны шаблон працоўнага працэсу, на які варта звярнуць увагу
Гэта незвычайнае выкарыстанне у JSON (сакрэты) Дзеянні з'яўляюцца важным паказчыкам у гэтым інцыдэнце.
Псеўдакод распаўсюджвання высокага ўзроўню (бяспечны, апісальны)
Аналітыкі назіралі гэты цыкл у вялікіх маштабах, што тлумачыць хуткі скачок ад дзясяткаў да сотняў заражаных пакетаў.
Чаму гэта чарвяк у экасістэме пакетаў
Чарвяк — гэта шкоднаснае праграмнае забеспячэнне, якое распаўсюджваецца самастойна, не патрабуючы ручных дзеянняў аператара на кожным этапе. У аперацыйных сістэмах чарвякі звычайна выкарыстоўваюць уразлівасці сеткі для перамяшчэння з адной машыны на іншую. У адрозненне ад гэтага, Shai-Hulud працуе ўнутры рэестра npm. Яго эфектыўны шлях ляжыць праз паўторнае выкарыстанне ўліковых дадзеных.
Чарвяк карыстаецца скрадзенымі публікацыйнымі токенамі npm. Як толькі ён атрымлівае сапраўдныя ўліковыя дадзеныя, ён перапублікуе заражаныя версіі ў іншых пакетах, якія належаць таму ж распрацоўшчыку. Пасля гэтага гэтыя пакеты ўсталёўваюцца нічога не падазравальнымі распрацоўшчыкамі або кіраўнікамі неперасягненай інтэграцыі, і цыкл паўтараецца.
Па гэтай прычыне аналітыкі бяспекі, у тым ліку Цёмнае чытанне, класіфікуюць Шай-Хулуда як самаразмнажальны чарвяк а не просты траян ці памылка тыпасквотынгу. Розніца важная: траян звычайна кампраметуе адзін хост, але чарвяк аўтаматычна ўзмацняе свой уплыў на ўсю экасістэму.
Шпаргалка «Як гэта працуе»
Каб коратка апісаць жыццёвы цыкл Шай-Хулуда, вось адна хітрасцьcisрасклад асноўных этапаў:
- Пакет з пасля ўстаноўкі усталяваны, і
bundle.jsвыконвае. - Карысная нагрузка стварае дампы зменных асяроддзя, скануе файлы і гісторыю git, запускае Труфельны Хогі запытвае воблачныя сэрвісы метададзеных. Такім чынам, любы знойдзены сакрэт адразу становіцца карысным.
- Вывад дадзеных адбываецца двума спосабамі: па-першае, шляхам стварэння публічнага рэпазітара пад назвай Шай-Хулуд з падвойным кадзіраваннем base64
data.jsonпа-другое, шляхам стварэння працоўнага працэсу GitHub Actions, які публікуе${{ toJSON(secrets) }}да вэбхука. - Выкарыстоўваючы любы скрадзены токен npm, чарвяк перапублікуе ўсе астатнія пакеты, якія належаць узламанаму распрацоўшчыку, з тым жа шкоднасным перахопнікам. Такім чынам, інфекцыя хутка размнажаецца.
- Нарэшце, зламыснік мае больш сакрэтаў, больш пакетаў для распаўсюджвання і настойлівасць унутры акаўнтаў і рэпазіторыяў GitHub.
Як пазбегнуць гэтага класа нападаў на практыцы
Шай-Хулуд — гэта трывожны сігнал. Чарвяк, які крадзе токены і перапублікуецца, не ўяўляе сабой рызыку ў будучыні, ён жывы ў... экасістэма пакетаў npm сёння. Каб прадухіліць гэты тып атака на ланцужкі паставаккамандам патрэбныя праграмуемыя, аўтаматызаваныя элементы кіравання, якія выконваюцца непасрэдна CI/CD pipelineс. Гэта тыя ж абарончыя меры, якія вы ўжо можаце рэалізаваць з дапамогай Ксігені.
Спыніце дрэнныя артэфакты ля брамы
Вам варта сканаваць npm-пакеты і tar-архівы, перш чым яны трапяць да распрацоўшчыкаў або праектаў неперасягненай інтэграцыі. bundle.js файлы, падазроныя пасля ўсталёўкі hooksі маркеры заблытвання служаць раннімі сігналамі трывогі. Больш за тое, прымусовае ўвядзенне перыядаў астывання і замацаванне версій у pipelines прадухіляе аўтаматычнае спажыванне свежых, неправераных рэлізаў.
зацвярдзець CI/CD па змаўчанні
Guardrails in CI/CD з'яўляюцца неабходнымі. Яны адхіляюць зліцці або ўсталёўкі, якія ўводзяць новыя скрыпты або двайковыя файлы. Адначасова яны блакуюць працоўныя працэсы, якія серыялізуюць сакрэты або спрабуюць публікаваць знешнія паведамленні. Каманды таксама павінны патрабаваць усталёўкі толькі з выкарыстаннем файлаў блакіроўкі (npm ci) па ўсіх pipelineтаму наборы залежнасцей застаюцца ўзнаўляльнымі і бяспечнымі.
Паменшыце радыус выбуху жэтонаў
Сакрэты не павінны станавіцца адзінымі кропкамі збою. Пастаянна скануйце код, канфігурацыі і pipeline выхад для раскрытыя ўліковыя дадзеныяТокены павінны мець вузкую вобласць дзеяння, кароткі тэрмін службы і аўтаматычна ратаваць іх пры выяўленні ўздзеяння. Як правіла, любы токен, які выкарыстоўваецца на хосце, які выканаў падазроную пасляўстаноўку, лічыцца ўзламаным.
Заўважце паводзіны чарвякоў рана
Выяўленне анамаліі з'яўляецца ключавым. Напрыклад, раптоўныя ўсплёскі публікацый npm, новыя працоўныя працэсы, якія з'яўляюцца без прычыны, або новыя публічныя рэпазітарыі, запоўненыя дзіўнымі закадаванымі файламі, могуць сведчыць аб актыўнасці чарвякоў. Таму каманды павінны хутка падымаць папярэджанні і ізаляваць любых менеджэраў або выканаўцаў, якія паказваюць гэтыя папераджальныя прыкметы.
Хуткае выпраўленне без пашкоджання зборак
Хуткасць і бяспека павінны ісці рука аб руку. Аўтаматызавана pull requests можа замяніць узламаныя npm-пакеты праверанымі версіямі. Акрамя таго, дасяжнасць і эксплуатацыйная здольнасць Аналіз гарантуе, што абнаўленні застануцца мінімальнымі і стабільнымі. Нарэшце, пасля пацверджання ўздзеяння аднавіце пашкоджаныя CI-раннеры з чыстых вобразаў, каб прадухіліць далейшае распаўсюджванне атакі.
Індыкатары кампрамісу (IoC)
Пры аналізе Шай-Хулуда каманды павінны сачыць за абодвума статычныя 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-раннерамі.
- Нядаўна створаныя публічныя рэпазітарыі з закадаванымі блобамі.
Хуткае паляванне
Выснова: Урокі Шай-Хулуда
,en Атака на ланцужок паставак Шай-Хулуда у npm-пакетах паказвае, наколькі далікатным стаў сучасны ланцужок паставак праграмнага забеспячэння. Гэты чарвяк не проста дадаваў шкоднасны код. Ён краў токены, адпраўляў даныя, а потым аўтаматычна перавыдаваў сябе. З-за гэтага атака распаўсюдзілася за гадзіны, а не за тыдні.
Для распрацоўшчыкаў і каманд DevOps урокі відавочныя:
- Кожная ўстаноўка запускае код. Нават звычайны npm-пакет можа хаваць пасляўсталёўвальнага чарвяка.
- Кожны токен мае высокую каштоўнасць. Пасля крадзяжу яго можна выкарыстоўваць для далейшага распаўсюджвання шкоднасных праграм.
- Кожны pipeline патрэбныя праверкі. Без guardrails што тычыцца залежнасцей, працоўных працэсаў і сакрэтаў, адзін кампраміс можа хутка паўплываць на прадукцыйнасць.
Такім чынам, для спынення такіх атак, як Shai-Hulud, патрэбныя аўтаматычныя і простыя ў выкананні меры кантролю. Каманды павінны сканаваць npm-пакеты перад усталёўкай, выкарыстоўваць зборкі блакіроўкі, выяўляць дзіўную публікацыйную актыўнасць і падтрымліваць кароткачасовае выкарыстанне токенаў. Гэтыя крокі больш не з'яўляюцца неабавязковымі. Замест гэтага яны з'яўляюцца асновай устойлівасці ў сучасным... pipelines.
У Xygeni мы разглядаем атаку Shai-Hulud на ланцужок паставак як папярэджанне для ўсёй экасістэмы адкрытага зыходнага кода. Устойлівы шлях наперад — гэта ўнесці бяспеку ланцужка паставак непасрэдна ў працэс распрацоўкі, у той момант, калі код, npm-пакеты і pipelineпадключаецца.
Ніжэй прыведзены поўны спіс пакетаў і версій npm, якія былі пазначаны як узламаныя ў Shai-Hulud. Выкарыстоўвайце яго для праверкі файлаў блакіроўкі, рэестраў і неканфігураваных інтэрфейсаў. pipelines для экспазіцыі.
Спіс кампраметаваных пакетаў
📦 Папярэдні прагляд узламаных 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 |
| tvi-cli | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/акно зваротнага выкліку | 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-канфігурацыя | 0.1.1 | 2025-09-14T20:45:53.625Z |
| @hestjs/eslint-канфігурацыя | 0.1.2 | 2025-09-14T20:45:55.044Z |
| @nexe/manager-config | 0.1.1 | 2025-09-14T20:45:55.066Z |
| @nexe/рэгістратар | 0.1.3 | 2025-09-14T20:45:55.170Z |
| @hestjs/логгер | 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 |
| tvi-cli | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/акно зваротнага выкліку | 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-канфігурацыя | 0.1.1 | 2025-09-14T20:45:53.625Z |
| @hestjs/eslint-канфігурацыя | 0.1.2 | 2025-09-14T20:45:55.044Z |
| @nexe/manager-config | 0.1.1 | 2025-09-14T20:45:55.066Z |
| @nexe/рэгістратар | 0.1.3 | 2025-09-14T20:45:55.170Z |
| @hestjs/логгер | 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 |
| кандэнсатар-плагін-vonage | 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 |
| камплект VoIP-званкоў | 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-сервер | 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/вэб-праграма | 1.0.3 | 2025-09-15T05:21:20.383Z |
| @art-ws/ssl-info | 1.0.9 | 2025-09-15T05:21:20.927Z |




