יישום עשוי לקבל תעבורת HTTPS רגילה ובכל זאת לעבד קלט מסוכן, אם הוא פורק נתוני Brotli שסופקו בידי משתמשים. ב-25 באוקטובר 2026 פרסמה Microsoft עדכוני חירום ל-.NET כדי לתקן גלישת חוצץ במפענח Brotli; הפגיעות מסומנת כ-CVE-2026-111497. Node.js כללה תיקון לאותה פגיעות במהדורת אבטחה נפרדת מ-21 באוקטובר. הצעד הראשון למפתחים הוא לאתר את הנתיב מהנתונים החיצוניים אל המפענח, ואז לעדכן את סביבת הריצה ולבנות מחדש או להפעיל מחדש את היישום.

לפי תיאור Microsoft, פגיעות .NET עלולה לאפשר לתוקף שאינו מאומת לקרוא או להשחית את זיכרון התהליך, דבר שעשוי להוביל לחשיפת נתונים, למניעת שירות או להעלאת הרשאות. התיקונים פורסמו עבור .NET 8, 9 ו-10, וכן עבור .NET 11 Release Candidate 3. עבור .NET 8 צוינו runtime 8.0.33 ו-SDK 8.0.133 או 8.0.427. .NET Framework אינו מושפע מהפגיעות.
היכן נוצרת החשיפה
הסיכון מתעורר כאשר יישום מעביר זרם Brotli שאינו מהימן למפענח פגיע. ב-.NET הדבר עשוי להתרחש בשימוש ב-decompression של בקשות ASP.NET Core, בפריסה אוטומטית של תשובות באמצעות HttpClient, או בקריאה ישירה לממשקי API מתוך System.IO.Compression, כגון BrotliStream ו-BrotliDecoder. המלצת .NET מפרטת את הנתיבים האלה ומציינת שפריסת בקשות נכנסות ופריסה אוטומטית של תשובות כבויות כברירת מחדל.
מיפוי החבילות הוא רק תחילת הבדיקה. חפשו הגדרות של middleware ושל לקוחות HTTP, קריאות ישירות למפענח ורכיבים של צד שלישי המקבלים נתונים דחוסים. בררו אם הנתונים מגיעים מלקוחות, מ-webhooks, מפרוקסי או מממשקי API חיצוניים, ואילו מגבלות גודל וזמן עיבוד חלות לפני הפריסה. כך תוכלו לקבוע היכן הקוד הפגיע מקבל נתונים שנשלטים מבחוץ.
עדכון .NET
התקינו את העדכון לענף שבו אתם משתמשים: .NET 8 — 8.0.33, .NET 9 — 9.0.22, .NET 10 — 10.0.14; עבור .NET 11 — Release Candidate 3. ביישומים התלויים ב-framework, התקינו את סביבת הריצה המעודכנת והפעילו מחדש את היישום. יש לבנות ולפרסם מחדש יישומים עצמאיים: עדכון סביבת הריצה במארח אינו מחליף את העותק הכלול ביישום. בנו מחדש את קובצי הקונטיינר ופרסו אותם על גבי תמונות .NET מעודכנות.
גם עבור NativeAOT, השתמשו ב-SDK ובחבילות סביבת הריצה המעודכנים בעת פרסום מחדש. אם אי אפשר לפרוס את התיקון עדיין, השביתו באופן זמני את Brotli בנתיבי הקלט שזוהו כמקבלים נתונים שאינם מהימנים. בדקו בקשות רגילות ואינטגרציות: השבתת הדחיסה עלולה לשנות את אופן הטיפול בלקוחות ששולחים גופים דחוסים.
בדקו את Node.js ואת התלויות המערכתיות
פרויקט Node.js דיווח על הפגיעות ב-21 באוקטובר: מפענח Brotli המובנה ב-Node.js 22.x, 24.x ו-26.x מושפע. מהדורת האבטחה של Node.js מציינת את הגרסאות המתוקנות 22.23.4, 24.22.1 ו-26.12.1, בהתאמה. עדכנו לענף הנתמך שבו אתם משתמשים והפעילו מחדש את השירות. לפי תיאור הפרויקט, הבעיה מתרחשת כאשר יישום פורס נתונים שסופקו בידי תוקף באמצעות node:zlib; השחתת זיכרון עלולה לגרום לקריסה, לחשיפת זיכרון או להרצת קוד מרחוק.
בדקו גם תלויות המסופקות בנפרד מ-Node.js או מ-.NET של המערכת. השוו את גרסאות Brotli בקונטיינרים ובתוצרי הבנייה, ואז חזרו על הבדיקה לאחר הפריסה. ב-CI קבעו תמונת בסיס מעודכנת והוסיפו לתהליך הבנייה הרגיל בדיקת גרסאות של ספריות פגיעות.
סדר פעולות קצר
- ערכו רשימה של יישומים, ערכות SDK, סביבות ריצה, קונטיינרים ובניות NativeAOT המשתמשים ב-Brotli.
- אתרו מקומות שבהם נתונים חיצוניים עוברים פענוח אוטומטי או ישיר.
- עדכנו את .NET, את Node.js ואת הספריות המסופקות בנפרד לגרסאות המתוקנות; בנו מחדש יישומים עצמאיים וקונטיינרים.
- הפעילו מחדש את התהליכים ובדקו את הגרסאות בסביבה הפעילה, ולא רק בקובצי הפרויקט.
- עד לפריסת התיקון, הגבילו את הטיפול בקלט Brotli שאינו מהימן בנתיבים הפגיעים שאותרו.
העדיפות תלויה בשני גורמים: נוכחות של רכיב פגיע ואפשרות להעביר אליו זרם דחוס שנוצר במיוחד. העדכון סוגר את הפגם, ומיפוי נתיבי הקלט מסייע לוודא שהתיקון הגיע לתהליכים, לבניות העצמאיות ולקונטיינרים.