אבטחה בדרופל - Drupal Security

אבטחה בדרופל - Drupal Security

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

האנליזה כוללת מידע היסטורי על נתוני פגיעות של דרופל וטכניקות טיפול, סיכוני אבטחה נפוצים וקריטיים, והתהליכים הקהילתיים הייחודיים לדרופל. נדבר על הממשקים ושיטות הטיפול בדרופל 6 ובדרופל 7, וננתח את התרעות האבטחה משנת 2005 עד מרץ 2010.

הליבה של דרופל – אוסף הממשקים הפונקציונליים והמודולים הבסיסיים, היא המנוע שמאחורי מאות אלפי אתרים באינטרנט, ממשיך לגדול בהתמדה ולהשתלב עם טכנולוגיות שבחוד החנית של הטכנולוגיה. מגובה על ידי קהילה עולמית של מפתחים, צוות האבטחה של דרופל תומך בקוד המאוחסן ב-drupal.orgהכולל את הליבה (Core)ואלפי מודולים (Modules)ועיצובים (Theme)שנתרמו על ידי הקהילה. התרעות אבטחה פורסמו ומגלות אזורי פגיעות וחולשות בליבה ובקוד שנתרם על ידי הקהילה, וכן הצעות ופתרונות לטיפול.

דרך קהילה דינמית של מומחים ואוהדים, אבטחת הממשקים (API)הבסיסיים של דרופל התחזקה במשך השנים כדי לטפל בפגיעויות אבטחה (security vulnerabilities)רבות. מערכת הדרופל מטפלת בסיכוני האבטחה הקריטיים, כולל עשרת הסיכונים המובילים שזוהו על ידי  OSWAP(The Open Web Application Security Project),  פרויקט האבטחה של יישומי הקוד הפתוח, תוך שימוש בשיטות שיש עליהן פיקוח שוטף. הוכח שדרופל היא פתרון מאובטח וחזק לצרכי חברות קטנות כגדולות.

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

דרופל ואבטחה בדרופל – סקירה כללית

פרויקט דרופל מורכב משני חלקים עיקריים: (1) קוד הליבה ו(2) אלפי מודולים ועיצובים שנתרמו על ידי הקהילה, ומאוחסנים באתר drupal.org. נדיר המצב שבו אתר דרופל משתמש רק בליבה של דרופל. רוב האתרים משתמשים במודולים שנתרמו על ידי הקהילה, או בקוד שפותח באופן עצמאי. יותר ויותר, דרופל נארז עם קוד שאינו מופיע באתר drupal.orgומופץ כחבילה נפרדת. קוד זה, הידוע בשם "הפצות" (Distribution), יש לו לעיתים רבות שם ייחודי אבל הוא מדגיש את העובדה שהוא נבנה בדרופל. לעיתים, פרויקטים אלו כוללים שינויים בליבה של דרופל כדי לשפר את הביצועים, לחזק את האבטחה, או לתקן תקלות ספציפיות.

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

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

איך דרופל  מטפל בסיכוני אבטחה?

דרופל בנוי סביב קבוצה עשירה של ממשקים. איך דרופל מטפל בסיכוני האבטחה הנפוצים?

הזרקה (SQL Injection)

לדרופל 6 יש שכבת התממשקות חזקה לבסיס הנתונים כדי להגן נגד התקפות הזרקת SQL. בדרופל 7 קיים ממשק אובייקטלי לבסיס הנתונים שמקשה אף יותר על למפתחים ליצור חורי אבטחה בצורה בלתי מודעת. שכבת הממשק שמתווכת בין דרופל למערכת הקבצים מגבילה את המיקומים שבהם ניתן לכתוב קבצים ומשנה סיומות קבצים אשר יש סיכוי שהשרת יוכל להריץ.

XSS – Cross Site Scripting

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

הזדהות שבורה וניהול Session(Broken Authentication and Session Management)

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

התייחסות ישירה לא מאובטחת לאובייקט

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

Cross Site Request Forgery- CRSF

דרופל בודק את תקינות כוונות המשתמש בפעולותיו תוך שימוש בשיטות סטנדרטיות בתעשייה. פעולות טיפוסיות בעלות תופעות לואי (כמו אלו שמוחקות אובייקטים מבסיס הנתונים) מבוצעות בדרך כלל דרך HTTP POSTכדי שהפרמטרים לא יופיעו בתוך כתובת ה-URL. ממשק הטפסים של דרופל מיישם אסימונים (tokens) כדי להגן מפני בקשות CSRFבבקשות Post. פעולות פחות חשובות יכולות למנף את ייצור האסימון החד-פעמי ואת בדיקות תקינות של ממשק הטפסים ועדיין להשתמש ב-HTTP Get.

הגדרות אבטחה לא תקינות

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

כישלון בהגבלת הגישה לכתובות URL

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

הפניות URL  שלא עברו בדיקות תקינות (Unvalidated URL redirects and forwards)

לא ניתן להשתמש בהפניות פנימיות של כתובת URLכדי לעקוף את התפריט הפנימי של דרופל ואת מערכת בקרת ההרשאות.

קוד פתוח

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

מצב האבטחה בדרופל

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

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

מקורות להרחבה

המאמר מבוסס על White paper באתר Drupal Security Report, שפורסם ב-27/7/2010.
  http://drupalsecurityreport.org/sites/drupalsecurityreport.org/files/drupal-security-white-paper-1-1.pdf