package-lock.json - נעילת חבילה json - npm typosquatting

תקלת הקלדה Package-Lock.json: כיצד היא יכולה לחטוף את הבנייה שלך

למה Package-Lock.JSON חשוב למפתחים

בפרויקטים של Node.js, package-lock.json אינו רק קובץ נלווה ל-package.json. הוא נועל את הגרסאות המדויקות של כל תלות מותקנת, כולל כאלה מקוננות. קובץ זה מבטיח שחזור בין סביבות ומונע שינויים בלתי צפויים כאשר גרסאות חבילה חדשות מתפרסמות. בלעדיו, מפתחים יסכנו התנהגויות שונות בשלבי הפיתוח, הבדיקה והייצור עקב עצי תלות משתנים, ואף יפתחו את הדלת ל-npm typosquatting אם טעויות מחליקות לתוך קובץ הנעילה.


כאשר משתמשים בו נכון, package-lock.json מבטיח שכל אחד בצוות שלך ושלכם CI/CD pipeline התקנות אותו קוד. אבל שגיאת הקלדה שקטה אחת בקובץ הזה יכולה להפנות את האפליקציה שלך ישר למלכודת.

כיצד שגיאות כתיב מובילות להתקפות טיפוסקווטינג ב-NPM?

נניח חבילה לגיטימית ב package.json כתוב נכון, כמו לודשאבל ערך שגוי בהקלדה ב package-lock.json, כמו לודאס, עדיין יכול להתגנב לעץ התלות שלך, במיוחד אם מישהו ערך אותו ידנית או שכלי פגום כתב אותו.

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

‏NPM typosquatting אינו רק תיאורטי. התקפות typosquatting של ‏NPM מהעולם האמיתי עלו לכותרות. דוגמה אחת כזו הייתה פשרה על חבילת Coa, שם קוד זדוני נשלח דרך עדכון של חבילה מהימנה. ההבדל הוא שעם typosquatting ב-npm, המפתח מזמין בטעות את התוקף על ידי הקלדה שגויה של תלות.

סיכונים אמיתיים ב CI/CD Pipelineנגרם על ידי שגיאות json של נעילת חבילה

מודרני CI/CD pipelineפינוק package-lock.json כמקור לאמת. במהלך הבנייה או הפריסה, ה- pipeline פועל npm ci or התקנת npm, שניהם קוראים מקובץ הנעילה. אם קיימת שגיאת הקלדה, החבילה הזדונית נשלפת אוטומטית. אין התראות. אין הנחיות.

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

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

זיהוי ומניעת שגיאות כתיב תלויות כדי להפחית טיפוסקווטינג של NPM

שגיאות כתיב ב package-lock.json בלתי נראים אלא אם כן מחפשים אותם באופן פעיל. כך מתחילים:

  • ניתוח סטטיחלק מהכלים לא מזהים את הבעיות הללו, אבל סורקי תלויות ייעודיים כן. שלבו כלים שסורקים דפוסי typosquatting של npm ובודקים את... package-lock.json עבור סתירות.
  • קבצי נעילה מותאמים אישיתהשתמש בכללי linting או תוספים מותאמים אישית כדי לאמת package-lock.json רשומות מול רשימות בטוחות ידועות.
  • ביקורות קודביקורות עמיתים הן קריטיות. הבדלים של קבצי נעילה רועשים, אבל למדו את הצוות שלכם לבדוק אותם בדיוק כמו קוד.
  • בדיקות אוטומטיות: להכין pre-commit hooks או עבודות CI כדי לדחות ערכים לא מאומתים או חשודים ב package-lock.json.

הנה דוגמה מעשית לשימוש ב-GitHub Actions:

זה לא חסין כדורים, אבל זה מסמן שמות חבילות מוזרים שעשויים לאותת על npm typosquatting.

אבטחת פרויקטי Node.js מפני התקפות NPM Typosquatting ושרשרת אספקה

כדי לנעול את אפליקציית Node.js שלך ולמנוע התקפות באמצעות package-lock.json:

  • הצמדת גרסה קפדניתהימנעו מטווחי גרסאות (^, ~) ב package.jsonנעל את כל התלויות לגרסאות מדויקות כדי להפחית עדכונים בלתי צפויים וסחיפות.
  • אימות חתימהמינוף כלים כמו Sigstore ותכונות המקור של npm כדי לאמת את האותנטיות והמקור של חבילות.
  • מבנים בלתי ניתנים לשינוי: השתמש תמיד npm ci עם אישור package-lock.json קובץ בסביבות ייצור. לעולם אל תסמכו על התקנת npm במהלך פריסות, מכיוון שהדבר עלול להכניס שינויים שלא נבדקו.
  • בקרה מתמשכתהשתמשו בפתרונות ניטור שמתריעים בפניכם כאשר:
    • חבילות חדשות מופיעות ב package-lock.json
    • חבילות קיימות משתנות באופן בלתי צפוי
    • דפוסים חשודים (למשל, שמות חבילות כמו מבטא, ריאקט דום, זוויתי) מזוהים
  • כלי ביקורת תלותשילוב כלים אוטומטיים כגון ביקורת npm, סניק, או קסיגני לתוך ה-CI שלך pipeline כדי לסרוק אחר פגיעויות ומדדי typosquatting.
  • היגיינת נעילת קבצים: פנקו package-lock.json כקוד. עברו עליו במהלך pull requests, במיוחד כאשר תלויות מתעדכנות או מתווספות.
  • אוטומטי Pre-Commit בדיקות: להשתמש pre-commit hooks כדי לאמת את קובץ הנעילה שלך לפני שהוא מגיע לבקרת גרסאות.

package-lock.json היא מטרה בעלת ערך גבוה בהתקפות typosquatting של npm. שגיאת הקלדה כמו ריאקט דום or לודאס נותן לתוקפים נתיב ישיר לתוך הבנייה שלך pipelineערנות סביב קובץ זה חיונית לשמירה על שלמות שרשרת האספקה.

אז, שגיאת הקלדה אחת יכולה להטביע את הבנייה שלכם. אל תתנו לזה לקרות!

שגיאת הקלדה ב package-lock.json זה לא רק קידוד רשלני; זה וקטור איום אמיתי עבור typosquatting ב-npm. הקובץ הוא שומר סף, ואם הוא נפגע, שלך pipeline גם כן. התיקון לא סקסי: האט את הקצב, בדוק את קובץ הנעילה, אוטומציה של בדיקות ומעקב אחר שינויים. אבל זה שווה את זה.

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

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

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

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