
ייעוץ Nuxt Image: מתקפות ללא אימות דרך נתיב /_ipx כברירת מחדל
ייעוץ GitHub עבור @nuxt/image מזהיר שנתיב /_ipx כברירת מחדל נגיש ללא אימות, ושתמונת דפים מרובים מעוצבת עלולה להפיל את תהליך השרת, לפגוע בזיכרון או לאפשר הרצת קוד מרחוק בהרשאות התהליך.
@nuxt/image רושם את נתיב טרנספורמציית התמונות /_ipx כברירת מחדל בפריסות שרת ומגיש אותו באמצעות ipx. ייעוץ GitHub אומר של-ipx יש גלישת מספר שלם (GHSA-qf89-6xm4-66wm) בעת פענוח תמונות מרובות דפים, כך שתמונת מקור מעוצבת יכולה לשבש זיכרון במהלך הפענוח. תוקף ששולט בתמונת מקור עשוי להשתמש בבקשה אחת ללא אימות כדי להפיל את תהליך השרת, ושיבוש הזיכרון עשוי לאפשר הרצת קוד מרחוק בהרשאות של אותו תהליך.
פריסות וגרסאות מושפעות
הבעיה משפיעה על פריסות שבהן האתר פועל כשרת עם ספק ipx כברירת מחדל, כך ש-/_ipx נרשם ללא תצורה; בתים של תמונה שנשלטת בידי תוקף יכולים להפוך למקור IPX; ו-/_ipx נגיש ללא אימות, וזו ברירת המחדל. אין צורך בשינוי מיוחד, ובקשה אחת מספיקה. גרסאות @nuxt/image מושפעות הן >= 2.0.0 ו-< 2.2.1, >= 1.0.0 ו-< 1.11.2, ו->= 0.6.0 ו-< 1.0.0. פריסות שמשתמשות בספק תמונות של פלטפורמה אינן מושפעות כל עוד image.ipx לא מוגדר גם כן; סביבות ריצה בקצה או ב-worker כגון Cloudflare Workers אינן רושמות את הנתיב, וגם בניות סטטיות אינן רושמות אותו. בשחזור שדווח, תהליך השרת רץ כ-root במכולה סטנדרטית, מה שהעמיד סודות, קוד מקור ונתונים שהועלו במכולה בהישג יד.
גרסאות מתוקנות
תוקן ב-@nuxt/image 2.2.1 ו-1.11.2, אשר דורשות ipx מתוקן 4.1.0 ו-2.1.2 בהתאמה. לפני פענוח כל הדפים של תמונה מרובת דפים כגון TIFF, GIF, WebP או AVIF, גרסאות אלו בודקות את הגובה הכולל של התמונה ודוחות את הבקשה עם 400 אם היא גדולה מדי. גרסה 2.2.1 גם מגבילה את /_ipx לפורמטי תמונות אינטרנט נפוצים כברירת מחדל: מקור שהפורמט שזוהה בו אינו JPEG, PNG, WebP, GIF, SVG, AVIF או HEIC נדחה עם 403 לפני שהוא מפוענח. כדי לקבל פורמטים אחרים, יש להגדיר image.ipx.allowedInputFormats. אם המקורות אינם מהימנים לחלוטין, הייעוץ גם ממליץ להפעיל image.ipx.restrictDecoders, אשר חוסם מפענחים של כל פורמט אחר; זה חל על כל שימוש ב-sharp בתהליך השרת. שתי האפשרויות הללו אינן זמינות ב-1.x. Nuxt Image 0.x הגיעה לסוף החיים ולא תקבל תיקון. ipx היא תלות אופציונלית, לכן לאחר השדרוג יש לבדוק שהיא נפתרת לגרסה מתוקנת, למשל עם npm ls ipx, ולשדרג אותה ישירות אם הפרויקט תלוי בה גם כן.
דרכי עקיפה וחומרה
אם אינכם יכולים לשדרג עדיין, רשמו מטפל שרת משלכם בנתיב /_ipx, למשל כזה שמחזיר 404; המודול מזהה מטפל קיים ואינו מתקין מטפל משלו. תוכלו גם לחסום /_ipx/** בפרוקסי ההפוך שלכם אם הנתיב אינו נחוץ. ודאו שבתים שנשלטים בידי תוקף אינם יכולים להפוך למקור IPX: שמרו העלאות מחוץ לנתיבים ציבוריים שמוגשים, והגבילו את image.domains למארחים שאתם שולטים בהם. בדיקת סיומת הקובץ או Content-Type של העלאות אינה מספיקה, מכיוון שהמפענח נבחר לפי תוכן הקובץ. הגבלת שינויים עם allowedModifiers לא עוזרת, מכיוון שהבעיה נגישה ללא שינוי כלשהו. חומרת הייעוץ היא High עם ציון CVSS כולל של 8.1. מדדי הבסיס של CVSS v3 מפרטים וקטור תקיפה ברשת, מורכבות תקיפה גבוהה, ללא הרשאות נדרשות, ללא אינטראקציית משתמש, היקף לא משתנה, והשפעה גבוהה על סודיות, שלמות וזמינות. אין CVE ידוע. החולשה היא CWE-20, אימות קלט לקוי. הקרדיטים מגיעים ל-@l8BL על הדוח המפורט, השחזור והחשיפה המתואמת. הייעוץ פורסם ב-30 באוקטובר 2026 תחת GHSA-p5vf-pjf5-ggj3.
מקורות: ייעוץ GitHub · ייעוץ IPX · Cloudflare · GitHub
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.