בזמן האחרון צצו כמה בעיות אבטחה מוזרות. מה שמוזר בהן זה לא הבעיות עצמן, אלא העובדה שהבעיות הינן בנות מספר שנים, ועדיין תקיפות.
הבעיה הראשונה הינה התקפת Land על חלונות XP. זוהי התקפה בת לפחות חמש שנים, סביר להניח שיותר. התשובה של מיקרוסופט? “זו לא בעיית אבטחה, כי המחשב לא קורס, ואחרי שההתקפה מסתיימת המחשב ממשיך לעבוד כרגיל. תשימו firewall”. מה? איך תריץ שרת אם ה-firewall שלו חוסם את כל הפורטים?
לצורך ההקשר, שליחת packet בודד לכל port פתוח של המכונה יכולה לגרום למכונה להשקיע את כל משאבי המעבד שלה בלשלוח תעבורת רשת לעצמה. תהליכים רגילים לא מצליחים לפעול במהלך כשלושים שניות. ראוי לציין שדבר לא מונע ממני לשלוח חבילה שניה אחרי שלושים שניות. גודל החבילה הוא 40 בתים. אני חושב שכל אחד יכול להבין שלא צריך נפח תקשורת גדול מידי כדי להביא כל חוות שרתים סבירה לידי כניעה מוחלטת.
אבל מה שמעניין פה זה לא התגובה של מיקרוסופט. כבר התרגלנו לזה שמיקרוסופט לוקחת בעיות אבטחה אמיתיות וטוענת שהן כלום. מה שמטריד פה זה שזו בעיה כל כך ותיקה, עד שכבר שכחנו לבדוק אם היא עדיין קיימת.
ולפני שאוהדי הלינוקס מבין קוראי מוציאים את הדגלים, מסתבר שבלינוקס יש בעיות דומות. לא באותה רמה – הפעם מדובר על מישהו שצריך להיות בעל חשבון רשום על המכונה. עדיין, התקפה שאני לראשונה שמעתי עליה ב-1991 (כן, כן, לפני כמעט 14 שנה) עדיין עובדת על רוב ההפצות המודרניות של לינוקס. לא על דביאן.
בניגוד למקרה המיקרוסופטי, לא מדובר פה בבאג בקרנל. מדובר פה בניהול משאבים נכון. אנשי דביאן (גם FreeBSD ו-OpenBSD) כיוונו את המערכות להיות חסינות לבעיה הזו כברירת מחדל. אנשי RedHat, Gentoo ו-Mandrake לא חשבו על ההתקפה הזו כאשר כיוונו את המערכות להתקנה. היא פשוט ישנה מידי.
רק כדי להסביר, fork הינה פקודה שמייצרת תהליך חדש במערכת ע”י שכפול התהליך הנוכחי. fork bomb הינה תוכנית קטנה אשר מייצרת תהליכים בלולאה. למעשה, מדובר בתוכנית הפשוטה הבאה:
#include <sys/types.h>
#include
int main()
{
while(1)
fork();
}
זהו. רק לקמפל ולהריץ כמשתמש פשוט, והרבה מהפצות הלינוקס המודרניות יורדות על בירכיהן. כדי למנוע את ההתקפה, יש להגביל את כמות התהליכים שמשתמשים לא חזקים יכולים להריץ בו זמנית.
אני רק אציין במאמר מוסגר שבעוד שמכונת הדביאן שלי מגבילה אותי ל-4096 תהליכים כאשר אני מתחבר בצורה טקסטואלית, אני לא מוגבל כאשר אני מתחבר בצורה גרפית או דרך SSH. עוד לא בדקתי את היכולת להריץ fork bomb. אני אדווח אחרי שאני אשמור את הנתונים שלי.
צריך להרים פרוייקט של “רשימת קניות” של בדיקות שצריך לעשות על מערכת לפני שמכריזים עליה כשירה לעבודה.
שחר