פרצת אבטחה חמורה מראה כמה חשוב להכיר את התשתית של האתר שלכם

פרצת אבטחה מביכה במיוחד באתרי המרות מראה כמה זה חשוב להכיר את התשתית של האתר שלכם
image2pdf - אחד האתרים שנפרצו

פרצת אבטחה חמורה שנחשפה ב-zdnet לא רק מדאיגה, אלא גם מראה כמה זה חשוב להכיר את התשתית של האתר שלכם. אני אנצל את הפוסט הזה על מנת להסביר על הפרצה וגם על מה שאפשר ללמוד ממנה (וכן, גם קצת קוד). הפרצה דווחה ל-zdnet על ידי חוקר אבטחה שלא רצה להזדהות. חוקר האבטחה גילה ששרת המשרת מאות אתרי pdf כולל גרסה ישנה של הספריה image magick שמישהו ניצל על מנת להשאיר לעצמו פתח בשרת. נשמע משעמם, נכון? זהו שלא.

image2pdf - אחד האתרים שנפרצו
image2pdf – אחד האתרים שנפרצו

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

חוקר האבטחה גילה שהשרת השיתופי שעליו יושבים עשרות אתרים פופולריים כאלו מכיל ספריה שנקראת image magick. הספריה הזו, שפופולרית מאוד בקרב מפתחי PHP (כן, גם וורדפרס) משמשת למניפולציות שונות בקבצים גרפיים. מה הבעה? הבעיה היא שבשנים האחרונות התגלו אינספור פרצות במוצר הזה שאיפשרו לכל אחד להריץ קוד משלו על השרת שיש בו את הספריה הזו. איך זה עבד? אחת הפרצות בעצם איפשרה לתוקף ליצור קובץ עם הנחיות לפתיחת שרת ולהעלות אותו כתמונה. משהו בסגנון הזה:

push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.1/oops.jpg"|touch "/tmp/hacked)'
pop graphic-context

כאשר כל מה שיש אחרי המרכאות של oops.jpg רץ. במקרה הזה זה יצירת תיקיה בשרת בשם tmp/hacked אבל זה יכול להיות יותר חמור בהרבה. ברגע שאני יכול לשתול קובץ בשרת – השרת הזה שלי. אני יכול לשים שם אפילו קובץ שיאפשר לי לקבל גישת SSH על המכונה – – כלומר שליטה מלאה על האתר. מי שרוצה להבין יכול לראות את הדוגמה הזו:

https://www.youtube.com/watch?v=sKI3PnOGMN8

אז התוקף גילה שעשרות אתרים שממירים PDFים ותמונות נמצאים על שרת שיש בו גרסה ישנה של התוסף. מה שהוא עשה זה להעלות מספר תמונות לאתרים ולהשאיר פורט פתוח. החוקר גילה את הפורטים הפתוחים של מספר תוכנות מעקב שהיו על השרת. כלומר לא רק שפרצו לכל האתרים האלו, אלא גם האזינו למסמכים שאנשים תמימים העלו אליהם במשך תקופה מאוד ארוכה. זה יכול להיות מסמכים מסווגים/עסקיים, תמונות מביכות ועוד דברים. לעולם לא נדע. התוקף לא רק יכול לדעת איזה קבצים עלו אלא מה כתובת ה-IP ופרטים נוספים של מי שהעלה. כאמור, הוא שולט בשרת ובכל הפרטים.

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

האם אתם משתמשים ב-imagemagick? ייתכן. קל למצוא אם אתם משתמשים ב:

<?php phpinfo(); ?>

שמראה את כל התוספים שיש לכם עם הגרסאות על שרת שמריץ PHP. כל מה שצריך לעשות זה להעתיק את השורות האלו לקובץ PHP ולהציגו באמצעות הדפדפן.

קוד נוסף הוא:

$v = Imagick::getVersion();
preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $v);
if(version_compare($v[1],'6.2.8')< =0){
   print "Your ImageMagick Version {$v[1]} is '6.2.8' or older, please upgrade!";
}

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

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

חשוב להקפיד על שרת שיתופי ברמה מספיק טובה או שרת מנוהל באופן מקצועי יותר.

פוסטים נוספים שכדאי לקרוא

תמונה מצוירת של רובוט שמנקה HTML
יסודות בתכנות

סניטציה – למה זה חשוב

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

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