גישה לרשת פרטית: הגנה מורחבת לעובדי אינטרנט ולאחזורי ניווט

Jonathan Hao
Jonathan Hao

מהי גישה לרשת פרטית?

גישה לרשת פרטית (PNA, שנקראה בעבר CORS-RFC1918 ובקצרה 'גישה לרשת מקומית') היא תכונת אבטחה שמגבילה את היכולת של אתרים לשלוח בקשות לשרתים ברשתות פרטיות. הפעולה הזו עוזרת להגן על המשתמשים ועל רשתות פנימיות מפני מתקפות פוטנציאליות כמו Cross-Site Request Forgery (CSRF). Chrome מטמיע בהדרגה את PNA, וההגנה תורחב בגרסאות הבאות.

הגנות PNA של מפתחות (עם הסטטוס הנוכחי שלהן)

  • הקשרים מאובטחים: אפשר לשלוח בקשות למשאבי משנה של רשת פרטית רק בהקשרים מאובטחים (נאכפים החל מגרסה 94 של Chrome). פרטים נוספים זמינים בפוסט העדכון בנושא גישה לרשת פרטית.
  • בקשות קדם-הפעלה: Chrome שולח בקשות קדם-הפעלה לפני בקשות למשאבי משנה של רשת פרטית כדי לבדוק אם יש הרשאות שרת (אזהרות בכלי הפיתוח לגבי כשלים מאז Chrome 104, לאכיפה ב-Chrome 130). מצב זה תואר בקטע גישה לרשת פרטית: היכרות עם קדם-הפעלה. החל מגרסה 123 של Chrome, Chrome ישמיט כותרות CORS מסוימות כמו Accept אם קדם-ההפעלה נוצר ונשלח רק בגלל PNA.
  • פטורים מאותו מקור: החל מגרסה 115 של Chrome, בקשות מאותו מקור ממקורות שעשויים להיות מהימנים פטורות מהגבלות על PNA.

הגנה מורחבת: עובדי אינטרנט

ההגנה על PNA חלה גם על עובדי אינטרנט (עובדים ייעודיים, עובדים משותפים ו-service worker). האיסור הזה כולל:

  • אחזור סקריפטים של worker: נדרשים הקשרים מאובטחים וקדם-הפעלה עבור כתובות IP פחות ציבוריות. אזהרות מגרסה 110 של Chrome, לאכיפה ב-Chrome 130.
  • אחזורים שהופעלו על ידי סקריפטים של worker: כל האחזורים מתוך הסקריפטים של ה-worker פועלים לפי אותם כללי PNA.

החל מגרסה 124 של Chrome, אפשר לבדוק את האכיפה באמצעות השלבים הבאים:

  • השבתת chrome://flags/#private-network-access-ignore-worker-errors
  • הפעלת chrome://flags/#private-network-access-respect-preflight-results

הגנה מורחבת: אחזורים מניווט

PNA חלה גם על אחזורי ניווט (iframes, חלונות קופצים) בגלל השימוש הפוטנציאלי שלהם במתקפות CSRF. בגרסה 123 של Chrome התחילו להופיע אזהרות לגבי כשלים, וב-Chrome 130 מתוכננת אכיפה.

החל מגרסה 124 של Chrome, אפשר לבדוק את האכיפה באמצעות:

  • השבתת chrome://flags/#private-network-access-ignore-navigation-errors
  • הפעלת chrome://flags/#private-network-access-respect-preflight-results

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

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

מה לעשות אם האתר שלך מושפע?

הפוסט גישה לרשת פרטית: הצגת קדם-הפעלה כולל הנחיות. חשוב לציין בקשות ניווט:

  • Access-Control-Allow-Origin לא יכול להיות תו כללי לחיפוש ("*").
  • הערך של Access-Control-Allow-Credentials חייב להיות "true".

מה השלב הבא?

  • WebSockets: באופן זמני החל מגרסה 126 של Chrome, PNA יכסה לחיצת יד של WebSocket (קודם אזהרות).
  • אכיפה מלאה: כל ההגבלות של PNA ייאכפו (חסימת בקשות שלא תואמות) באופן זמני ב-Chrome 130. למשתמשים תהיה הגדרת אתר לביטול PNA עבור אתרים מהימנים.

משוב לתרחישים לדוגמה ברשת הפרטית

אם אתם מארחים אתר ברשת פרטית שמחייבת בקשות מרשתות ציבוריות, צוות Chrome ישמח לקבל מכם משוב. אפשר לדווח על בעיה ב-Chromium Issue tracker (רכיב: Blink>SecurityFeature>CORS>PrivateNetworkAccess).

תמונה מאת Jakub נציגdzicki ב-UnFlood