הרשאת רשת מקומית

אפשר לגשת למכשירים ברשת מקומית (LAN) מכל אפליקציה שיש לה הרשאה INTERNET. כך קל לאפליקציות להתחבר למכשירים מקומיים, אבל יש לכך גם השלכות על הפרטיות, כמו יצירת טביעת אצבע של המשתמש ושימוש כפרוקסי למיקום.

מטרת הפרויקט Local Network Protections (הגנות על הרשת המקומית) היא להגן על פרטיות המשתמש באמצעות הגבלת הגישה לרשת המקומית מאחורי הרשאת זמן ריצה חדשה.

השפעה

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

האפליקציות יושפעו אם הן ניגשות לרשת המקומית של המשתמש באמצעות:

  • שימוש ישיר או שימוש בספרייה בשקעים גולמיים בכתובות של רשת מקומית, לדוגמה, Multicast DNS (mDNS) או Simple Service Discovery Protocol (SSDP).
  • שימוש במחלקות ברמת המסגרת שיש להן גישה לרשת המקומית, לדוגמה, NsdManager.

פרטים על ההשפעה

כדי להעביר תנועה לכתובת ברשת מקומית וממנה, צריך הרשאה לגישה לרשת מקומית. בטבלה הבאה מפורטים כמה מקרים נפוצים:

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

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

חריגים לכללים הקודמים:

  • אם שרת ה-DNS של המכשיר נמצא ברשת מקומית, לא נדרשת הרשאת גישה לרשת המקומית כדי להעביר תנועה אל השרת או ממנו (בפורט 53).
  • לאפליקציות שמשתמשות בבוחר הפלט כבוחר בתוך האפליקציה לא נדרשות הרשאות לרשת המקומית (הנחיות נוספות יפורסמו בגרסה מאוחרת יותר).

הדרכה

כדי להפעיל הגבלות על הרשת המקומית:

  1. צריבת ROM‏ (flash) במכשיר לגרסת build עם Android 16 Beta 3 ואילך
  2. התקנת האפליקציה שרוצים לבדוק
  3. החלפת מצב ההגדרה של Appcompat באמצעות adb

    adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
    
  4. הפעלת המכשיר מחדש

עכשיו הגישה של האפליקציה לרשת המקומית מוגבלת, וכל ניסיון לגשת לרשת המקומית יוביל לשגיאות בשקע. אם אתם משתמשים בממשקי API שמבצעים פעולות ברשת המקומית מחוץ לתהליך של האפליקציה שלכם – למשל NsdManager – הם לא יושפעו במהלך ההסכמה.

כדי לשחזר את הגישה, צריך לתת לאפליקציה הרשאה ל-NEARBY_WIFI_DEVICES.

  • מוודאים שהאפליקציה מצהירה על ההרשאה NEARBY_WIFI_DEVICES בקובץ manifest שלה.
  • עוברים אל הגדרות > אפליקציות > [שם האפליקציה] > הרשאות > מכשירים בקרבת מקום > אישור.

עכשיו הגישה של האפליקציה לרשת המקומית אמורה להיות משוחזרת, וכל התרחישים אמורים לפעול כמו לפני שהאפליקציה נכללה בהסכמה. כך תושפע תנועת הנתונים ברשת של האפליקציה.

הרשאה בקשה יוצאת ב-LAN בקשה יוצאת/נכנסת לאינטרנט בקשה נכנסת ב-LAN
הוענקה Microsoft Works Microsoft Works Microsoft Works
לא הוענקה גישה פספוסים Microsoft Works פספוסים

כדי להשבית את ההגדרה Appcompat, מריצים את הפקודה הבאה:

adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>

שגיאות

שגיאות שנובעות מההגבלות האלה יוחזרו לשקע הקורא בכל פעם שהוא מפעיל את send או וריאציה של send לכתובת ברשת המקומית.

דוגמאות לשגיאות:

sendto failed: EPERM (Operation not permitted)

sendto failed: ECONNABORTED (Operation not permitted)

באגים

שליחת משוב ודיווח על באגים בנושא:

  • אי התאמות בגישה לרשת מקומית (אתם חושבים שגישה מסוימת לא צריכה להיחשב כגישה לרשת מקומית)
  • באגים שבהם הגישה לרשת LAN אמורה להיות חסומה אבל היא לא חסומה
  • באגים שבהם הגישה לרשת המקומית נחסמת למרות שהיא לא אמורה להיחסם

השינוי הזה לא ישפיע על:

  • גישה לאינטרנט
  • רשת סלולרית