הצפת SYN

ממוזער|שמאל|הצפת SYN על ידי מאלורי ("האיש הרע"). התוקף שולח מספר רב של חבילות SYN לשרת, אך לא עונה בחבילות ACK כנדרש. הקשרים נותרים חצי-פתוחים על השרת ומונעים מאליס, המשתמשת הלגיטימית, לגשת אל השרת ולקבל שירות.

בתקשורת נתונים, הצפת SYN (באנגלית: SYN Flooding) היא סוג של התקפת מניעת שירות המנצלת פרצת אבטחה במנגנון הקמת הקשר של ה-TCP. במסגרת ההתקפה התוקף שולח רצף של חבילות SYN למחשב המותקף ובכך מאלץ אותו לפתוח במקביל חיבורים רבים עד שלא נותרים לו משאבים לקבלת חיבורים חדשים. בכך התוקף מונע מהמחשב המותקף להעניק שירות למשתמשים אחרים ומשיג את מבוקשו.

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

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

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

כדי שכתובת ה-IP של התוקף לא תיחשף וכדי שלא ניתן יהיה לחסום את כתובת ה-IP הספציפית שלו ובכך לחסום את ההתקפה, התוקפים משתמשים על פי רוב בהונאת IP (באנגלית: IP Spoofing) ובכך לא מאפשרים הבחנה בין החבילות התמימות לבין החבילות התוקפות.

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

ניתן לחשב חסמים תאורטיים לקצב שבו תוקף יכול לשלוח חבילות SYN לפי סוג החיבור של המחשב התוקף:

 סוג החיבור  קצב מקסימלי (חבילות SYN לשנייה) מודם אנלוגי 87 ISDN, DSL  200 T1  2,343

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

אירועים בולטים
ב-5 בפברואר 2000 החלה הצפת SYN רחבת היקף על אתרי אינטרנט רבים שכללו בין היתר את CNN, eBay, יאהו ואמזון התקיפה נמשכה עד 11 בפברואר.

שנה לאחר מכן, בין 4 במאי ל-20 במאי 2001, חברת Gibson Research הותקפה מ-474 מחשבים שונים ברשת באמצעות הצפת SYN. ההתקפה הרוותה לחלוטין שני חיבורי T1 שהיו באחזקת החברה. ילד בן 13 לקח אחריות על ההתקפה.

התמודדות
קיימות דרכי התמודדות רבות עם התקפות אלו.

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

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

SYN פרוקסי
ניתן להשתמש גם בפתרונות חיצוניים לשרת, באמצעות מנגנון הנקרא SYN-פרוקסי (SYN Proxy). בפתרון זה מציבים חומת אש לפני השרת, כזו בעלת קיבולת קשרים חצי פתוחים גדולה יותר, שתשמש כחוצץ בינו לבין התוקף. חומת האש תענה על חבילות ה-SYN הנשלחות לשרת בהודעת SYN-ACK שהוא מרכיב בעצמו, ורק עם קבלת ה-ACK הסופי מהלקוח, כשחומת האש משתכנעת שמדובר בלקוח אמיתי, היא שולחת את החבילות לשרת ומאפשרת לו ליצור את החיבור עם הלקוח.

עוגיית SYN
פתרון לוגי אחר הוא שימוש בעוגיית-SYN (באנגלית: SYN Cookie). טכנולוגיה זו מאפשרת לשרת להימנע לחלוטין מהקצאת משאבים לקשרים חצי פתוחים על ידי הוספת נתונים לחבילת ה-SYN-ACK הנשלחת חזרה ללקוח באופן שמאפשר לשרת לחשב את המספר הסידורי שהוגרל לאחר קבלת ACK ובכך ליצור את הקשר באופן שקוף.

קישורים חיצוניים

קטגוריה:התקפות מניעת שירות