היסטוריה - הסבר על SMB1 והמלצות האם לכבות / להדליק, ובכלל המלצות אבטחה

פורום רשתות, IT ומחשוב כללי - רשתות, ראוטרים, מחשבים ניידים, אביזרים וכו'.
שלח תגובה
NegativeIQ פותח השרשור
חבר מביא חבר
חבר מביא חבר
תגובות: 4485
הצטרף: דצמבר 2005
נתן תודות: 12 פעמים
קיבל תודות: 578 פעמים

שליחה #1 

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

אז קודם כל - SMB (מוכר גם כ-CIFS) הוא הפרוטוקול ש-Windows משתמש בו לצורך שיתוף תיקיות ברשת המקומית (זה הפרוטוקול שאתם משתמשים בו כשלוחצים על האייקון של Network או כשניגשים למחשב עם computername\\). אם יש לכם כמה מחשבים בבית סיכוי סביר שתרצו להשתמש בו כדי להעביר קבצים בין המחשבים שלכם לבין עצמם (במקום להעביר קבצים על USB או גרוע מכך דרך האינטרנט). הפרוטוקול משתמש בעיקר בפורט 445 (יש עוד פורטים לצרכים שונים אבל נעזוב את זה בינתיים).

פרוטוקול SMB המקורי (היום נקרא SMB1) הוא עתיק! הוא למעשה פותח בשנות ה-80 ונעשה בו שימוש במערכות כמו OS/2, Windows 3, חבילת LanMan ל-DOS ועוד מערכות שרוב האנשים בני דורנו אפילו לא שמעו את השם שלהן.
עכשיו הנה הדבר המעניין - למעט כמה התאמות קטנות עד Windows XP / Server 2003 (כולל) הפרוטוקול נשאר כמעט ללא שינוי (במשך כמעט 30 שנה!).
השינוי הענקי הראשון נעשה ב-2006 כאשר הופיעה SMB2 (נתמך לראשונה ב-Windows Vista) ומאז יצאה גרסה חדשה של הפרוטוקול כמעט עם כל גרסה של Windows (ספציפית SMB 2.1 עם Windows 7, גרסה SMB 3.0 עם Windows 8 וגרסה SMB 3.1 עם Windows 10). בנוסף קיימות תוכנות צד ג' שמאפשרות שימוש בפרוטוקול ממערכות שאינן מבוססות Windows (המפורסמת שביניהן היא Samba, רצה על לינוקס ומערכות נוספות תואמות UNIX).
ככל שמדובר ב-Windows קיימת תאימות לאחור - כל גרסה של Windows יכולה "לדבר" גם בכל הגרסאות הקודמות של SMB, כשהמטרה היא להשתמש בגרסה המשותפת החדשה ביותר (לדוגמה בשיתוף תיקיה בין שני מחשבים ששניהם Windows 10 ייעשה שימוש ב-SMB 3.1, אבל בשיתוף בין מחשב אחד שהוא Windows 10 והשני Windows 7 ייעשה שימוש ב-SMB 2.1, הגרסה הגבוהה ביותר ש-Windows 7 תומך בה. Windows 10 יודע להשתמש בגרסה הזאת כדי שהשיתוף הזה יהיה אפשרי).

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

עכשיו נעבור לעניין שרובכם בטח חיכיתם לו - הנושא של אבטחה. בעשורים האחרונים התפרסמו כמה פרצות זוועתיות בפרוטוקול SMB1. הסוג הכי נוראי של פרצה שיכול להיות הוא מסוג Remote Code Execution (להלן RCE) ברכיב השרת של הפרוטוקול (הצד שמשתף את התיקיה) - פרצה מהסוג הזה מאפשרת בעצם להשתלט לגמרי מרחוק על כל מחשב שיש לו את הפורט פתוח, "ללא מגע יד" בצד של המותקף.
הפרצה הראשונה מהסוג הזה התפרסמה ב-2003 וכמה חודשים אחר-כך כבר היה Malware בשם Blaster שניצל אותה כדי להתפשט. באותה תקופה לרוב האנשים היה רק מחשב אחד בבית (טלפונים סלולריים היו אז עידן הנוקיה), ולרוב הוא היה מחובר ישירות לאינטרנט ללא NAT. ב"ימי השיא" של Blaster מספיק שהתחברתם לאינטרנט ללא Firewall ו/או התיקון לפרצה ותוך 5 דקות לכל היותר כבר היה לכם את הוירוס על המחשב. למרבה המזל הנזק לא היה קטסטרופלי כי כל מה ש-Blaster היה עושה זה להתפשט הלאה.
הפרצה האחרונה מהסוג הזה היתה בשנה שעברה, והוא נוצל ע"י ה-Ransomware הידוע לשמצה WannaCry. אמנם היקף הזיהום לא היה גדול כמו ב-2003 (ולו כי יש הרבה יותר שימוש ב-FW וב-NAT) אבל אם הותקפתם, כל הקבצים במחשב שלכם הוצפנו...

כל הפרצות הנ"ל היו בגרסה 1 של הפרוטוקול ולכן אחת התגובות המיידיות של מייקרוסופט היתה לאפשר כיבוי של התמיכה בגרסה הזאת (בהתחשב בעובדה ש-SMB2 הופיע ב-2006 לכאורה עבר מספיק זמן כדי להפסיק להשתמש ב-SMB1, אבל תקראו בהמשך למה זה רק "לכאורה"). האפשרות לבטל את התמיכה ב-SMB1 קיימת החל מ-Windows 7, והחל מ-Windows 8 האפשרות הזאת נגישה בקלות דרך Control Panel). בעקבות התקפת WannaCry האחרונה, ב-Windows 10 החל מ-Fall's Creators Update התמיכה ב-SMB1 כבויה כברירת-מחדל בהתקנות חדשות (עדיין אפשר להדליק אותה) ונראה שאחד העדכונים מאז כיבה אותה גם בהתקנות קיימות (אם כי את צד השרת בלבד, ב-Windows 10 ניתן להפעיל ולכבות את התמיכה ב-SMB1 בצד השרת והלקוח בנפרד).

אז מה ההמלצות ומה צריך לדעת?
בגדול אם אין לכם סיבה טובה להדליק את SMB1 עדיף להשאיר אותו כבוי (או לכבות אותו אם הוא כבר דולק). יש שתי סיבות אפשריות שתרצו להדליק את SMB1 - הראשונה זה אם רחמנא ליצלן עדיין יש לכם מחשבים עם Windows XP, שלא תומך ולא יתמוך באף גרסה חדשה יותר). הסיבה השניה היא אם יש לכם רכיבי רשת שאינם מחשבי Windows שניגשים לתיקיות משותפות ואולי לא תומכים בגרסאות החדשות של הפרוטוקול. מקרים נפוצים הם אפליקציות ניהול קבצים ל-Android, שבמקרים רבים כוללות תמיכה מובנית ב-SMB, וכן נגני מדיה מסויימים. אולי המקרה הכי בולט הוא Kodi, שתומך באופן מובנה ב-SMB אבל נכון ליום כתיבת שורות אלה אפילו הגרסה היציבה האחרונה שלו (17) תומכת רק ב-SMB1 הישן.

אם אתם מוצאים את עצמכם במצב שאתם חושבים להפעיל SMB1 בגלל אחת הסיבות האלה, קודם כל זה לא סוף העולם, אבל חייבים להקפיד על כמה דברים לפני שעושים את זה - קודם כל להריץ Windows Update ולהתקין את כל העדכונים הזמינים ל-Windows. נכון להיום אין אף פרצה מהסוג הזוועתי שתיארתי קודם שלא יצא לה תיקון. למעשה באופן חריג מיקרוסופט הוציאה תיקון אפילו ל-Windows XP, שכבר לא נתמך שנים (חשוב לציין שמשום מה ספציפית ב-XP מיקרוסופט לא העלו את התיקון ל-Automatic Updates ולכן צריך להתקין אותו ידנית). יש כמה בעיות אבטחה אינהרנטיות ל-SMB1 (אינהרנטיות כלומר שהן חלק מהתכנון של הפרוטוקול ולכן לא ניתן לתקן אותן) - החמורות שבהן מאפשרות לתוקף להתחבר לתיקיה משותפת על המחשב שלכם בלי לדעת את הסיסמה, אבל הן דורשות נסיבות מיוחדות, לדוגמה שהתוקף כבר נמצא בתוך הרשת המקומית שלכם או שהוא מצליח לשכנע אתכם להתחבר ל"תיקיה משותפת" זדונית על המחשב שלו (אנקדוטה - הפרצה הזאת מכונה "הפרצה האיראנית" כי היא היא התגלתה ע"י חוקרים באיראן). בכל מקרה, נכון ליום כתיבת שורות אלה (אם הגעתם לכאן מחיפוש תבדקו את התאריך של ההודעה!) אם התקנתם את כל העדכונים ל-Windows אין פרצה ידועה שמאפשרת להשתלט לכם על המחשב בלי פעולה מצדכם גם אם SMB1 דולק (אפילו ב-XP) ולכן אם יש סיבה אמיתית להשתמש בו אין חשש להדליק - כמובן רק לאחר שהתקנתם את כל העדכונים. עם זאת אם אין סיבה אמיתית, מומלץ בחום להשאיר את זה כבוי ולו רק כי זה עוד פרוטוקול רשת שאולי יהיו בו זוועות נוספות בעתיד ולכן אם אין סיבה שהוא יהיה פועל אז עדיף שלא.

הערה קטנה למשתמשי קודי - אם אתם משתמשים בקודי על מחשב Windows אז אלטרנטיבה קלה היא לא להשתמש ברכיב ה-SMB המובנה של קודי אלא פשוט למפות את התיקיה המשותפת עם הסרטים ככונן, ככה שתקשורת SMB תתבצע ברמת מערכת-ההפעלה (ובהנחה שאתם לא משתמשים ב-XP היא לא תהיה SMB1) וזה שקוף לקודי, שיראה את התיקיה ככונן מקומי. בלינוקס ניתן לעשות את אותו דבר ע"י התקנה של Samba ו-mount לתיקיה המשותפת כתיקיה מקומית - גרסאות עדכניות של Samba יודעות לעבוד עם גרסאות מתקדמות של SMB. האפשרות הזאת קיימת גם באנדרואיד אבל רק אם יש לכם root.

בלי קשר להאם SMB1 ספציפית פועל או כבוי יש עוד כמה דברים שחייבים לוודא -
* תוודאו שהפורטים של SMB (ספציפית 445 אבל תבדקו גם את 135, 137, 138, 139) לא פתוחים לאינטרנט. אם אתם מאחורי NAT (כמו 99% מהאינטרנט היום) אז כנראה שהם גם ככה לא פתוחים אבל תבדקו בכל אופן, אם אתם מחוברים ישירות לאינטרנט תחסמו את הפורטים ב-Windows Firewall. העובדה שנכון להיום אין פרצות ידועות ב-SMB1 שלא תוקנו והעובדה שנכון להיום עוד לא היו פרצות זוועתיות מהסוג הזה ב-+SMB2 לא מבטיחה בכלל שלא יהיו כאלו בעתיד (מהסיבה הזאת קריטי להמשיך לעדכן את Windows כל חודש). למעשה אפילו בלי פרצה בכלל - אם לא הגנתם על ה-Guest Access עם סיסמה או שהסיסמה חלשה, ברגע שהפורט פתוח אתם בעצם משתפים את התיקיות שלכם לא רק עם המחשבים ברשת שלכם אלא עם כל האינטרנט.
* הכללה של הסעיף הקודם - תבדקו בכלל איזה פורטים פתוחים לאינטרנט. כל פורט שאתם לא משתמשים בו, תחסמו ורצוי כבו לגמרי את האפליקציה שפותחת אותו. כל פורט פתוח לאינטרנט הוא פרצה פוטנציאלית. אם יש סיבה שהפורט פתוח לאינטרנט אז תדאגו לעדכן את האפליקציה שפותחת אותו, ובאופן אובססיבי - לפני כמה חודשים התפרסמה ידיעה על פרצה אפשרית ב-uTorrent. לא יודע עד כמה זה אמיתי אבל פרצה מהותית בתוכנה כזאת היא במובן מסויים עוד יותר גרועה מפרצה דומה ב-SMB - ולו בגלל שהפורט של תוכנות שיתוף קבצים כמעט תמיד פתוח לאינטרנט.
* למען השם תפסיקו להשתמש ב-Windows XP - זה נכון שספציפית בשנה שעברה מיקרוסופט הוציאה באופן חריג תיקון לפרצת האבטחה ב-SMB1 אבל ממש לא בטוח (ואפילו לא סביר) שזה יקרה גם בפעם הבאה.

שלח תגובה

חזור אל “רשתות, אינטרנט ו- Fiber”