TL, DR
2025. szeptember 14-én a kutatók azonosították Shai Hulud, egy önmagát replikáló féreg rejtőzik benne npm csomagok, egy rutin függőségi frissítést teljes körűvé alakítva ellátási lánc támadásElőször a következő helyen észlelték: @ctrl/aprószín Daniel dos Santos Pereira csomagjával a Shai-Hulud titkos adatokat gyűjt, kiszivárogtatja azokat a GitHub repókon és munkafolyamatokon keresztül, majd ellopott hitelesítő adatokkal újra közzéteszi magát a rendszerleíró adatbázisban. Napokon belül a fertőzött csomagok száma tucatokról több százra ugrott, ami megerősíti, hogy Shaihulud nem csupán egy újabb trójai, hanem egy féreg, amelyet arra terveztek, hogy automatikusan terjedjen az npm ökoszisztémában.
Hatás: Bármely fejlesztő vagy CI-futtató, aki nyilvános npm csomagokat telepít, veszélyben van.
Azonnali intézkedések: blokkolja az ismert verziókat, váltson csak lockfile-alapú telepítésekre, cserélje az npm és GitHub tokeneket, auditálja a munkafolyamatokat, és figyelje a kompromittálódási indikátorokat (IoC-ket).
Mi történik?
Az Shai-Hulud ellátási lánc támadás npm csomagokban az egyik legzavaróbb esemény az utóbbi időben. Az elszigetelt trójaiakkal ellentétben ez a féreg keveredik hitelesítő adatok ellopása, automatizált kiszűrés és önreplikációKövetkezésképpen a fertőzés időtartama hetekről órákra csökkent.
A DevOps csapatok számára a tanulság egyértelmű: ha minden telepítés képes kódot futtatni, akkor minden függőségi frissítés potenciális biztonsági rés.
Lehetséges kezdeti vektor és célzott hitelesítő adatok
Korai elemzés arra utal, hogy a támadás valószínűleg azzal kezdődött, hogy lopott igazolványokPéldául az npm-et hamisító adathalász kampányok login vagy az MFA-kérések elfoghatták a fejlesztői tokeneket. Miután a támadók megvetették a lábukat, a féreg az npm csomagokba ágyazva terjedt, és további titkokat lopott el a következőkből:
- npm konfigurációs fájlok mint
.npmrc, gyakran közzétételi tokeneket tartalmaz. - Környezeti változók és konfigurációk GitHub PAT-okkal és CI/CD titkok.
- Felhőbeli metaadat-végpontok (AWS, GCP, Azure) rövid életű hitelesítő adatokat biztosítanak az oldalirányú mozgáshoz.
Ezért a hitelesítő adatok ellopása vált a kiindulóponttá. Érvényes npm tokenekkel és GitHub titkos kódokkal a Shai-Hulud több csomag és tároló között is képes volt önmagát replikálni extra emberi erőfeszítés nélkül.
A Shai-Hulud ellátási lánc elleni támadás vezetői hatása
A Shai-Hulud ma is aktív. Ez a féreg felgyorsítja a becsapódás idővonalát. Ami egykor hetekig tartott egy trójaival, az most órák alatt lezajlik. Ennek eredményeként, a terjedés gyorsabb és nehezebben megfékezhető. Az alábbiak által halad előre:
- Npm közzétételi tokenek és GitHub titkok ellopása.
- Újraközzétéve magát más npm csomagokba.
- Kártékony GitHub Actions munkafolyamatok hozzáadása a megmaradás érdekében.
Kiket érint:
Bármely csapat, amely nyilvános npm csomagokat telepít, ki van téve a biztonsági résnek. Ezenkívül a gyorsítótárazott npm vagy GitHub tokenekkel rendelkező fejlesztők is nagy kockázatnak vannak kitéve. A széles hatókörű titkokat használó CI-futtatók is sebezhetőek.
Üzleti kockázat
Az üzleti hatás gyorsan növekszik. Az ellopott tokenek fiókátvételhez, csomageltérítéshez és akár a felhővel való visszaéléshez is vezethetnek. Ezenkívül a GitHub munkafolyamatokban való megmaradás megnehezíti a tisztítást. Ezért...A csapatoknak a Shai-Hulud ügyet folyamatban lévő incidensként, nem pedig lezártként kell kezelniük.
Hogyan működik a Shai-Hulud ellátási lánc támadás az npm csomagokban
A támadó céljai és indítékai
A kampány három dologra optimalizál:
- Az első cél az, hogy nagymértékű hitelesítő adatok ellopása fejlesztői laptopokról és CI-futtatókról. Ez magában foglalja az npm közzétételi tokeneket, a GitHub tokeneket és a felhőalapú hitelesítő adatokat. Valójában több elemzés is megerősíti a szisztematikus titkos adatgyűjtést, például a TruffleHog futtatásával és a felhőbeli metaadat-végpontok lekérdezésével.
- A második cél az, hogy automatikusan terjed a feltört karbantartók publikálási jogainak visszaélésével. Ennek eredményeként egy megvetett lábbal a kezében lévő terület gyorsan sokasággá válik, mivel más csomagok új fertőzött verziói jelennek meg további emberi erőfeszítés nélkül.
- A harmadik célkitűzés az, hogy megbízhatóan megmaradnak és kiszűrődnek a GitHub infrastruktúrán keresztül. A támadók létrehoznak egy „Shai-Hulud” nevű nyilvános repót, dupla base64 értékkel. data.json, és ezen felül egy olyan munkafolyamatot is létrehoznak, amely szerializálja ${{ toJSON(titkok) }} és közzéteszi egy statikus webhookban.
A valószínűsíthető jutalom magában foglalja a nyilvántartásokhoz és a forráskódhoz való hosszú távú hozzáférést, a felhőfiókokba való gyors laterális áthelyezést, valamint az ellátási lánc további fegyverré tételének lehetőségét. A nyilvános jelentések szerint a privát repók nyilvánossá váltak egy „-migráció” utótag, ami növeli az adatkitettséget és a lendületet
A Shai-Hulud rakományon belül: köteg.js npm csomagokban
Shai-Hulud hajói olyanok, mint a nagy, Webpack-csomagba csomagolt és erősen minifikált JavaScript-fájl (köteg.js, körülbelül 3–3.7 MB) amely egyből végrehajtódik telepítés után beakasztani csomag.jsonKövetkezésképpen, Minden telepítés automatikusan elindítja a hasznos adatot. Ez a kialakítás elrejti az azonosítókat, tömöríti a vezérlési folyamatot, és az összes logikát egyetlen, a telepítés során végrehajtódó elemzőegységbe foglalja. Az elemzők következetesen megerősítik a Webpack csomagba foglalást, a szokatlan fájlméretet és a telepítési idejű végrehajtást.
A mintákban látható ködösítési és elemzésellenes tulajdonságok:
- Minifixált modulgráf numerikus modulazonosítókkal, ritka megjegyzésekkel és lapított vezérlési folyamattal. Továbbá, Ez a struktúra rendkívül megnehezíti a manuális ellenőrzést.
- Karakterlánc elrejtése base64 rétegeken és konstrukciós segédprogramokon keresztül. Például, Az ismétlődő base64 kódolás és dekódolás általában a kiszűrési rutinok körül jelenik meg.
- Dinamikus diszpécser keresztül evalstílusú mintákat és generált függvénytörzseket, lehetővé téve a kód számára, hogy futásidejű viselkedést váltson.
- OS szűrés előnyben részesíteni a Linux és macOS futtatását, különösen CI runnereken és fejlesztői laptopokon.
Funkcionális szempontból a csomag moduláris. A leírások modulokat írnak le az operációs rendszer felderítéséhez, a fájlrendszer és a git titkos kódjainak vizsgálatához, a felhőalapú SDK eléréséhez, a GitHub API műveletekhez, valamint egy olyan terjesztőmotorhoz, amely a karbantartó tulajdonában lévő egyéb csomagokat szerkeszti. Valójában a StepSecurity és a ReversingLabs is kiemel egy olyan függvényt, amely automatikusan frissíti a csomagokat a rosszindulatú hookkal.
Telepítési idejű végrehajtás Shai-Huludban: Hogyan indítják el az npm csomagok a férget
A támadás akkor kezdődik, amikor telepítés utáni futtatások csomópontja köteg.js. Ezen a ponton a szkript inicializálja és kicsomagolja a memóriában lévő működő állapotot, előkészítve a terepet a féreg teljes működéséhez.
Felfedezés és betakarítás
- A hasznos adat kiírja a process.env fájlt, és beolvassa a helyi fájlokat nagy entrópiájú titkok és token előtagok után. Ezenkívül a TruffleHog futtatásával kiterjeszti a lefedettséget.
- Lekérdezi a felhő metaadat-végpontjait a rövid életű hitelesítő adatok összegyűjtéséhez. Például, felhívja
169.254.169.254az AWS-en vagymetadata.google.internala GCP-n gyakran megjelennek a fertőzött gazdaszervezetekben. - Következésképpen, Bármely megtalált hitelesítő adat azonnal felhasználhatóvá válik új npm csomagok közzétételére vagy GitHub munkafolyamatok elindítására.
Kiszűrés
- A féreg létrehoz egy új GitHub repót, melynek neve Shai Hulud és egy dupla base64 kódolású kódot ír
data.jsonplatform részletekkel, környezeti dumpokkal és titkos információkkal. Amint látható, ez a zajos viselkedés könnyen észrevehető, ha a védők tudják, hol kell keresniük. - Emellett egy GitHub Actions munkafolyamatot is létrehoz, gyakran egy nevű ágon. shai-hulud, amely szerializál
${{ toJSON(secrets) }}és egy statikus webhookba teszi közzé az adatokat. Továbbá ez a munkafolyamat mindaddig megmarad, amíg valaki aktívan el nem távolítja azt.
Szaporítás
- Bármely felfedezett npm token esetén a hasznos adat felsorolja a feltört karbantartó tulajdonában lévő összes csomagot. Ezután lekéri az egyes tarballokat, befecskendezi a bundle.js-t és egy telepítés utáni bejegyzést, majd újra közzéteszi a csomagot.
- Ennek eredményeként órák alatt több tucat fertőzött csomag jelenhet meg, megsokszorozva a robbanás sugarát az ökoszisztémában.
Perzisztencia és expozíció
A féreg életben tartja a rosszindulatú munkafolyamatokat, és számos esetben a privát repókat nyilvánossá teszi egy „-migráció” utótag. Összességében ez biztosítja, hogy a támadó megtartsa a lábát, és maximalizálja az adatszivárgást.
Kulcsérzékelési megjegyzés
Ez a szokatlan felhasználás ${{ toJSON(secrets) }} Az Actions munkafolyamatokban ritka. Ezért a csapatoknak vadászatok során magas jelzésként kell kezelniük.
Fertőtlenített munkafolyamat-minta, amelyet érdemes keresni
Ez a szokatlan felhasználás nak nek JSON(titkok) Az „Actions” (Műveletek) ebben az esetben nagy jelzésértékű jelző.
Magas szintű terjedési pszeudokód (biztonságos, leíró)
Az elemzők nagymértékben figyelték meg ezt a hurkot, ami megmagyarázza a fertőzött csomagok számának gyors ugrását tucatjairól több százra.
Miért ez egy féreg egy csomag-ökoszisztémában?
A féreg egy olyan rosszindulatú program, amely minden szakaszban önállóan terjed, anélkül, hogy manuális felhasználói beavatkozást igényelne. Az operációs rendszerekben a férgek általában hálózati sebezhetőségeket kihasználva jutnak el egyik gépről a másikra. Ezzel szemben a Shai-Hulud az npm rendszerleíró adatbázisán belül működik. Hatékony útja a következőn keresztül vezet: hitelesítő adatok újrafelhasználása.
A féreg ellopott npm közzétételi tokeneket használ ki. Amint érvényes hitelesítő adatokat szerez, újra közzéteszi a fertőzött verziókat ugyanazon karbantartó más csomagjai alatt. Ezt követően ezeket a csomagokat gyanútlan fejlesztők vagy CI futtatók telepítik, és a ciklus megismétlődik.
Emiatt a biztonsági elemzők, beleértve Sötét olvasás, sorolja be Shai-Huludot a következő kategóriába: önmagát replikáló féreg nem pedig egy egyszerű trójairól vagy elgépelésről van szó. A különbség fontos: egy trójai jellemzően egy gazdaszervezetet károsít, míg egy féreg automatikusan felerősíti a hatását az egész ökoszisztémában.
„Hogyan működik” puskalap
Shai-Hulud életciklusának összefoglalására íme egy hátrányacisfőbb lépéseinek lebontása:
- Egy csomag, amiben telepítés után telepítve van, és
bundle.jsvégrehajt. - A hasznos adat kiírja a környezeti változókat, átvizsgálja a fájlokat és a git előzményeket, majd lefut. Szarvasgomba-disznó, és lekérdezi a felhő metaadat-szolgáltatásait. Következésképpen minden megtalált titkos adat azonnal hasznossá válik.
- A kiszűrés kétféleképpen történhet: először egy nyilvános adattár létrehozásával, amelynek neve Shai Hulud dupla base64 kódolású
data.json; másodszor, egy GitHub Actions munkafolyamat létrehozásával, amely közzéteszi${{ toJSON(secrets) }}egy webhooknak. - Bármely ellopott npm token felhasználásával a féreg újra közzéteszi a feltört karbantartó összes többi csomagját ugyanazzal a rosszindulatú hookkal. Ily módon a fertőzés gyorsan terjed.
- Végül a támadó több titokkal, több terjeszthető csomaggal rendelkezik, és kitartás GitHub-fiókokon és -tárházakon belül.
Hogyan lehet elkerülni ezt a támadási típust a gyakorlatban?
A Shai-Hulud egy ébresztő. Egy tokeneket ellopó és önmagát újra közzétevő féreg nem jövőbeli kockázatot jelent, hanem élőben van a világban. npm csomagok ökoszisztémája ma. Az ilyen típusú problémák megelőzése érdekében ellátási lánc támadása csapatoknak olyan vezérlőkre van szükségük, amelyek programozhatók, automatizálhatók és közvetlenül érvényesíthetők a CI/CD pipelines. Ezek ugyanazok a védelmi intézkedések, amelyeket már most is megvalósíthatsz a következővel: Xygeni.
Állítsd meg a rossz tárgyakat a kapunál
Az npm csomagokat és tarballokat be kell szkennelni, mielőtt azok elérnék a fejlesztőket vagy a CI-feladatokat. bundle.js fájlok, gyanús telepítés utáni hooks, és a ködösítési jelölők mind korai vészjelzésként szolgálnak. Továbbá, a türelmi időszakok és a rögzített verziók érvényesítése a pipelinemegakadályozza a friss, ellenőrizetlen kiadások automatikus felhasználását.
Megkeményedik CI/CD alapértelmezés szerint
Guardrails in CI/CD elengedhetetlenek. Elutasítják az új szkripteket vagy bináris fájlokat bevezető egyesítéseket vagy telepítéseket. Ugyanakkor blokkolják azokat a munkafolyamatokat, amelyek szerializálják a titkos kódokat, vagy külső posztokat próbálnak meg küldeni. A csapatoknak csak zárfájlos telepítéseket is meg kell követelniük (npm ci) mindenütt pipelineÍgy a függőséghalmazok reprodukálhatók és biztonságosak maradnak.
Csökkentse a token robbanási sugarát
A titkok nem válhatnak egyetlen hibaforrássá. Folyamatosan ellenőrizni kell a kódot, a konfigurációkat és a... pipeline kimenet számára nyilvánosságra hozott hitelesítő adatokA tokeneket szűken kell meghatározni, rövid élettartammal kell ellátni, és automatikusan le kell cserélni, ha kitettséget észlelnek. Általános szabály, hogy minden olyan tokent, amelyet egy gyanús utótelepítést végrehajtó gazdagépen használnak, feltörtként kell kezelni.
Lásd meg a férgek viselkedését korán
Anomáliák felderítése kulcsfontosságú. Például az npm közzétételi események hirtelen megugrása, az ok nélkül megjelenő új munkafolyamatok vagy a furcsa kódolású fájlokkal teli friss nyilvános adattárak mind féregaktivitásra utalhatnak. Ezért a csapatoknak gyorsan riasztásokat kell küldeniük, és el kell különíteniük azokat a karbantartókat vagy futtatókat, akik ezeket a figyelmeztető jeleket mutatják.
Gyors javítás az összeállítások megszakítása nélkül
A sebességnek és a biztonságnak együtt kell járnia. Automatizált pull requests a veszélyeztetett npm csomagokat ellenőrzött verziókkal helyettesítheti. Ezenkívül elérhetőség és a kihasználhatóság Az elemzés biztosítja, hogy a frissítések minimálisak és stabilak maradjanak. Végül, miután a fertőzés megerősítést nyert, tiszta képekből építsd újra az érintett CI-futtatókat, megakadályozva a támadás további terjedését.
Kompromisszumjelzők (IOC)
A Shai-Hulud elemzésekor a csapatoknak mindkettőre figyelniük kell statikus IoC-k fájlokban és viselkedési IoC-k in pipelineEzek a jelek együttesen segítenek a fertőzések korai felismerésében és a féreg további terjedése előtti reagálásban.
Statikus IoC-k
A következő SHA-256 kivonatok egyezése figyelhető meg bundle.js minták:
- 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
- 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
- dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c
Ezenkívül figyeljen ezekre az ismétlődő mintákra:
- A
bundle.jsa csomag gyökerénél. "postinstall": "node bundle.js"belsőpackage.json.- Elnevezett adattárak Shai Hulud.
- GitHub munkafolyamatok, amelyek tartalmazzák
${{ toJSON(secrets) }}.
Viselkedési IoC-k
A fájlszignatúrákon túl a férgek aktivitása viselkedésben is megmutatkozik. Például:
- Hirtelen npm közzétételi események sorozata egyetlen karbantartótól.
- Új munkafolyamatok, amelyek külső végpontokra küldik az adatokat.
- CI-futtatók által kiváltott kimenő POST-kérések.
- Nemrég létrehozott nyilvános adattárak kódolt blobokkal.
Gyors vadászatok
Konklúzió: Tanulságok Shai-Huludtól
Az Shai-Hulud ellátási lánc támadása Az npm csomagokban található adatok jól mutatják, mennyire törékennyé vált a mai szoftverellátási lánc. Ez a féreg többet tett, mint pusztán rosszindulatú kód hozzáadását. Tokeneket lopott, adatokat küldött ki, majd automatikusan újra közzétette magát. Emiatt a támadás órák, nem pedig hetek alatt terjedt el.
A fejlesztők és a DevOps csapatok számára a tanulságok egyértelműek:
- Minden telepítés kódot futtat. Még egy közönséges npm csomag is elrejthet egy telepítés utáni férget.
- Minden tokennek magas értéke van. Ellopás után felhasználható a rosszindulatú programok további terjesztésére.
- Minden pipeline szükségletellenőrzések. Nyugalomra guardrails A függőségek, munkafolyamatok és titkos kódok tekintetében egyetlen kompromisszum gyorsan sújthatja az éles környezetet.
Ezért a Shai-Huludhoz hasonló támadások megállításához automatikus és könnyen érvényesíthető ellenőrzésekre van szükség. A csapatoknak a telepítések előtt át kell vizsgálniuk az npm csomagokat, lockfile buildeket kell használniuk, furcsa közzétételi tevékenységeket kell észlelniük, és a tokeneket rövid életűnek kell tartaniuk. Ezek a lépések már nem opcionálisak. Ehelyett a modern rendszerek ellenálló képességének alapját képezik. pipelines.
A Xygeninél a Shai-Hulud ellátási lánc elleni támadást figyelmeztetésnek tekintjük a teljes nyílt forráskódú ökoszisztéma számára. A fenntartható előrelépés az, ha az ellátási lánc biztonságát közvetlenül beépítjük a fejlesztési folyamatba, azon a ponton, ahol a kód, az npm csomagok és... pipelines csatlakozni.
Az alábbiakban a Shai-Hulud által feltörtként jelentett npm csomagok és verziók teljes listája található. Használd a zárolási fájlok, beállításjegyzékek és konfigurációs interfész ellenőrzéséhez. pipelines az expozícióhoz.
A feltört csomagok listája
📦 Feltört npm csomagok előnézete
| Csomag neve | Változat | Megjelenési dátum |
|---|---|---|
| json-rules-engine-simplified | 0.2.1 | 2025-09-14T17:58:51.203Z |
| légi pilóta | 0.8.8 | 2025-09-14T18:35:07.600Z |
| mcp-tudásgráf | 1.2.1 | 2025-09-14T18:35:09.494Z |
| légiparancsnok | 0.3.1 | 2025-09-14T18:35:09.521Z |
| ugrókapu | 0.0.2 | 2025-09-14T18:35:09.651Z |
| tvi-cli | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/visszahívási-ablak | 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/demo | 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/érvényesítés | 0.1.6 | 2025-09-14T20:45:55.595Z |
| @hestjs/core | 0.2.1 | 2025-09-14T20:45:55.888Z |
➡️ Tekintse meg a feltört csomagok teljes listáját
| Csomag neve | Változat | Megjelenési dátum |
|---|---|---|
| json-rules-engine-simplified | 0.2.1 | 2025-09-14T17:58:51.203Z |
| légi pilóta | 0.8.8 | 2025-09-14T18:35:07.600Z |
| mcp-tudásgráf | 1.2.1 | 2025-09-14T18:35:09.494Z |
| légiparancsnok | 0.3.1 | 2025-09-14T18:35:09.521Z |
| ugrókapu | 0.0.2 | 2025-09-14T18:35:09.651Z |
| tvi-cli | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/visszahívási-ablak | 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/demo | 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/érvényesítés | 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/skalár | 0.1.7 | 2025-09-14T20:45:56.386Z |
| ng2-fájl-feltöltés | 7.0.3 | 2025-09-15T02:44:29.555Z |
| kondenzátor-értesítéskezelő | 0.0.2 | 2025-09-15T04:54:48.431Z |
| kondenzátor-plugin-vonage | 1.0.2 | 2025-09-15T04:54:48.501Z |
| kondenzátor-bővítmény-egészségügyi alkalmazás | 0.0.2 | 2025-09-15T04:54:48.704Z |
| capacitorandroidengedélyek | 0.0.4 | 2025-09-15T04:54:48.753Z |
| VoIP-híváskészlet | 1.0.2 | 2025-09-15T04:54:49.223Z |
| kondenzátor-plugin-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-szerver | 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 |




