לפחמימות ומאפים יש קשר הדוק להאקינג. אפילו האקינג דה-לה-שמאטע. למה? כי אפשר לתזמן האקינג לפי מאפים. כן, כן! ואני אדגים באמצעות מלוואח. אחד המאפים התימניים האהובים עלי ביותר הוא מלוואח. רגע, למה מלוואח? הוא טעים, משמין ואפשר להכין אותו ב-10 דקות בערך. וזה בדרך כלל הזמן שלוקח למצוא פרצות אבטחה במקומות שונים ובאתרים שונים. אני שם את המלוואח במחבת (או בתנור), נכנס לאתר, עושה view source ומוצא משהו ואז אוכל את המלוואח ומשמין מנחת.
נעם ר. חבר ופרחח צעיר (קראו את הבלוג שלו! יש שם מידע חשוב שמונגש באופן נהדר לכל הרמות) שמרבה לחטט במקומות שונים מתזמן את ההענות לדיווחים שהוא מדווח לפי הכנת מאפים. כשהוא מבצע הסגרה של באג אבטחתי חמור, הוא מתחיל להכין מאפים. כיוון שהכשרון הקולינרי שלו יותר מורכב משלי – המאפים שהוא מכין הם קשים וארוכים להכנה. למרבה הצער, הוא מספיק לעשות סמבוסק באפיה איטית במילוי חצילים עד שמישהו חוזר אליו וגם אז אומרים לו ׳זה משהו קטן׳ או ׳זה לא רלוונטי׳ או ׳התקלה שמצאת לא משפיעה על האתר׳. יש לנו שלל של תירוצים של מנהלי פיתוח ואבטחה לבאגים עם השלכה אבטחתית שמוצאים אצלם במערכת. עד כדי כך שאם לא מדובר בפרצה ממשית – אנחנו מעדיפים שלא לעשות הסגרה כי אין לנו כוח שוב להתווכח עם מנהלי פיתוח בורים שלא מבינים שכל תקלה שהיא מספיק חשובה כדי ש owasp (גוף האבטחה המוביל היום) יתייחסו אליה – היא תקלה חשובה. הבעיה היא שהפרטים הקטנים האלו והתקלות הקטנות האלו יכולות להוביל לקטסטרופה אמיתית. המקרה של ערוץ 10 הוא דוגמה נהדרת.
ובכן ידידי, הזוכה בגמר הגדול בתחרות "מי מהיר יותר – סמבוסק כרובית חריף ואיטי או מערך הסייבר הישראלי" הוא,
היא,
הוא,
היא,
סמבוסק כרובית חריף ואיטי!
הפרצה בשרת הממשלתי, אגב, עדיין פתוחה גם שלוש ורבע שעות אחרי הדיווח pic.twitter.com/WjfedwdUUz— Noam R (@noamr) May 30, 2018
לא נעים לי לדווח על פרצות או חולשות באמצעי תקשורת. מדובר בגופים שגם כך פועלים במציאות בעייתית, נתונים לאיומים ולא סובלים מעודף כסף. את ערוץ 10 אני מחבב במיוחד ולפיכך לא נעים לי לספר שבראשון לאוגוסט בשעה 23:00 ארעה השחתה של אתר הערוץ. במקום לראות את תכני הערוץ, הגולשים לאתר יכלו לראות כתבות המתרברבות בהצלחת ׳צבא הסייבר של תימן׳ במתקפה על ׳8200׳.
צילום המסך הזה נעשה על ידי סמי עבד אלחמיד כתב ערוץ 10:
מאמצים להגיע להסכם הודנה עם הצבא התימני האלקטרוני עוד הלילה ושיחרור כל הטקסטים pic.twitter.com/jDbHTxL55W
— sami abed alhamed سامي عبد الحميد (@samiaah10) August 1, 2018
ההתקפה הזו חמורה תדמיתית וגם גרמה לנזק כספי. נכון, אם התימנים היו יותר זדוניים וסבלניים – הם היו יכולים לעשות נזק חמור יותר – אבל נעשה כאן נזק משמעותי. הנזק הזה היה יכול להמנע אם היתה הקפדה על הפרטים הקטנים – במקרה הזה על כלל בסיסי אחד.
ניתוח המתקפה התימנית
כל מה שאני כותב כאן הוא קצת ספקולציה, כי לא עשיתי פורנזיקה. כאמור נעזרתי רבות בנעם שהיה גם אשכרה ער כשהיתה את המתקפה ולא נחר בשלווה. בגדול, התימנים ירו את כל מה שיש להם על ערוץ 10. ייתכן שהשתמשו בסקריפטים פשוטים כדי לבצע את המתקפה – כלומר מתקפה בלי ידע טכני משמעותי. כאשר משתמשים במתקפה כזו, הרבה פעמים לא מצליחים להוריד את האתר או לגרום לו לנזק – אבל אפשר לקבל מידע מוצלח וזה בדיוק מה שהתימנים קיבלו. אחת המתקפות גרמה להודעה שגיאה באתר.
מה הבעיה עם הודעת שגיאה? הודעות שגיאה יכולות לגרום לחשיפת מידע קריטי. שימו לב למשל להודעת השגיאה הזו שנחשפה על ידי ההאקר הקקמייקה ׳שמעון ריקלין infosec` כאשר הוא חיטט בשירות סמס של ספקית גדולה:
לעין הלא מיומנת, אפשר לחשוב שמדובר בהודעת שגיאה סטנדרטית. אבל מי שמבין מעט בתכנות יכול לראות כמה דברים חשובים מאוד – למשל נתיב הקובץ, שמו, חשיפת גרסת ה-PHP ועוד. אחת ההתקפות של התימנים זעזעה את מסד הנתונים וגרמה לאתר להדפיס את פלט השגיאה הבא:
צילום המסך באדיבות נעם שהיה מספיק עירני.
בהודעת השגיאה הזו היו פרטים עסיסיים במיוחד ובמיוחד פרטי החיבור למסד הנתונים. ברגע שלתימנים היו את פרטי החיבור (גם לכל מי שראה את הודעת השגיאה) הם יכלו להתחבר לאתר ולשנות את התכנים כרצונם. וזהו, כך הושחת האתר.
הפרטים הקטנים הם הכי חשובים
כשאנו באים למנהל פיתוח ואומרים לו שהודעות השגיאה חשופות לחלוטין, הדבר הראשון שהוא יגיד זה ״זה לא משמעותי״ או ״זה לא מעניין״ או (המשפט החביב עלי) – ״זו אכן בעיה אבל לא משהו מהותי״. אני מת על אנשים שמחליטים לבד מה ״מהותי״ ומה לא. לי יש כלל אצבע אחד – אם זה מספיק חשוב ש OWASP – גוף האבטחה המוביל בעולם יזכיר את זה בדיווחים שלו – אז זה מהותי. ואכן, OWASP מדווח על אופן טיפול בתקלות במאמר נרחב. בגדול – לא מסגירים תקלות בכלל באתר שנגיש ברשת. למה? הנה – הדוגמה הזו. כי כל פריט מידע שאנחנו נותנים יכול להוביל למתקפה.
אני אדגים עם פרצה ששמעון ריקלין infosec מצא באתר של עו״ד נוגה ויזל. האתר של עורכת הדין מצהיר בכל בקשה על גרסה ה PHP שלו. לכאורה לא משהו ״מהותי״, נכון?
הכירו את החלאה התורנית עוכרת הדין נוגה ויזל
תובעת את @guylerer על זה שהוא מראה שהיא חלאה
צוחקת בפייסבוש שלה על זה שהיא סופרת את הדולרים
חבל שהיא לא משקיעה כמה מהם באתר שלה
happy hunting! pic.twitter.com/d3NzHRC3qw— שמעון ריקלין infosec (@Riklin10Infosec) December 26, 2017
הבעיה היא שהגרסה של ה-PHP הזו היא ישנה ומכילה מספר פרצות שכל אחד עם ידע טכני מינורי יכול להוריד כלי ולנצל אותה לצרכיו.
איך מתמגנים מדבר כזה?
הקורא הפשוט יכול להתמלא באימה ויאוש -אבל מתכנת עם ניסיון מינימלי אמור לדעת איך למנוע תקלות כאלו והקלות של הפתרון היא מגוחכת ויכולה להיות מובנת גם לאנשים לא טכניים בעליל. בגדול – באתר PHP כמו האתר של ערוץ 10 יש קובץ הגדרות שנקרא php.ini. הוא לא ארוך במיוחד והוא מאוד מוכר לכל מתכנת PHP. שם יש שורה שצריך להקפיד עליה:
error_Reporting = off
כן, בגדול זה הכל.
וכמובן שאפשר לעשות את זה בכל פלטפורמה שהיא. למשל אם יש לכם node.js\express – הקפידו שכל השגיאות לא יגיעו למשתמש באמצעות תפיסת כל השגיאות עם middleware.
ואיך נמנעים משגיאות כאלו? ראשית אתר OWASP הוא התחלה טובה לכל מתכנת שרוצה לשפר את היכולת שלו. אבל נדרש ממתכנת, בטח ובטח ממתכנת מנוסה – לקרוא גם ספרים, להגיע למיטאפים ולקרוא קבוצות מקצועיות. מי שמעוניין בספרים – ב-15$ אפשר לרכוש ממש עכשיו חבילה ענקית של ספרי אבטחה מומלצים בהאמבל-בנדל. אם אתם מתכנתי node, אני ממליץ בחום רב על הספר של לירן טל על אבטחת מידע ב-node.js שהוא קצר וקולע וגם זול יחסית. מי שרוצה להגיע לכנס – אני הולך לדבר על אבטחת מידע בכנס רברסים (יחד עם רבים וטובים אחרים) ועלות הכניסה – 50 שקלים בלבד ליום שלם. הקבוצה המקצועית הטובה ביותר שאני מכיר לענייני אבטחה היא DC9723 המעולה בפייסבוק (כן, כן).
שיפור הידע המקצועי באמצעות הגעה למיטאפים, כנסים, קריאת ספרים, התעדכנות בקבוצות מקצועיות וכו׳ היא קריטית לכל מתכנת או מנהל פיתוח. הדבר הכי חשוב הוא לזכור שכמעט כל דבר הוא מהותי. אתם לא אנשים טכניים, קיבלתם דיווח על תקלת אבטחה ומנהל הפיתוח/המתכנת אומר לכם ש״זו בעיה לא מהותית״? תתחילו לדאוג.
5 תגובות
הודעת השגיאה של שירות הסמס חושף את הפריימוורק של ה php שהם עובדים איתו (codeigniter) בלי להיות מומחה אבטחה, המידע הזה יכול לשמש את התוקף כדי לחפש פרצות ידועות ב codeigniter
עוד פשע שלהם שנחשף הוא התחברות ל־mysql כ־root. משתמש מוגבל כנראה שלא היה מציל אותם מהפריצה אבל יכול למנוע פגיעה בבסיסי נתונים נוספים שעל אותו שרת.
wtf? איזה מין הודעת שגיאה זאת שמדפיסה פלט של פרטי חיבור למסד הנתונים? באיזה מצב זה קורה?
שאלה, רשמת פעם באיזה פוסט שזה לא קריטי לאבטח COOKIES ב HTTPS (מה שנקרא שיעברו ב SECURE ONLY), אפשר להבין למה ?
אם כתבתי כזה דבר זה אם כל הטעויות ואשמח אם תגיד לי איפה כדי שאוכל לתקן במהירות האפשרית.