הגנה על השרת או שמירה על פרטיות המשתמשים?

רקע:
פורומים בכדי לחסוך במשאבים מתירים למשתמשים לכלול משאבים מאתרים אחרים (צד ג’), אך ישנה בעיה כאשר מי שכולל את המשאבים הללו הוא בעל כוונות זדוניות. ברוב המקרים ניתן לכלול אך ורק משאבים סטטים, גם איתם יש סכנה שהפרסור שלהם יוביל לפרצת אבטחה, אבל לרוב זה לא המקרה. טעינה של משאב מאתר שבשליטת המשתמש הזדוני תאפשר לו לאסוף מידע על המשתמשים שקראו את האשכול שיצר וטענו את המשאבים שהצמיד. האיסוף יכלול מידע כגון User Agent (באיזה דפדפן יש שימוש), כתובת אי פי של המשתמש ומאיזה אתר הגיע (referrer).


[anonymous821, מתוך South Park, עונה 20, פרק 5]

פתרון?
ל-Discourse יש אופציה שנקראת download remote images to local שאומרת לאפליקציה להוריד את התמונה ולשמור אותה מקומית, ואז כל מי שניגש לאשכול וטוען את התמונה, הוא למעשה יטען אותה מלינק מקומי ולא יגש למשאב המרוחק שפותח האשכול יצר.

בעיה!
זה אומר שהשרת עצמו יגש למשאב ויורד אותו כהעתק מקומי, משמע כתובת השרת תחשף למשתמש הזדוני. לפעמים זה מה שמשתמש זדוני שואף להשיג (כאשר כתובת השרת ממוסכת מאחורי CDN/WAF), את כתובת השרת בכדי לבצע מתקפת מניעת שירות.


[תמונת מסך; בירוק מסומן כתובת המשתמש לפני שהתוכן נשמר מקומית בפורום, באדום השרת ניגש למשאב המרוחק והוריד העתק שלו מקומית, ובכך נחשפה כתובת השרת]

סיכום:
מסיבה זו הפיצ’ר המדובר אינו מופעל (היה מופעל זמנית בשביל ההדגמה), אני משער שאפשר להכריח את ה-docker container לתקשר דרך פרוקסי [1], אבל זה דורש בדיקות וכן הרמה של שרת נוסף שיתפקד כפרוקסי. תפקחו עין על אנשים שמצמידים משאבים מכתובות מוזרות.

קישורים:

  1. Docker - Docs - Configure Docker to use a proxy server
9 לייקים

מגניב ממש, תודה על השיתוף. אני מאמין ששימוש בפרוקסי עבור פניות של השרת למשאבים זה יהיה הפתרון המושלם - גם ישמור על הפרטיות של המשתמשים וגם יימנע חשיפה של כתובת השרת. ל-Discourse אין משהו מובנה בסגנון שאפשר לקנפג דרכו פרוקסי לפניות האלה? להרים עוד שרת פרוקסי = עוד $$$, אבל תכלס זה יהיה שווה הרבה מבחינת ההגנה על השרת.

2 לייקים

מה מונע את האפשרות להעביר את הבקשה דרך proxy חינמי (או אפילו tor)?
ככה זה גם לא עולה עוד כסף וגם מסתיר את הIP האמיתי של השרת

אם משתמשים בפרוקסי חינמי צריך לוודא שהוא לא מעבירים האדרים מסויימים שמסגירים את המשתמש בפרוקסי [1], וכמובן שהם יציבים מספיק לשימוש ארוך טווח. ובעיה שקיימת בשני המודלים היא אמון, איך מוודאים (במקרה והתמונה נטענה מקישור ללא HTTPS) כי התמונה לא עברה שינוי. אם אכן אחליט ליישם פרוקסי, זה יהיה עם שרת נוסף.

קישורים:

  1. MDN - Proxy servers and tunneling
2 לייקים

בנוסף צריך לשים לב לכך שזה פונטציאלית חושף את השרת לSSRF, לפחות בצורה מסוימת, ולכן גורם זר יוכל פוטנציאלית להשתמש באתר בתור reflector לDoS, אז אולי כדאי גם להגביל את הפיצ’ר מבחינת כמויות במידה ומפעילים אותו.

5 לייקים

עכשיו שאני משתמש במערכת יותר, אני מבין שזה לא משנה, כי ברגע שנותנים קישור שהוא “תיבת תחימה”, אז השרת ניגש לאתר בשביל למשוך תוכן… כל הסיפור הזה מיותר, כתובת השרת כבר דלפה. אני משער ברגע שזה יתחיל להיות בעייתי (DDoS) אני אטפל בזה באיזשהו אופן.

הפיצ’ר הופעל.

2 לייקים