לפני ארבע שנים כתבתי על HTTPS ואפילו העברתי את האתר שלי ל-HTTPS. למה זה חשוב? טוב, מדובר בפרוטוקול הצפנה שמצפין את התנועה בין המשתמש לאתר. למה זה חשוב? אם למשל אני יושב בבית קפה שבעלי הרשת שבו מאזין לתנועה שלי, או בבית אבל השכן הצליח לפרוץ לראוטר (או שטכנאי תקשורת של הספק עשה זאת), או שבמחשב שלי מותקנת תוכנה זדונית שמאזינה לתקשורת – הם לא יוכלו לעולם "להאזין" לתקשורת או להחליף את האתר באתר שלהם. למשל אני אראה בשורת ה-URL כתובת כמו bank.com אבל בפועל זה יהיה evil-bank.com בלי שאדע על כך. התקפה כזו נקראת MITM או 'אדם באמצע' ובזמנו היא היתה מאוד פופולרית. HTTPS מבטיח כמעט בוודאות שמה שאני רואה זה מה שנשלח. בגלל זה הרשת עוברת לפרוטוקול הזה.
רגע, אמרתי שהרשת עוברת? כי אתר בנק פפר (אל תקרא לי בנק) לא בדיוק עבר ל-HTTPS. הכל החל כשחבר שלח לי קישור לבנק קקמייקה הזה, נכנסתי ובוא ונגיד שחשכו עיני. גרסת ה-HTTPS של האתר היתה שבורה לחלוטין. כלומר מי שרוצה לעשות MITM לאתר הבנק יכול. אז נכון, זה אתר תדמיתי – אבל נניח שאני אנצליח לעשות MITM ללקוח של הבנק ואשלח לו סמס בסגנון הבא:
הוא ייכנס מייד ל pepper, אתר לגיטימי לכל הדעות ומה שהוא יראה זה את התוכן שלי. מדובר בפרצות ובסיכון אמיתי. גם באתר תדמיתי. לפיכך כשנכנסתי לאתר 'פפר' וראיתי שה-HTTPS שלו שבור, פניתי לעודד ירון ויאיר בריל מהארץ ושחררנו אייטם.
כפי שנכתב בכתבה, אתר ה-https של פפר היה שבור לחלוטין ונראה רע – מקום נהדר לכל תוקף לחגוג על MITM על חשבון לקוחות של הבנק.
למה זה נראה ככה? כאשר אתר מאפשר תקשורת של https, אסור לו בתכלית האיסור לנסות לטעון משאבים בפרוטוקול לא מאובטח http. מה זאת אומרת? אם למשל יש לי תמונות בדף, אני חייב להגיש אותן לגולש גם כן בפרוטוקול https. ברגע שיש https – כל התנועה והמשאבים בין הגולש לאתר חייבים להיות בפרוטוקול מאובטח. אני לא יכול לערבב בין המשאבים. ברגע שהתחייבתי לפרוטוקול המאובטח – כל דבר שנשלח לגולש חייב להיות מאובטח. במידה ולא, זה ייחשב כהפרה של פרוטוקול האבטחה. כיוון שפורץ המאזין לתקשורת יכול לגלות את המשאבים האלו ולהחליף אותם במשאבים משלו ואז לגנוב את הפרטים במתקפה שידועה כ-Man In The Middle.
וזה בדיוק מה שקרה ב׳פפר׳. האתר ניסה לטעון משאבים לא מאובטחים ולשלוח אותם לגולש. למרבה המזל, כרום ופיירפוקס מונעים את פירצת האבטחה הזו ומונעים את הטעינה – זו הסיבה שהאתר לא מתפקד.
האתר ב-HTTP נראה טוב מן הסתם, אבל גם זה הדהים אותי – ייתכן שאתר של בנק (פפר זה בנק לאומי) יהיה זמין ללא פרוטוקול HTTPS
אבל כפי שאומרים בכל קליקבייט נלוז – התגובה שהארץ קיבלו מבנק לאומי היממה אותי. ממש כך. שופופו:
מבנק פפר נמסר בתגובה: "מדובר באתר הכולל מידע כללי שיווקי בלבד אודות השירות, לעומת חשבון הבנק של פפר – שהינו אפליקציה בנקאית מאובטחת ואין כל קשר בין השניים. לפיכך – גם אין חשש מזליגת מידע של הלקוח. בימים אלה אנו עובדים על גרסת https".
ראשית, צריך להיות חסר מושג לחלוטין כדי לומר שחוסר שימוש ב-HTTPS הוא לא מסוכן ושנית "בימים אלו עובדים על גרסת 'HTTPS'?!? האתר של פפר, ייאמר לזכותו, הוא אתר מבוסס וורדפרס. אתר כזה לוקח פחות מעשר דקות להפוך לאתר מבוסס HTTPS. פחות-מעשר-דקות.
כלומר אנשי אבטחת המידע של הבנק הם או חסרי מושג מוחלטים (מה שקשה לי להאמין) או שיש להם כל כך מעט כוח שהם לא יכולים לומר למחלקת השיווק ללחוץ על הספק שבנה להם את האתר ולהשקיע עשר דקות בהפיכת האתר למבוסס HTTPS – מה שסביר יותר להניח וזה כבר מדאיג.
הפיכת אתר וורדפרס ל-HTTPS היא משימה קשה – אם אתה חאפר או חסר ידע. אם יש לך מעט ידע, זה עניין של כמה דקות. לא מאמינים לי? הנה סרטון שמוכיח את זה. כך הפכתי את אתר כנס מיתופיה (כנס על ג'.ר.ר טולקין והארי פוטר שמתקיים במודיעין) ל-HTTPS. תוך כדי שאני עם הילדים בבית וטוחן פיצה פיתה. אבל מסתבר שזו משימה קשה מדי לבנק לאומי. אל תקרא לי בנק הם אומרים. בטוח שאני לא אקרא לכם בנק עם אבטחת מידע כזו. אולי אקרא לכם חבורת חובבנים שלא הייתי שם אצלם שקל (ואכן הוצאתי את החשבון הפעיל שלי מבנק לאומי).
למי שאין כוח לראות את הסרטון ולשמוע אותי מלרלר תוך כדי בליסת פיצה פיתה – הנה הצעדים שצריך לעשות על מנת להפוך את האתר מבוסס הוורדפרס שלכם לתומך בפרוטוקול HTTPS:
ליצור תעודת אבטחה באתר שלכם
יש לספק שלכם אינטגרציה עם let's encrypt? זה עניין של שלוש דקות. נכנסים ל-Cpanel, בוחרים את let's encrypt ומפעילים את תעודת האבטחה על הדומיין שלכם. אין לספק האחסון שלכם אינטגרציה כזו? החליפו אותו עוד היום.
לבדוק את האתר שלכם עם HTTPS
הכנסו לאתר שלכם עם https. עובד ויש אייקון ירוק של https? הרווחתם. דלגו על השלב הבא. יש לכם אייקון אפור ואזהרת mixed content? עיברו לשלב הבא.
פיתרו את בעיות ה-mixed content
אזהרת mixed content מתרחשת כאשר אתר בפרוטוקול HTTPS מנסה לטעון משאבים (סקריפטים, פונטים, קבצי CSS או תמונות) בפרוטוקול HTTP. כלומר יש קריאות ל-HTTP. עשו view source וגלו מאיפה הקריאות. אם מדובר באתר קטן – עברו על התוכן, במיוחד בוידג'טים ובקוד שאתם כתבתם. אם מדובר באתר גדול, יש סיכוי שתצטרכו קצת שאילתות SQL כדי לאתר את כל המקומות שבהם יש קריאות ל-HTTP. המירו את הקריאות לנתיבים יחסיים (למשל image.png/ במקום http://example.com/image.png).
וודאו שאף אחד לא יכול להכנס לאתר עם HTTP
הכניסו את הקוד הבא ל-htaccess שלכם. מעל החלק של וורדפרס.
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
נסו להכנס לאתר שלכם עם פרוטוקול HTTP ו-ודאו שאתם מועברים לגרסת ה-HTTPS.
החליפו את כתובת האתר
זהירות! זה החלק הכי מסוכן וחובה לוודא שהשלבים הקודמים עברו בהצלחה. ב'הגדרות' -> 'פרטים כלליים', יש את כתובת האתר. צריך להחליפה מ-HTTP ל-HTTPS. מייד אחר כך תצטרכו לעשות כניסה מחדש לאתר. הצלחתם? מעולה. המעבר הושלם.
כאמור בסרטון יש הסבר לכל השלבים האלו ויש גם תיעוד רב ברשת. לי זה לקח שבע דקות.
אם הנושא של אבטחה בוורדפרס מעניין אתכם: ביום רביעי הקרוב, ה-6.6 אני מרצה בכנס פרס4וורד על אבטחה בוורדפרס ומדבר מעט גם על הנושא הזה.
עדכון: באופן מפתיע משהו, אחרי הפוסט הזה בנק לאומי החליף את האתר ל-https.
16 תגובות
רן, אני מאוד אוהב את הכתבות שלך, ובאמת שאין אף סיבה הגיונית בעולם היום שאתר לא יוגש בhttps, אבל –
לקרוא לדבר כזה כישלון אבטחת מידע זה קצת מוגזם. זה לא באמת ציר התקפה סביר ולא עומד בשורה אחת עם הכשלים החמורים באמת שהצגת עד היום.
ברור שמדובר בסטנדארטים בעייתיים, אבל הרעש מבעיות לדעתי כאלה מפריע להתמקד בבעיות האמיתיות.
יש באגים יותר גדולים, אני מסכים. אבל התיקון של זה הוא באמת דקות. דקות. וזה מה שמטריף אותי. הרי ברגע שהתחלתי לעשות על זה רעש, כל חברה נורמלית היתה משקיעה בזה כמה דקות וגומרת עם הסיפור. זה שהם לא בחרו לעשות את זה – זה מדאיג. בדיוק כמו לראות טבח עם חולצה מלוכלכת במטבח. לא עבירה גדולה בכלל אבל לך תדע מה עוד יש שם אם הוא מעז להראות ככה.
לא יצא לי "להתלונן" על הרבה אתרים לא מאובטחים, אבל לדעתי התוצאות טובות יותר כשאני מזכיר שממש עוד מעט כרום ופיירפוקס יציגו כל אתר http כ"לא בטוח".
https://www.theregister.co.uk/2018/02/08/google_chrome_http_shame/
https://www.ghacks.net/2017/12/14/firefox-59-mark-http-as-insecure/
מאוד לא סביר שנראה אתרי http חדשים אחרי שהשינוי הקטן הזה יכנס.
היי רן,
תודה על המאמרים הנהדרים שלך! תענוג לקרוא!
תוכל לדבר גם על SSL באתרים שאינם מבוססי WORDPRESS?
אני כרגע עובד עם SSL for free שדורשים חידוש כל 3 חודשים..
יש לך פתרונות אחרים, נוחים יותר?
תודה!
יש את Let's Encrypt שמתפעלים אישורים בחינם לחלוטין
היי. יש למישהו פיתרון חינמי שיאפשר לשים על אתר שיושב על איחסון משותף (בתוכנית של biz.nf)?
*לשים ssl
כול הכבוד.
אתר של בנק לא צריך
לקבל פניות לא מאובטחות.
בלי קשר בכלל מה הוא מכיל, כולה ssl לא מדובר פה בwaf יצירתי.
הי רן, תודה על הפוסט, גם הוידאו מצויין, רק שים לב שהוא לא רספונסיבי במכשירים ניידים.
מעניין מאוד אבל גם האתר שקוראים לו איטרנט ישראל סובל לפעמים בדיוק מהבעיה הזו
למשל כאן
https://internet-israel.com/%D7%A4%D7%99%D7%AA%D7%95%D7%97-%D7%90%D7%99%D7%A0%D7%98%D7%A8%D7%A0%D7%98/%D7%91%D7%A0%D7%99%D7%99%D7%AA-%D7%90%D7%AA%D7%A8%D7%99-%D7%90%D7%99%D7%A0%D7%98%D7%A8%D7%A0%D7%98-%D7%9C%D7%9E%D7%A4%D7%AA%D7%97%D7%99%D7%9D/%D7%A9%D7%99%D7%9E%D7%95%D7%A9-%D7%91-wireshark-%D7%9C%D7%91%D7%93%D7%99%D7%A7%D7%AA-%D7%AA%D7%A2%D7%91%D7%95%D7%A8%D7%94/
ששש
מעניין מאוד אבל גם האתר שקוראים לו אינטרנט ישראל סובל לפעמים בדיוק מהבעיה הזו
ניסיתי לצרף לינק לדף לדוגמא אבל זה לא אפשרי, אז תנסו לחפש לדוגמא את המאמר בנוגע לשימוש בWireshark
אכן, כשכתבתי את אותו עמוד, אי אז ב-2010 לפני שמונה שנים, השתמשתי בכתובות http כדי להכניס תמונות 🙂 תפיסה נאה ואכן תיקנתי את זה. תוך כמה שניות, יש לציין. לא ארבעה ימים.
ברוך הבא לעולם היחצנות המתמחה בטיפול במשברים. ככה זה עובד. מעלים טורים עוד לפני שחושבים. בכל מקרה אם עוד היה לי שמץ של אולי לחשוב על הלא בנק הזה, הוא נגמר
פפר זה דרק של דבר, הם שלחו SMS להורים שלי על משהו שהם לא ביצעו, פניתי לדפוקים האלה במייל כמה פעמים והם בכלל חזרו אלי
נפלא!
עשיתי את כל הצעדים האלה על האתר של אישתי ועכשיו גם הוא עובד ב-HTTPS.
האתר שלה הוא קטן ואישי ולא מחזיק מידע חסוי, אבל אני ישן עכשיו טיפה יותר טוב בלילה.
תודה רבה!