WEBA

עדכוני האבטחה של Node.js דורשים פריסה מיידית

פרויקט Node.js שחרר תיקוני חירום לקווי 22, 24 ו-26 בעקבות פרצות TLS והרצת קוד מרחוק, כשגרסה 20 נשארת חשופה לחלוטין ללא מענה חינמי.

479 מילים27 עובדות אומתו

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

לא הייתי מחכה אפילו יום אחד עם ההפצה הזאת.

פריסה דחופה לכל שרת

ההפצה הנוכחית מתמקדת בשלושה קווי גרסאות פעילים: Node.js v26.12.1, לצד Node.js v24.22.1 וכן Node.js v22.23.4. חומרת השיא של העדכון הנוכחי מוגדרת High בכל הקווים הללו, כאשר האיום המיידי ביותר מגיע מכיוון מפענח ה-Brotli. הפגיעות הזו, שסומנה כ-CVE-2026-111497, מאפשרת כתיבה מחוץ לגבולות הזיכרון בעת פענוח זרמי מידע דחוסים, מצב שמוביל ישירות להרצת קוד מרחוק על גבי השרת. לפי התיעוד ברשימת השינויים של גרסה 26.12.1, התיקון כלל שילוב ישיר של commit שמספרו 0ed4268a4401abcb44720963 בספריית Brotli המובנית, יחד עם חשיפת קוד השגיאה BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH כדי לעצור פענוח פגום.

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

עקיפת תעודות והזרקות ב-DNS

מעבר לכשל ב-Brotli, סבב התיקונים סוגר כמה חורי אבטחה משמעותיים בשכבות הרשת והאימות. הפגיעות CVE-2026-105482 ברכיב dns.resolve חותכת שמות מתחם ברגע שהם מכילים תו NUL, מה שמאפשר לתוקפים לתמרן בדיקות שמות וכתובות. במקביל, שתי פרצות נפרדות ב-TLS, תחת CVE-2026-105483 ו-CVE-2026-106069, פותחות פתח לעקיפת אימות תעודות כאשר כתובות IP נכתבות בתווי fullwidth או כשהמארח מתפרש בצורה רופפת ככתובת IP. לזה מצטרפת חולשת Medium שמסומנת כ-CVE-2026-106074, הגורמת לשכפול מזהים אקראיים ב-crypto.randomUUID ביישומי snapshot.

לצד אלה מופיעות בעיות נוספות ברמות חומרה נמוכות ובינוניות. פרצת CVE-2026-105481 ברכיב HTTP גורמת לסוקט מסוג keep-alive לעבד תשובה שנכתבה עוד לפני שהבקשה נשלחה בפועל. פרצת CVE-2026-106072 מאפשרת אימות שגוי של תעודות מול כתובות IPv4 לא תקניות דרך רשומות DNS SAN. ברמת Low, הפגיעות הבולטת במודל ההרשאות היא CVE-2026-106073, שמאפשרת עקיפת הגבלות גישה למערכת הקבצים באמצעות fs.realpathSync.

Updates are now available for the 26.x, 24.x, 22.x Node.js release lines for the following issues.הודעת האבטחה הרשמית של פרויקט Node.js
ריכוז גרסאות היעד מול סטטוס התמיכה ורמת החומרה המרבית
גרסה פעילהגרסת יעד מעודכנתחומרה מרביתסטטוס עדכון אבטחה
Node.js 26.x26.12.1Highטלאי שוחרר
Node.js 24.x24.22.1Highטלאי שוחרר
Node.js 22.x22.23.4Highטלאי שוחרר
Node.js 20.xאין גרסה חינמיתHighסוף חיים (EOL) ללא תיקון

גרסה 20 מחוץ לתחום

המכה הקשה של השחרור הזה נוחתת על מי שעדיין מחזיק שרתים על Node.js 20. הגרסה הזו הגיעה למצב סוף חיים (EOL), והמשמעות פשוטה: אין עבורה טלאי קהילתי חינמי. מי שרוצה להשאיר מערכות על גרסה 20 ייאלץ לקנות חוזה מסחרי דרך שותפי התוכנית של OpenJS. לכל השאר, הברירה היחידה היא להרים פרויקט הגירה מהיר לגרסה 22 ומעלה כדי לא להישאר חשופים לחלוטין ברמת הפרודקשן.

להישאר כרגע על 20 בלי חוזה בתשלום זו פשוט הפקרות.

בדיקת התלויות בשרתים המקומיים

לפני שמריצים עדכון גורף, כדאי לשים לב שמהדורות האבטחה הללו כוללות גם רכיבי ליבה מעודכנים מחוץ לקוד הראשי של ג'אווהסקריפט. שתי תלויות מרכזיות שודרגו כדי לחסום חשיפות ברשת: ספריית c-ares קפצה לגרסה 1.34.9 עבור שאילתות DNS, וספריית Undici עודכנה לגרסה 8.12.2 כדי לטפל בבקשות HTTP יוצאות. בדיקה של תיעוד הממשקים הרשמי מראה שחלק מהתיקונים משנים את האופן שבו המערכת מסרבת לתצורות כתובת חריגות, כולל דחיית שרשראות תעודה שמכילות מפתחות ציבוריים חסומים, כך שתקשורת מול שרתים פנימיים עם הגדרות רשת מרושלות עלולה להיחסם.

בישראל, צוותים שמריצים שרתים מנוהלים או סביבות אחסון אצל ספקים מקומיים כמו JetServer צריכים לוודא מי אחראי לעדכון שכבת ה-runtime של המכונות. אם אתם משתמשים ב-Node.js רק ככלי מקומי להרצת Vite או Webpack, אתם יכולים לנשום לרווחה, אבל בכל שרת אינטרנט חי, המשימה הבאה שלכם ברורה. השרתים לא יתעדכנו מעצמם.

מה לעשות עכשיושדרגו מיד את שרתי הפרודקשן לגרסאות 26.12.1, 24.22.1 או 22.23.4, ותכננו נטישה דחופה של גרסה 20.

מקורות

הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.

מה שואלים על זה

מה לעשות אם הייצור שלנו עדיין רץ על Node.js 20?

גרסה זו הגיעה לסוף חייה (EOL) ואינה מקבלת עדכוני אבטחה קהילתיים. עברו מיד לגרסה נתמכת כמו Node.js 22.23.4, או רכשו תמיכה מסחרית ייעודית דרך שותפי ארגון OpenJS.

האם פגיעות ה-Brotli משפיעה על שרתים שלא מגדירים דחיסה באופן מפורש?

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

מדוע עודכנו ספריות כמו c-ares ו-Undici כחלק מטלאי האבטחה של הליבה?

ספריות אלו משולבות ישירות כחלק מקוד הליבה של Node.js ומספקות שירותי תשתית ל-DNS ולבקשות רשת (fetch), ולכן עדכוני פגיעויות בהן מחייבים הפצה של גרסת מנוע חדשה.