שרתים לא אוהבים הפתעות באמצע השבוע. ב-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.x | 26.12.1 | High | טלאי שוחרר |
| Node.js 24.x | 24.22.1 | High | טלאי שוחרר |
| Node.js 22.x | 22.23.4 | High | טלאי שוחרר |
| 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, אתם יכולים לנשום לרווחה, אבל בכל שרת אינטרנט חי, המשימה הבאה שלכם ברורה. השרתים לא יתעדכנו מעצמם.
מקורות
- Wednesday, October 21, 2026 Security Releaseshttps://nodejs.org/en/blog/vulnerability/october-2026-security-releases
- Node.js 26.12.1 (Current)https://nodejs.org/en/blog/release/v26.12.1
- Index | Node.js v26.12.1 Documentationhttps://nodejs.org/docs/v26.12.1/api
- Node.js v24.22.1 Release Noteshttps://nodejs.org/en/blog/release/v24.22.1
- OpenJS Ecosystem Sustainability Program partnershttps://nodejs.org/en/about/eol
- Node.js v22.23.4https://nodejs.org/en/blog/release/v22.23.4/
- Node.jshttps://weba.co.il/tools/node-js/
הידיעה נכתבה מהמקורות שלמעלה בתאריך הפרסום, וכל טענה בה נבדקה מולם. מצאתם טעות? כתבו.