שי חולוד - חבילות npm - מתקפת שרשרת אספקה

שי-חולוד: הסבר על תולעת חבילות ה-npm

TL; DR

ב-14 בספטמבר 2025, חוקרים זיהו שי חולוד, תולעת שמתרבה מעצמה, חבויה בפנים חבילות npm, מה שהופך עדכון תלות שגרתי לעדכון בקנה מידה מלא התקפת שרשרת האספקהנצפה לראשונה ב- @ctrl/tinycolor חבילה מאת דניאל דוס סנטוס פריירה, שי-חולוד אוספת סודות, מוציאה אותם דרך מאגרי מידע וזרימות עבודה של GitHub, ומפרסמת את עצמה מחדש ברחבי הרישום באמצעות אישורים גנובים. תוך ימים, מספר החבילות הנגועות זינק מעשרות למאות, מה שמאשר זאת שיהולוד הוא לא סתם עוד סוס טרויאני, אלא תולעת שנועדה להתפשט אוטומטית ברחבי המערכת האקולוגית של npm.

השפעה: כל מפתח או רץ CI שמתקין חבילות npm ציבוריות נמצא בסיכון.

פעולות מיידיות: חסימת גרסאות ידועות, מעבר להתקנות lockfile בלבד, סבוב של אסימוני npm ו-GitHub, ביקורת על זרימות עבודה ומעקב אחר אינדיקטורים לפשרה (IoCs).

מה יקרה?

השמיים מתקפת שרשרת האספקה ​​של שי-חולוד בחבילות npm הוא אחד האירועים המפריעים ביותר בזיכרון האחרון. בניגוד לסוסים טרויאניים בודדים, תולעת זו מתערבבת גניבת אישורים, חדירה אוטומטית ושכפול עצמיכתוצאה מכך, ציר הזמן של ההדבקה הצטמצם משבועות לשעות בלבד.

עבור צוותי DevOps, הלקח ברור: אם כל התקנה יכולה לבצע קוד, אז כל עדכון תלות הוא נקודת פרצה פוטנציאלית.

וקטור ראשוני אפשרי ואישורים ממוקדים

ניתוח מוקדם מצביע על כך שההתקפה ככל הנראה החלה עם אישורים גנוביםלדוגמה, קמפיינים של פישינג המזייפים npm login או שהודעות MFA אולי לכדו טוקנים של מפתחים. ברגע שהתוקפים השיגו את דריסת הרגל הראשונה, התולעת התפשטה על ידי הטמעה של עצמה בחבילות npm וגניבת סודות נוספים מ:

  • קבצי תצורה של npm כמו .npmrc, המכיל לעתים קרובות אסימוני פרסום.
  • משתני סביבה ותצורות עם PATs של GitHub ו- CI/CD סודות.
  • נקודות קצה של מטא-דאטה בענן (AWS, GCP, Azure) המניבים אישורים קצרי מועד לתנועה רוחבית.

לכן, גניבת אישורים הפכה לנקודת ההתחלה. בעזרת טוקנים npm תקפים וסודות GitHub, שי-חולוד יכלה לשכפל את עצמה על פני מספר חבילות ומאגרים ללא מאמץ אנושי נוסף.

ההשפעה הניהולית של מתקפת שרשרת האספקה ​​של שי-חולוד

שי-חולוד עדיין פעילה כיום. תולעת זו מאיצה את ציר הזמן של הפגיעה. מה שלקח פעם שבועות עם טרויאני מתפתח כעת תוך שעות. כתוצאה מכך, ההתפשטות מהירה וקשה יותר להכלה. זה מתקדם על ידי:

  • גניבת אסימוני פרסום של npm וסודות GitHub.
  • פרסום מחדש של עצמו בחבילות npm אחרות.
  • הוספת זרימות עבודה זדוניות של GitHub Actions לצורך שמירה על זמינות.

מי מושפע:

כל צוות שמתקין חבילות npm ציבוריות חשוף. יתר על כן, מפתחים עם טוקנים של npm או GitHub במטמון עומדים בפני סיכון גבוה. רצים של CI המשתמשים בסודות רחבי היקף גם הם פגיעים.

סיכון עסקי

ההשפעה העסקית גדלה במהירות. טוקנים גנובים עלולים להוביל להשתלטות על חשבונות, חטיפת חבילות ואפילו שימוש לרעה בענן. בנוסף, התמדה בזרימות עבודה של GitHub מקשה על ניקוי. לכן, על הקבוצות להתייחס לשי-חולוד כאל אירוע מתמשך, לא כאירוע סגור.

כיצד פועלת מתקפת שרשרת האספקה ​​של שי-חולוד בחבילות npm

מטרות ומניע של התוקף

הקמפיין מותאם לשלושה דברים:

  • המטרה הראשונה היא ל גניבת אישורים בקנה מידה גדול ממחשבים ניידים של מפתחים ומ-CI runners. זה כולל אסימוני פרסום של npm, אסימוני GitHub ותעודות ענן. למעשה, ניתוחים מרובים מאשרים קצירת סודות שיטתית, כגון הרצת TruffleHog ושאילתות על נקודות קצה של מטא-דאטה בענן.
  • המטרה השנייה היא ל התפשטות אוטומטית על ידי ניצול לרעה של זכויות הפרסום של מתחזקים שנפגעו. כתוצאה מכך, דריסת רגל אחת מתרחבת במהירות להרבה, מכיוון שגרסאות נגועות חדשות של חבילות אחרות מופיעות ללא מאמץ אנושי נוסף.
  • המטרה השלישית היא ל להתמיד ולחלץ בצורה אמינה דרך תשתית GitHub. תוקפים יוצרים מאגר ציבורי בשם "שי-חולוד" עם בסיס כפול64 data.json, ובנוסף הם שותלים תהליך עבודה שמסדיר סדרות ${{ toJSON(סודות) }} ושולח אותו ל-webhook סטטי.

התמורה הצפויה כוללת גישה ארוכת טווח לרישומים ולקוד מקור, מעבר רוחבי מהיר לחשבונות ענן, ואפשרות להפוך את שרשרת האספקה ​​לנשק נוספת. דיווחים פומביים מראים כי מאגרים פרטיים הועברו לציבור עם... "-הֲגִירָה" סיומת, אשר מגבירה את חשיפת הנתונים ואת המומנטום

בתוך מטען שי-חולוד: bundle.js בחבילות npm

שי-חולוד שולחת כ גדול, כלול ב-Webpack וממוזער מאוד קובץ ג'אווהסקריפט (bundle.js, בערך 3–3.7 מגה-בייט) שמבוצע מ- לאחר ההתקנה וו ב package.jsonכתוצאה מכך, כל התקנה מפעילה את המטען באופן אוטומטי. עיצוב זה מסתיר מזהים, דוחס את זרימת הבקרה ודוחף את כל הלוגיקה לארטיפקט יחיד שמופעל במהלך ההתקנה. אנליסטים מאשרים באופן עקבי חבילות של Webpack, גודל קובץ חריג וביצוע בזמן ההתקנה.

תכונות של ערפול ואנטי-אנליזה שתראו בדגימות:

  • גרף מודולים ממוזער עם מספרי זיהוי מודולים מספריים, הערות דלילות וזרימת בקרה שטוחה יותר., מבנה זה מקשה ביותר על סקירה ידנית.
  • הסתרת מחרוזות באמצעות שכבות base64 ועוזרי בנייה. לדוגמה, קידוד ופענוח חוזרים של base64 מופיעים בדרך כלל סביב שגרות חילוץ.
  • שיגור דינמי דרך הערכהתבניות -style ויצרו גופי פונקציה, ובכך מאפשרים לקוד לשנות התנהגות בזמן ריצה.
  • סינון מערכת הפעלה להעדיף ביצועי לינוקס ו-macOS, במיוחד על רצים של CI ומחשבים ניידים של מפתחים.

מנקודת מבט פונקציונלית, החבילה היא מודולרית. רשימות מתארות מודולים לגילוי מערכת הפעלה, סריקות של מערכת קבצים וסודות git, גישה ל-SDK בענן, פעולות API של GitHub ומנוע הפצה שעורך חבילות אחרות שבבעלות המתחזק. למעשה, StepSecurity ו-ReversingLabs שניהם מדגישים פונקציה שמעדכנת אוטומטית חבילות עם ה-hook הזדוני.

ביצוע בזמן התקנה בשי-חולוד: כיצד חבילות npm מפעילות את התולעת

ההתקפה מתחילה כאשר לאחר ההתקנה מפעילה את הצומת bundle.js. בנקודה זו, הסקריפט מאתחל ומפרק את מצב העבודה בזיכרון, מה שמכין את הבמה לפעולה מלאה של התולעת.

גילוי וקציר

  • המטען מבצע dumping של process.env וסורק קבצים מקומיים אחר סודות בעלי אנטרופיה גבוהה וקידומות טוקנים. בנוסף, הוא מרחיב את הכיסוי על ידי הפעלת TruffleHog.
  • הוא שואל נקודות קצה של מטא-דאטה בענן כדי לאסוף אישורים קצרי מועד. לדוגמה, קורא ל 169.254.169.254 ב-AWS או metadata.google.internal ב-GCP מופיעים לעיתים קרובות במארחים נגועים.
  • כתוצאה מכך, כל אישור שנמצא הופך לשימוש מיידי לפרסום חבילות npm חדשות או לדחיפת זרימות עבודה של GitHub.

exfiltration

  • התולעת יוצרת מאגר GitHub חדש בשם שי חולוד וכותב קידוד כפול של base64 data.json עם פרטי פלטפורמה, קבצי סביבה וסודות. כפי שניתן לראות, קל לזהות את ההתנהגות הרועשת הזו אם המגנים יודעים היכן לחפש.
  • זה גם שותל זרימת עבודה של GitHub Actions, לעתים קרובות על ענף בשם שי-חולוד, שמסדי את הסדרה ${{ toJSON(secrets) }} ושולח את הנתונים ל-webhook סטטי. יתר על כן, תהליך עבודה זה נמשך עד שמישהו מסיר אותו באופן פעיל.

רביה

  • עם כל אסימון npm שהתגלה, המטען מונה את כל החבילות שבבעלות המתחזק שנפגע. לאחר מכן, הוא מאחזר כל קובץ tarball, מזריק bundle.js וערך postinstall, ומפרסם מחדש את החבילה.
  • כתוצאה מכך, עשרות חבילות נגועות יכולות להופיע תוך שעות ספורות, מה שמכפיל את רדיוס הפיצוץ ברחבי המערכת האקולוגית.

התמדה וחשיפה

  • התולעת שומרת על זרימות עבודה זדוניות בחיים, ובמקרים מסוימים, הופכת מאגרים פרטיים לציבוריים בעזרת "-הֲגִירָה" סיומת. בסך הכל, זה מבטיח שהתוקף ישמור על דריסת רגל וממקסם את דליפת הנתונים.

הערה לזיהוי מפתחות
שימוש יוצא דופן זה של ${{ toJSON(secrets) }} זרימות עבודה בפעולות הן נדירות. לכן, צוותים צריכים להתייחס לזה כאל אינדיקטור איתות גבוה במהלך ציד.

דפוס זרימת עבודה מחוטא שכדאי לחפש

שימוש יוצא דופן זה של ל JSON (סודות) "in Actions" הוא אינדיקטור איתות גבוה בתקרית זו.

פסאודו-קוד להפצה ברמה גבוהה (בטוח, תיאורי)

אנליסטים צפו בלולאה הזו בקנה מידה גדול, מה שמסביר את הקפיצה המהירה מעשרות למאות חבילות נגועות.

למה זו תולעת במערכת אקולוגית של חבילות

תולעת היא תוכנה זדונית שמתפשטת מעצמה מבלי לדרוש צעדים ידניים של המפעיל בכל שלב. במערכות הפעלה, תולעים בדרך כלל מנצלות פגיעויות רשת כדי לעבור ממכונה אחת לאחרת. לעומת זאת, שי-חולוד פועלת בתוך הרישום של npm. דרכה היעילה היא דרך שימוש חוזר בתעודה.

התולעת מנצלת אסימוני פרסום גנובים של npm. ברגע שהיא משיגה אישורים תקפים, היא מפרסמת מחדש גרסאות נגועות תחת חבילות אחרות בבעלות אותו מתחזק. לאחר מכן, חבילות אלו מותקנות על ידי מפתחים תמימים או רצים של CI, והמחזור חוזר על עצמו.

מסיבה זו, אנליסטים ביטחוניים, כולל קריאה אפלה, מסווג את שי-חולוד כ תולעת משכפלת את עצמה במקום טרויאני פשוט או תקרית של טיפוסקוואטינג. ההבדל חשוב: טרויאני בדרך כלל פוגע במארח אחד, אך תולעת מגבירה את השפעתו באופן אוטומטי על פני מערכת אקולוגית.

דף מידע על "איך זה עובד"

לסיכום מחזור החיים של שי-חולוד, הנה חיסרוןcisפירוט שלביו העיקריים:

  • חבילה עם לאחר ההתקנה מותקן, ו bundle.js מבצע.
  • המטען משליך משתני סביבה, סורק קבצים והיסטוריית git, ומריץ טראפל הוג, ומבצע שאילתות בשירותי מטא-נתונים בענן. כתוצאה מכך, כל סוד שנמצא הופך לשימושי באופן מיידי.
  • חילוץ מתרחש בשתי דרכים: ראשית, על ידי יצירת מאגר ציבורי בשם שי חולוד עם קידוד כפול של base64 data.jsonשנית, על ידי שתילת זרימת עבודה של GitHub Actions שמפרסמת ${{ toJSON(secrets) }} ל-webhook.
  • באמצעות כל אסימון npm גנוב, התולעת מפרסמת מחדש את כל החבילות האחרות שבבעלות המתחזק שנפגע באמצעות אותו הוק זדוני. בדרך זו, הזיהום מתרבה במהירות.
  • לבסוף, התוקף מחזיק ביותר סודות, יותר חבילות להפיץ דרכן, ו התמדה בתוך חשבונות ומאגרים של GitHub.

כיצד להימנע מהתקפות מסוג זה, באופן מעשי

שי-חולוד הוא קריאת השכמה. תולעת שגונבת אסימונים ומפרסמת מחדש את עצמה אינה סיכון עתידי, היא חיה ב... מערכת אקולוגית של חבילות npm היום. כדי למנוע סוג זה של התקפת שרשרת האספקהצוותים זקוקים לבקרות הניתנות לתכנות, אוטומטיות ונאכפות ישירות ב CI/CD pipelineאלו אותן הגנות שכבר ניתן ליישם איתן קסיגני.

עצרו חפצים רעים בשער

עליך לסרוק חבילות npm וקובצי tarball לפני שהם מגיעים למפתחים או לעבודות CI. bundle.js קבצים, פוסט-התקנה חשודה hooksוסמני ערפול משמשים כדגלים אדומים מוקדמים. יתר על כן, אכיפת תקופות צינון וגרסאות מוצמדות ב pipelines מונע צריכה אוטומטית של שחרורים טריים ולא מאומתים.

הרדן CI/CD כברירת מחדל

Guardrails in CI/CD חיוניים. הם דוחים מיזוגים או התקנות שמכניסים סקריפטים או קבצים בינאריים חדשים. במקביל, הם חוסמים זרימות עבודה שמסדירות סודות בסידור או מנסות לפרסם פוסטים חיצוניים. צוותים צריכים גם לדרוש התקנות של קבצי נעילה בלבד (npm ci) על פני כל pipelineכך שקבוצות תלויות יישארו ניתנות לשחזור ובטוחות.

צמצם את רדיוס פיצוץ האסימונים

אסור שסודות יהפכו לנקודות כשל בודדות. סרוק באופן רציף קוד, תצורות ו... pipeline פלט עבור פרטי גישה חשופיםיש להגדיר אסימונים בטווח צר, לתת להם משך חיים קצר, ולסובב אותם אוטומטית כאשר מתגלה חשיפה. ככלל, יש להתייחס לכל אסימון בו נעשה שימוש במארח שהפעיל התקנה חשודה לאחר ההתקנה כאל אסימון שנפרץ.

לראות את התנהגות התולעים מוקדם

גילוי אנומלי הוא המפתח. לדוגמה, קפיצות פתאומיות באירועי פרסום של npm, זרימות עבודה חדשות המופיעות ללא סיבה, או מאגרי מידע ציבוריים חדשים מלאים בקבצים מקודדים מוזרים, כולם יכולים לאותת על פעילות תולעת. לכן, צוותים צריכים להעלות התראות במהירות ולבודד את כל המתחזקים או הרצים המראים סימני אזהרה אלה.

תקן במהירות בלי לשבור מבנים

מהירות ובטיחות חייבות ללכת יחד. אוטומטי pull requests יכול להחליף חבילות npm שנפגעו בגרסאות מאומתות. בנוסף, נגישות ו ניצול ניתוח מבטיח שהשדרוגים יישארו מינימליים ויציבים. לבסוף, יש לבנות מחדש את רצים של CI שנפגעו מתמונות נקיות לאחר אישור החשיפה, ולמנוע התפשטות נוספת של ההתקפה.

אינדיקטורים של פשרה (IoC)

כאשר קבוצות מנתחות את שי-חולוד, עליהן לשים לב לשניהם מעגלים ומיקרו סטטיים (IoCs) בקבצים וב אינטראקציות התנהגותיות (IoCs) in pipelineיחד, אותות אלה עוזרים לזהות זיהומים מוקדם ולהגיב לפני שהתולעת מתפשטת עוד יותר.

מערכות שליטה במעגלים (IoC) סטטיות

התיאום הבא של עיכולי SHA-256 נצפה bundle.js דגימות:

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

בנוסף, שימו לב לדפוסים חוזרים אלה:

  • A bundle.js בשורש החבילה.
  • "postinstall": "node bundle.js" בתוך package.json.
  • מאגרים בעלי שם שי חולוד.
  • זרימות עבודה של GitHub המכילות ${{ toJSON(secrets) }}.

מערכות שליטה במערכות התנהגותיות

מעבר לחתימות קבצים, פעילות התולעת מתגלה דרך התנהגות. לדוגמה:

  • התפרצויות פתאומיות של npm מפרסמות אירועים ממתחזק אחד.
  • זרימות עבודה חדשות שדוחפות נתונים לנקודות קצה חיצוניות.
  • בקשות POST יוצאות שהופעלו על ידי רצים של CI.
  • מאגרים ציבוריים שנוצרו לאחרונה עם בלובים מקודדים.

ציד מהיר

סיכום: לקחים משי-חולוד

השמיים מתקפת שרשרת האספקה ​​של שי-חולוד בחבילות npm מראה עד כמה שרשרת אספקת התוכנה של ימינו הפכה לשברירית. תולעת זו עשתה יותר מאשר רק הוסיפה קוד זדוני. היא גנבה טוקנים, שלחה נתונים, ואז פרסמה את עצמה מחדש באופן אוטומטי. בגלל זה, ההתקפה התפשטה תוך שעות במקום שבועות.

עבור מפתחים וצוותי DevOps, הלקחים ברורים:

  • כל התקנה מריץ קוד. אפילו חבילת npm נפוצה יכולה להסתיר תולעת לאחר התקנה.
  • לכל אסימון יש ערך גבוה. לאחר גניבתו, ניתן להשתמש בו כדי להפיץ תוכנות זדוניות נוספות.
  • כל pipeline צריך צ'קים. ללא guardrails על תלויות, זרימות עבודה וסודות, פשרה אחת יכולה לפגוע במהירות בתהליכי הייצור.

לכן, עצירת מתקפות כמו שי-חולוד דורשת בקרות אוטומטיות וקלות לאכיפה. צוותים צריכים לסרוק חבילות npm לפני התקנות, להשתמש בבניית קובצי נעילה, לזהות פעילות פרסום מוזרה ולשמור על אסימונים קצרי מועד. צעדים אלה אינם עוד אופציונליים. במקום זאת, הם הבסיס לחוסן במערכות מודרניות. pipelines.

ב-Xygeni, אנו רואים את מתקפת שרשרת האספקה ​​של שי-חולוד כאזהרה לכלל המערכת האקולוגית של קוד פתוח. הדרך בת קיימא קדימה היא להביא את אבטחת שרשרת האספקה ​​ישירות לתהליך הפיתוח, בנקודה שבה קוד, חבילות npm ו... pipelineלהתחבר.

להלן רשימה מלאה של חבילות וגרסאות npm שדווחו כנפגעו בשי-חולוד. השתמשו בה כדי לבדוק את קבצי הנעילה, הרישומים וה-CI שלכם. pipelines לחשיפה.

רשימת חבילות שנפרצו

📦 תצוגה מקדימה של חבילות npm שנפרצו

שם חבילה גִרְסָה פרסם תאריך
מנוע-הכללים-json-פשוט0.2.12025-09-14T17:58:51.203Z
טייס אוויר0.8.82025-09-14T18:35:07.600Z
גרף ידע-mcp1.2.12025-09-14T18:35:09.494Z
מפקד אוויר0.3.12025-09-14T18:35:09.521Z
קפיצת שער0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/חלון-התקשרות-חוזרת1.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/core1.0.82025-09-14T20:31:42.728Z
@teselagen/react-table6.10.202025-09-14T20:37:08.597Z
@hestjs/הדגמה0.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/מנהל-תצורה0.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/אימות0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
➡️ צפה ברשימה המלאה של חבילות שנפגעו
שם חבילה גִרְסָה פרסם תאריך
מנוע-הכללים-json-פשוט0.2.12025-09-14T17:58:51.203Z
טייס אוויר0.8.82025-09-14T18:35:07.600Z
גרף ידע-mcp1.2.12025-09-14T18:35:09.494Z
מפקד אוויר0.3.12025-09-14T18:35:09.521Z
קפיצת שער0.0.22025-09-14T18:35:09.651Z
tvi-cli0.1.52025-09-14T18:35:10.996Z
@thangved/חלון-התקשרות-חוזרת1.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/core1.0.82025-09-14T20:31:42.728Z
@teselagen/react-table6.10.202025-09-14T20:37:08.597Z
@hestjs/הדגמה0.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/מנהל-תצורה0.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/אימות0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
@hestjs/cqrs0.1.62025-09-14T20:45:55.966Z
@hestjs/scalar0.1.72025-09-14T20:45:56.386Z
העלאת קובץ ng27.0.32025-09-15T02:44:29.555Z
מטפל הודעות קבלים0.0.22025-09-15T04:54:48.431Z
קבל-תוסף-vonage1.0.22025-09-15T04:54:48.501Z
קבל-תוסף-אפליקציית בריאות0.0.22025-09-15T04:54:48.704Z
הרשאות אנדרואיד של קבלים0.0.42025-09-15T04:54:48.753Z
ערכת שיחות VoIP1.0.22025-09-15T04:54:49.223Z
קבל-תוסף-ihealth1.1.82025-09-15T04:55:08.113Z
@art-ws/common2.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/http2.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/web-app1.0.32025-09-15T05:21:20.383Z
@art-ws/ssl-info1.0.92025-09-15T05:21:20.927Z
כלי SCA לניתוח קומפוזיציה - תוכנה
תעדוף, תיקון ואבטחת סיכוני התוכנה שלך
קבל את החשבון החינמי שלך.
אין צורך בכרטיס אשראי.

אבטחו את פיתוח ואספקת התוכנה שלכם

עם חבילת המוצרים Xygeni