Shai hulud - pakét npm - serangan ranté suplai

Shai-Hulud: Dijelaskeunana Cacing Paket npm

TL; DR

Dina tanggal 14 Séptémber 2025, para panalungtik ngaidéntifikasi Shai Hulud, cacing anu baranahan sorangan anu disumputkeun di jerona pakét npm, ngarobah apdet dependensi rutin jadi skala pinuh serangan ranté suplaiMimiti katingali di @ctrl/tinycolor pakét ku Daniel dos Santos Pereira, Shai-Hulud ngumpulkeun rusiah, ngaluarkeunana ngaliwatan repo sareng alur kerja GitHub, teras nyebarkeun deui dirina di sakumna pendaptaran nganggo kredensial anu dipaling. Dina sababaraha dinten, jumlah pakét anu kainféksi naék tina puluhan ka ratusan, mastikeun yén Shaihulud lain ngan saukur trojan tapi cacing anu dirancang pikeun nyebar sacara otomatis di sakuliah ékosistem npm.

dampak: sagala pamekar atanapi CI runner anu masang pakét npm umum aya dina résiko.

Tindakan langsung: meungpeuk vérsi anu dipikanyaho, pindah ka pamasangan lockfile-only, muterkeun token npm sareng GitHub, audit alur kerja, sareng monitor Indikator Kompromi (IoC).

Aya naon?

nu Serangan ranté suplai Shai-Hulud dina pakét npm mangrupikeun salah sahiji kajadian anu paling ngaganggu dina mémori anyar. Teu sapertos trojan anu terasing, cacing ieu nyampur maling kredensial, exfiltration otomatis, sareng réplikasi mandiriBalukarna, jangka waktu inféksi menyusut tina sababaraha minggu janten ngan ukur sababaraha jam.

Pikeun tim DevOps, palajaranana jelas: upami unggal pamasangan tiasa ngaéksekusi kode, maka unggal apdet katergantungan mangrupikeun titik palanggaran poténsial.

Kamungkinan Vektor Awal sareng Kredensial anu Ditargetkeun

Analisis awal nunjukkeun yén serangan éta kamungkinan dimimitian ku kredensial anu dicolongContona, kampanye phishing spoofing npm login atanapi prompt MFA tiasa waé parantos ngarebut token pamekar. Sakali panyerang kéngingkeun pijakan munggaran éta, cacing éta nyebar ku cara nyelapkeun dirina kana pakét npm sareng maok langkung seueur rahasia ti:

  • file konfigurasi npm siga .npmrc, sering ngandung token publikasi.
  • Variabel lingkungan sareng konfigurasi nganggo GitHub PATs sareng CI/CD rusiah.
  • Titik tungtung metadata awan (AWS, GCP, Azure) ngahasilkeun kredensial anu umurna pondok pikeun gerakan lateral.

Ku kituna, maling kredensial janten landasan peluncuran. Kalayan token npm anu valid sareng rahasia GitHub, Shai-Hulud tiasa ngagandakeun diri di sababaraha pakét sareng repositori tanpa usaha manusa tambahan.

Dampak Eksekutif tina Serangan Rantai Pasokan Shai-Hulud

Shai-Hulud masih aktip nepi ka ayeuna. Cacing ieu ngagancangkeun linimasa dampak. Anu baheula butuh sababaraha minggu ku trojan ayeuna bisa sumebar dina sababaraha jam. Hasilna, panyebaranna langkung gancang sareng langkung sesah dicegah. Éta maju ku:

  • Maok token penerbitan npm sareng rahasia GitHub.
  • Ngapublikasikeun deui dirina kana pakét npm anu sanés.
  • Nambahkeun alur kerja GitHub Actions anu jahat pikeun persistensi.

Saha anu kapangaruhan:

Tim mana waé anu masang pakét npm umum bakal kakeunaan. Leuwih ti éta, pamekar anu gaduh token npm atanapi GitHub anu disimpen dina cache nyanghareupan résiko anu luhur. Runner CI anu nganggo rahasia anu lega ogé rentan.

Résiko bisnis

Dampak bisnisna gancang pisan. Token anu dipaling tiasa nyababkeun akuisisi akun, pembajakan paket, sareng bahkan penyalahgunaan awan. Salian ti éta, kegigihan dina alur kerja GitHub ngajantenkeun langkung sesah dibersihkeun. Ku alatan éta,, tim kedah nganggap Shai-Hulud salaku kajadian anu lumangsung, sanés kajadian anu ditutup.

Kumaha Serangan Rantai Pasokan Shai-Hulud Gawéna dina Paket npm

Tujuan sareng motif panyerang

Kampanye ieu ngaoptimalkeun pikeun tilu hal:

  • Tujuan anu kahiji nyaéta pikeun maok kredensial dina skala ageung ti laptop pamekar sareng CI runners. Ieu kalebet token publikasi npm, token GitHub, sareng kredensial awan. Kanyataanna, sababaraha analisis mastikeun panén rahasia sistematis, sapertos ngajalankeun TruffleHog sareng naroskeun titik tungtung metadata awan.
  • Tujuan kadua nyaéta pikeun nyebarkeun sacara otomatis ku cara nyalahgunakeun hak penerbitan ti pangurus anu kaganggu. Hasilna, hiji tempat pijakan gancang ngalegaan ka seueur, kumargi vérsi anyar anu kainféksi tina pakét sanés muncul tanpa usaha manusa tambahan.
  • Tujuan katilu nyaéta pikeun tetep sareng tiasa kaluar tina filtrasi kalayan dipercaya ngaliwatan infrastruktur GitHub. Panyerang nyieun repo umum anu dingaranan "Shai-Hulud" kalayan basis ganda64 data.json, sareng salian ti éta aranjeunna melak alur kerja anu ngarundaykeun ${{ toJSON(rahasia) }} sareng ngirimkeunana ka webhook statis.

Kauntungan anu kamungkinan kalebet aksés anu lami kana pendaptaran sareng kode sumber, gerakan lateral anu gancang kana akun awan, sareng pilihan pikeun ngajantenkeun ranté suplai langkung jauh. Laporan umum nunjukkeun repo swasta dibalikkeun ka publik kalayan a "-migrasi" akhiran, anu ningkatkeun paparan data sareng momentum

Di jero Muatan Shai-Hulud: bundel.js dina Paket npm

Kapal Shai-Hulud salaku ageung, dibundel Webpack sareng diminimalkeun pisan File JavaScript (bundel.js, sakitar 3–3.7 MB) anu ngalaksanakeun tina hiji saatos dipasang ngaitkeun rangkep.json. Ku kituna, Unggal pamasangan bakal micu payload sacara otomatis. Desain ieu nyumputkeun idéntifikasi, ngomprés aliran kontrol, sareng ngadorong sadaya logika kana hiji artefak anu dijalankeun nalika pamasangan. Analis sacara konsisten mastikeun bundling Webpack, ukuran file anu teu biasa, sareng palaksanaan waktos pamasangan.

Sipat-sipat obfuskasi sareng anti-analisis anu anjeun bakal tingali dina conto:

  • Grafik modul anu diminify kalayan ID modul numerik, komentar anu jarang, sareng aliran kontrol anu rata. Sumawona, struktur ieu ngajantenkeun tinjauan manual hésé pisan.
  • Nyumputkeun tali via lapisan base64 sareng asisten konstruksi. Salaku conto, Encoding sareng decoding base64 anu diulang-ulang biasana muncul di sakitar rutinitas exfiltration.
  • Pangiriman dinamis ngaliwatan ngabuktikeunpola gaya sareng awak fungsi anu dihasilkeun, ku kituna ngamungkinkeun kode pikeun ngarobih paripolah nalika runtime.
  • Panyaringan OS leuwih resep kana palaksanaan Linux sareng macOS khususna dina CI runners sareng laptop pamekar.

Tina sudut pandang fungsional, ieu bungkusan téh modular. Tulisan ngajelaskeun modul pikeun panemuan OS, scan rahasia sistem file sareng git, aksés SDK awan, operasi API GitHub, sareng mesin propagasi anu ngédit pakét sanés anu dipiboga ku pangurus. Kanyataanna, StepSecurity sareng ReversingLabs duanana nyorot fungsi anu sacara otomatis ngapdet pakét nganggo hook jahat.

Eksekusi Waktu Instalasi dina Shai-Hulud: Kumaha Paket npm Micu Worm

Serangan dimimitian nalika saatos pamasangan ngajalankeun node bundel.js. Dina tahap ieu, skrip bakal ngainisialisasi sareng ngabongkar kaayaan kerja dina mémori, nyetél panggung pikeun operasi pinuh cacing.

Kapanggihna sareng panén

  • Payload dumps ngolah .env sareng nyeken file lokal pikeun rusiah entropi tinggi sareng awalan token. Salian ti éta, éta ngalegaan jangkauan ku ngajalankeun TruffleHog.
  • Éta ngarékoméndasi titik tungtung metadata awan pikeun ngumpulkeun kredensial anu umurna pondok. Contona, nelepon ka 169.254.169.254 dina AWS atanapi metadata.google.internal dina GCP sering muncul dina host anu kainféksi.
  • akibatna, Sagala kredensial anu kapanggih bakal langsung tiasa dianggo pikeun nyebarkeun pakét npm énggal atanapi ngadorong alur kerja GitHub.

Exfiltration

  • Cacing éta nyieun repo GitHub anyar nu dingaranan Shai Hulud sareng nyerat kode ganda anu dikodekeun ku base64 data.json kalayan detil platform, tempat pembuangan lingkungan, sareng rahasia. Sakumaha anu tiasa katingali, paripolah ribut ieu gampang dititénan upami para pembela terang ka mana kedah milarian.
  • Éta ogé melak alur kerja GitHub Actions, seringna dina cabang anu dingaranan shai-hulud, anu ngarundaykeun ${{ toJSON(secrets) }} sareng ngirim data ka webhook statis. Salajengna, alur kerja ieu bakal terus lumangsung dugi ka aya anu sacara aktif ngahapusna.

Panyebaran

  • Kalayan token npm anu kapanggih, payload bakal ngadaptar sadaya pakét anu dipiboga ku maintainer anu dikompromikeun. Teras, éta bakal ngajemput unggal tarball, nyuntikkeun bundle.js sareng éntri pasca-instalasi, teras nyebarkeun deui pakét éta.
  • Hasilna, puluhan paket anu kainféksi tiasa muncul dina sababaraha jam, ngalikeun radius ledakan di sakumna ékosistem.

Persistensi sareng paparan

  • Cacing éta ngajaga alur kerja jahat tetep hirup sareng, dina sababaraha kasus, ngabalikeun repo pribadi ka publik ku cara "-migrasi" akhiran. Sacara gembleng, ieu mastikeun panyerang ngajaga pijakan sareng ngamaksimalkeun bocor data.

Catetan deteksi konci
Panggunaan anu teu biasa ieu ${{ toJSON(secrets) }} Alur kerja dina Tindakan jarang kajadian. Ku alatan éta, tim kedah nganggap éta salaku indikator sinyal anu luhur nalika moro.

Pola alur kerja anu dibersihkeun anu anjeun kedah pilari

Panggunaan anu teu biasa ieu ka JSON(rahasia) dina Tindakan mangrupikeun indikator sinyal anu luhur dina kajadian ieu.

Pseudo-kode propagasi tingkat luhur (aman, deskriptif)

Para analis niténan puteran ieu dina skala ageung, anu ngajelaskeun lonjakan gancang tina puluhan ka ratusan pakét anu kainféksi.

Naha ieu téh cacing dina ékosistem pakét

Cacing nyaéta malware anu nyebar sorangan tanpa meryogikeun léngkah operator manual dina unggal tahapan. Dina sistem operasi, cacing biasana ngamangpaatkeun kerentanan jaringan pikeun pindah ti hiji mesin ka mesin anu sanés. Sabalikna, Shai-Hulud beroperasi di jero pendaptaran npm. Jalur anu efisien nyaéta ngaliwatan panggunaan deui kredensial.

Cacing éta ngamangpaatkeun token npm publish anu dipaling. Pas meunangkeun kredensial anu valid, éta bakal medalkeun deui vérsi anu kainféksi dina pakét séjén anu dipiboga ku pangurus anu sami. Salajengna, pakét-pakét éta dipasang ku pamekar atanapi CI runner anu teu curiga, sareng siklusna diulang deui.

Ku sabab kitu, analis kaamanan, kalebet Maca poék, ngagolongkeun Shai-Hulud salaku cacing anu baranahan sorangan tinimbang trojan basajan atanapi kajadian typosquatting. Bédana penting: trojan biasana ngaruksak hiji host, tapi cacing nguatkeun dampakna sacara otomatis di sakumna ékosistem.

Lembar contekan "Kumaha jalanna"

Pikeun ngaringkes siklus hirup Shai-Hulud, ieu aya hiji kakurangancise. Rincian léngkah-léngkah utama na:

  • Pakét sareng saatos dipasang dipasang, sareng bundle.js ngalaksanakeun.
  • Payload miceun variabel lingkungan, nyeken file sareng riwayat git, ngajalankeun TruffleHog, sareng naroskeun jasa metadata awan. Hasilna, sagala rusiah anu kapendak bakal langsung aya mangpaatna.
  • Éfiltrasi lumangsung dina dua cara: kahiji, ku cara nyieun repo publik anu dingaranan Shai Hulud kalayan kodeu base64 ganda data.json; kadua, ku cara melak alur kerja GitHub Actions anu ngirimkeun ${{ toJSON(secrets) }} ka webhook.
  • Ngagunakeun token npm anu dipaling, cacing éta nyebarkeun deui sadaya pakét sanés anu dipiboga ku pangurus anu dikompromikeun nganggo hook jahat anu sami. Ku cara kieu, inféksi gancang baranahan.
  • Pamustunganana, panyerang nyimpen langkung seueur rusiah, langkung seueur pakét pikeun disebarkeun, sareng katekunan di jero akun sareng gudang GitHub.

Kumaha carana nyingkahan serangan kelas ieu, sacara praktis

Shai-Hulud nyaéta panggero hudang. Cacing anu maok token sareng nyebarkeun deui dirina sanés résiko ka hareup, éta hirup di ékosistem pakét npm ayeuna. Pikeun nyegah jinis ieu serangan ranté suplai, tim peryogi kontrol anu tiasa diprogram, otomatis, sareng diterapkeun langsung dina CI/CD pipelines. Ieu mangrupikeun pertahanan anu sami anu anjeun tiasa laksanakeun Xygeni.

Eureunkeun artefak goréng di gerbang

Anjeun kedah nyeken pakét npm sareng tarball sateuacan dugi ka padamelan pamekar atanapi CI. Ukuran ageung bundle.js file, pasca-instalasi anu curiga hooks, sareng pananda obfuscation sadayana janten tanda bahaya awal. Leuwih ti éta, ngalaksanakeun période cool-off sareng vérsi anu disematkeun dina pipelines nyegah sékrési seger anu teu acan dipariksa supaya teu dikonsumsi sacara otomatis.

nyieunkeun dadi teuas CI/CD sacara standar

Guardrails in CI/CD penting pisan. Aranjeunna nolak ngahijikeun atanapi masang anu ngenalkeun skrip atanapi binér énggal. Dina waktos anu sami, aranjeunna meungpeuk alur kerja anu ngaserialisasi rahasia atanapi nyobian postingan éksternal. Tim ogé kedah meryogikeun pamasangan anu ngan ukur file konci (npm ci) di sakumna pipelines supados sét katergantungan tetep tiasa diulang sareng aman.

Ngurangan radius ledakan token

Rahasia teu kedah janten hiji-hijina titik kagagalan. Terus-terusan scan kode, konfigurasi, sareng pipeline kaluaran pikeun kredensial anu kakeunaanToken kedah diwatesanan sacara saksama, dibéré umur anu pondok, sareng diputer sacara otomatis nalika paparan dideteksi. Salaku aturan, anggap token naon waé anu dianggo dina host anu ngalaksanakeun pasca-instalasi anu curiga salaku anu dibobol.

Tingali paripolah cacing ti mimiti

Deteksi anomali konci na. Contona, lonjakan dadakan dina acara penerbitan npm, alur kerja anyar anu muncul tanpa alesan, atanapi repo umum anyar anu dieusi ku file anu dikodekeun anéh sadayana tiasa nunjukkeun aktivitas cacing. Ku alatan éta, tim kedah gancang-gancang ningkatkeun bewara sareng ngasingkeun saha waé anu ngajaga atanapi ngajalankeun anu nunjukkeun tanda-tanda peringatan ieu.

Perbaikan gancang tanpa ngaruksak wangunan

Kagancangan sareng kaamanan kedah babarengan. Otomatis pull requests tiasa ngagentos pakét npm anu dikompromikeun ku vérsi anu parantos dipariksa. Salian ti éta, jangkauan jeung kamampuh pikeun dieksploitasi Analisis mastikeun pamutahiran tetep minimal sareng stabil. Pamungkas, ngawangun deui pelari CI anu kapangaruhan tina gambar anu bersih saatos paparan dikonfirmasi, nyegah serangan nyebar langkung jauh.

Indikator Kompromi (IoC)

Nalika nganalisis Shai-Hulud, tim kedah merhatikeun duanana IoC statik dina file sareng IoC paripolah in pipelines. Babarengan, sinyal-sinyal ieu ngabantosan ngadeteksi inféksi langkung awal sareng ngaréspon sateuacan cacing nyebar langkung jauh.

IoC Statis

Intisari SHA-256 ieu cocog anu dititénan bundle.js conto:

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

Salian ti éta, perhatikeun pola-pola anu sering muncul ieu:

  • A bundle.js dina akar pakét.
  • "postinstall": "node bundle.js" di jero package.json.
  • Repositori anu dingaranan Shai Hulud.
  • Alur kerja GitHub anu ngandung ${{ toJSON(secrets) }}.

IoC Paripolah

Salian ti tanda tangan file, aktivitas cacing ngungkabkeun dirina ngaliwatan paripolah. Contona:

  • Ledakan dadakan tina acara npm nyebarkeun ti hiji maintainer.
  • Alur kerja anyar anu ngadorong data ka titik tungtung éksternal.
  • Pamundut POST kaluar dipicu ti CI runners.
  • Repo umum anu nembe didamel nganggo blob anu dikodekeun.

Moro gancang

Kacindekan: Palajaran ti Shai-Hulud

nu Serangan ranté suplai Shai-Hulud Dina pakét npm nunjukkeun kumaha rapuhna ranté suplai parangkat lunak ayeuna. Cacing ieu ngalakukeun langkung ti ngan saukur nambihan kode jahat. Éta maok token, ngirim data, teras nyebarkeun deui dirina sacara otomatis. Kusabab ieu, serangan nyebar dina sababaraha jam tinimbang minggu.

Pikeun pamekar sareng tim DevOps, palajaranana jelas:

  • Unggal pamasangan ngajalankeun kode. Malahan pakét npm umum tiasa nyumputkeun cacing pasca-instalasi.
  • Unggal token mibanda nilai anu luhur. Sakali dipaling, éta tiasa dianggo pikeun nyebarkeun malware langkung jauh.
  • unggal pipeline peryogi cek. tanpa guardrails ngeunaan katergantungan, alur kerja, sareng rahasia, hiji kompromi tiasa gancang mangaruhan produksi.

Ku kituna, ngeureunkeun serangan sapertos Shai-Hulud meryogikeun kontrol anu otomatis sareng gampang diterapkeun. Tim kedah nyeken pakét npm sateuacan dipasang, nganggo ngawangun lockfile, ngadeteksi kagiatan penerbitan anu anéh, sareng ngajaga token tetep pondok umurna. Léngkah-léngkah ieu henteu deui opsional. Sabalikna, éta mangrupikeun pondasi résiliénsi dina modéren. pipelines.

Di Xygeni, urang ningali serangan ranté suplai Shai-Hulud salaku peringatan pikeun sakumna ékosistem sumber terbuka. Cara anu lestari ka hareup nyaéta mawa kaamanan ranté suplai langsung kana prosés pamekaran, dina titik dimana kode, pakét npm, sareng pipelinenyambung s.

Di handap ieu daptar lengkep pakét npm sareng vérsi anu dilaporkeun parantos dikompromikeun dina Shai-Hulud. Anggo éta pikeun mariksa file konci, pendaptaran, sareng CI anjeun. pipelines pikeun paparan.

Daptar pakét anu kaganggu

📦 Pratinjau Paket npm anu Dikompromikeun

Ngaran Paket Vérsi nyebarkeun Tanggal
mesin-aturan-json-disederhanakeun0.2.12025-09-14T17:58:51.203Z
pilot udara0.8.82025-09-14T18:35:07.600Z
grafik-pangaweruh-mcp1.2.12025-09-14T18:35:09.494Z
panglima udara0.3.12025-09-14T18:35:09.521Z
panto luncat0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/callback-window1.1.42025-09-14T20:31:38.479Z
@tnf-dev/api1.0.82025-09-14T20:31:39.547Z
@tnf-dev/js1.0.82025-09-14T20:31:41.251Z
@tnf-dev/mui1.0.82025-09-14T20:31:41.259Z
@tnf-dev/inti1.0.82025-09-14T20:31:42.728Z
@teselagen/méja-réaksi6.10.202025-09-14T20:37:08.597Z
@hestjs/démo0.1.22025-09-14T20:45:52.348Z
@nexe/eslint-config0.1.12025-09-14T20:45:53.625Z
@hestjs/eslint-config0.1.22025-09-14T20:45:55.044Z
@nexe/manajer-config0.1.12025-09-14T20:45:55.066Z
@nexe/logger0.1.32025-09-14T20:45:55.170Z
@hestjs/logger0.1.62025-09-14T20:45:55.197Z
@hestjs/validasi0.1.62025-09-14T20:45:55.595Z
@hestjs/inti0.2.12025-09-14T20:45:55.888Z
➡️ Tingali Daptar Lengkep Paket Anu Dikompromikeun
Ngaran Paket Vérsi nyebarkeun Tanggal
mesin-aturan-json-disederhanakeun0.2.12025-09-14T17:58:51.203Z
pilot udara0.8.82025-09-14T18:35:07.600Z
grafik-pangaweruh-mcp1.2.12025-09-14T18:35:09.494Z
panglima udara0.3.12025-09-14T18:35:09.521Z
panto luncat0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/callback-window1.1.42025-09-14T20:31:38.479Z
@tnf-dev/api1.0.82025-09-14T20:31:39.547Z
@tnf-dev/js1.0.82025-09-14T20:31:41.251Z
@tnf-dev/mui1.0.82025-09-14T20:31:41.259Z
@tnf-dev/inti1.0.82025-09-14T20:31:42.728Z
@teselagen/méja-réaksi6.10.202025-09-14T20:37:08.597Z
@hestjs/démo0.1.22025-09-14T20:45:52.348Z
@nexe/eslint-config0.1.12025-09-14T20:45:53.625Z
@hestjs/eslint-config0.1.22025-09-14T20:45:55.044Z
@nexe/manajer-config0.1.12025-09-14T20:45:55.066Z
@nexe/logger0.1.32025-09-14T20:45:55.170Z
@hestjs/logger0.1.62025-09-14T20:45:55.197Z
@hestjs/validasi0.1.62025-09-14T20:45:55.595Z
@hestjs/inti0.2.12025-09-14T20:45:55.888Z
@hestjs/cqrs0.1.62025-09-14T20:45:55.966Z
@hestjs/skalar0.1.72025-09-14T20:45:56.386Z
unggah-file-ng27.0.32025-09-15T02:44:29.555Z
pangendali bewara kapasitor0.0.22025-09-15T04:54:48.431Z
kapasitor-plugin-vonage1.0.22025-09-15T04:54:48.501Z
kapasitor-plugin-healthapp0.0.22025-09-15T04:54:48.704Z
kapasitorandroidpermissions0.0.42025-09-15T04:54:48.753Z
voip-callkit1.0.22025-09-15T04:54:49.223Z
kapasitor-plugin-ihealth1.1.82025-09-15T04:55:08.113Z
@art-ws/umum2.0.222025-09-15T05:21:15.411Z
@art-ws/config-eslint2.0.42025-09-15T05:21:17.199Z
ngx-ws1.1.52025-09-15T05:21:17.514Z
@art-ws/slf2.0.152025-09-15T05:21:17.524Z
@art-ws/http-server2.0.212025-09-15T05:21:17.745Z
pm2-gelf-json1.0.42025-09-15T05:21:18.413Z
@art-ws/di2.0.282025-09-15T05:21:18.488Z
@art-ws/di-node2.0.132025-09-15T05:21:18.849Z
@art-ws/config-ts2.0.72025-09-15T05:21:19.408Z
@art-ws/db-context2.0.212025-09-15T05:21:19.814Z
@art-ws/openapi0.1.92025-09-15T05:21:19.969Z
@art-ws/aplikasi-wéb1.0.32025-09-15T05:21:20.383Z
@art-ws/ssl-info1.0.92025-09-15T05:21:20.927Z
alat-alat-sca-parangkat lunak-analisis-komposisi
Prioritaskeun, remediasi, sareng amankeun résiko parangkat lunak anjeun
Kéngingkeun Akun Gratis anjeun.
Henteu kedah kartu kiridit.

Amankeun Pangwangunan sareng Pangiriman Parangkat Lunak Anjeun

sareng Xygeni Product Suite