בחבילת proxy-addr — מודול Node.js נפוץ שעליו מבוסס req.ip במסגרת הפיתוח Express — התגלתה פגיעות קריטית המאפשרת לכל תוקף לא מאומת לזייף את כתובת ה-IP שהאפליקציה קוראת. כתובת ה-IP המזויפת יכולה לעקוף בקרות גישה, הגבלות קצב בקשות (rate limiting) ומנגנוני איתור מיקום — כל מנגנון הגנה שמסתמך על כתובת ה-IP הנגזרת מהחבילה.

| מזהה | CVE-2026-90711 |
| מוצר וגרסאות מושפעות | proxy-addr גרסאות 1.1.0 עד 2.0.7 (משמש כתלות ב-Express ופרויקטים נוספים) |
| חומרה (CVSS) | 9.1 — קריטית |
| מנוצל בפועל | לא פורסם |
| סטטוס תיקון | תוקן בגרסה 2.0.8 |
מה קרה
שורש הבעיה הוא באופן שבו proxy-addr מפרש רשימות של פרוקסי מהימנים שכתובים בסימון IPv4-mapped IPv6. הגדרת תת-רשת כמו ::ffff:10.0.0.0/8 במקום אורך התחילית הנכון (/104) מתקבלת בלי שגיאה, אבל בפועל מתפרשת כך שהיא סומכת על כל כתובת IPv4 קיימת ברשת — לא רק על הטווח שהוגדר. כתוצאה מכך, ברגע שכתובת המקור של החיבור נחשבת מהימנה, כל לקוח לא מאומת יכול לשלוח כותרת X-Forwarded-For משלו ולקבוע את כתובת ה-IP שהאפליקציה תקרא.
מכיוון ש-proxy-addr הוא תלות שקטה מאחורי req.ip ו-req.ips ב-Express, ההשפעה חוצה פרויקטים רבים שכלל לא מודעים לכך שהם משתמשים בה — כפי שמעידות עשרות בקשות משיכה (pull requests) לעדכון התלות שנפתחו בפרויקטי קוד פתוח מיד לאחר הפרסום.
נקודות לשים לב
- עדכנו את proxy-addr לגרסה 2.0.8 ואילך — גם כתלות עקיפה (transitive dependency), לא רק אם היא מותקנת ישירות.
- בדקו את קובצי ה-lock של הפרויקט (
package-lock.jsonוכדומה) כדי לאתר אם proxy-addr מגיעה דרך Express או חבילה אחרת, ולא רק כתלות ישירה. - אם עדכון מיידי לא אפשרי, ודאו שכל הגדרת אמון (trust proxy) בסימון IPv4-mapped IPv6 משתמשת באורך תחילית של לפחות 97, או כתבו את הטווח בסימון IPv4 רגיל.
- כל מנגנון שמסתמך על כתובת ה-IP הנגזרת — רשימות הרשאה, הגבלת קצב בקשות, זיהוי מיקום גיאוגרפי ולוגים לביקורת — עלול היה לפעול על בסיס מידע מזויף, כך שכדאי לבחון רישומים חשודים מהתקופה שלפני העדכון.
- אין דיווח על ניצול בפועל נכון לכתיבת שורות אלו, אך הפגיעות פשוטה לניצול ואינה דורשת אימות, כך שהעדכון מומלץ ללא תלות בכך.

₿ אהבת את הפוסט?
אפשר לשלוח לי ביטקוין ישירות לכתובת שלי. סרקו את הקוד, או העתיקו את הכתובת:
bc1qsn043qmlv4ejxydeknkfm9u6e93e6tegmq9x85
שימו לב: העברה on-chain כרוכה בעמלת רשת שאינה תלויה בסכום, ולכן סכומים קטנים מאוד אינם כדאיים.