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

Jonathan Hao
Jonathan Hao

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

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

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

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

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

ההגנה של PNA תחול על Web Workers (workers ייעודיים, workers משותפים ו-Service Workers). למשל:

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

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

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

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

בדיקת PNA חלה גם על אחזור נתוני ניווט (iframe, חלונות קופצים) בגלל האפשרות שלהם לשמש בהתקפות CSRF. התחלנו להציג אזהרות על כשלים בגרסה 123 של 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: החל מגרסת Chrome 126, PNA יכסה לחיצות יד של WebSocket (קודם אזהרות).
  • אכיפה מלאה: כל ההגבלות על PNA יאכפו (חסימת בקשות שלא עומדות בדרישות) באופן זמני ב-Chrome 130. למשתמשים תהיה הגדרת אתר שתחליף את PNA לאתרים מהימנים.

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

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

תמונה של Jakub Żerdzicki ב-Unsplash