הסלמת הרשאות

תרשים המתאר הסלמת הרשאות. השיפוע כלפי מעלה בתחתית התרשים מתאר הסלמת הרשאות של משתמש רגיל להרשאות מנהל והחץ מתאר הסלמת הרשאות, מהרשאות מנהל להרשאות המאפשרות גישה לליבת המערכת.
הסלמת הרשאות (באנגלית: Privilege Escalation) הוא מונח המתאר ניצול באג, פגם בעיצוב או פיקוח במערכת הפעלה או יישום, כדי לקבל גישה מוגברת למשאבים אשר הגישה אליהם חסומה לאפליקציה או למשתמש ללא הרשאות. ניצול של טכניקות הסלמת הרשאות מאפשר למשתמש או לאפליקציה לקבל הרשאות גבוהות יותר מכפי שהוגדרו על ידי מנהל הרשת/מפתח האפליקציה.

== רקע ==
מרבית מערכות ההפעלה מיועדות לשימוש עם חשבונות משתמש רבים, אשר לכל אחד מהן הרשאות ספציפיות. ישנם משתמשים אשר לא יוכלו לקרוא קבצים, ישנם משתמשים אשר יוכלו לקרוא קבצים, אך לא יוכלו לערוך אותם וישנם משתמשים שיוכלו לקרוא ולערוך קבצים, אך לא יוכלו להריץ אותם. המונח הסלמת הרשאות (Privilege escalation) מבטא סיטואציה בה מתבצעת "הסלמה" של הרשאות המשתמש והוא מקבל הרשאות אשר הוא אינו זכאי להן. אותו משתמש יוכל להשתמש בהרשאות אלו על מנת למחוק קבצים, לחשוף מידע שאמור להיות נסתר מעיניו ואף להתקין נוזקות ותוכנות בלתי רצויות. לרוב, פעולה זו של "הסלמת הרשאות" תתבצע כאשר למערכת ישנו באג המאפשר לעקוף את האבטחה (כזו שמוגדרת במוצר או כזו שהוגדרה על ידי מנהל הרשת), או כאשר למערכת ישנו פגם בעיצוב, שיוכל, לצורך הדוגמה, לסייע למשתמש להגיע למידע שהוא לא אמור להגיע אליו ועמו לבצע את הסלמת ההרשאות. הסלמת הרשאות מתרחשת בשתי צורות:

א'. הסלמת הרשאות אנכית (Vertical privilege escalation): מונח המבטא פעולה של משתמש או יישום, בה הוא ניגש לאזור או למידע אשר שמור אך ורק למשתמשים בעלי הרשאות גבוהות. לדוגמה: משתמש A בוויקיפדיה אשר לו הרשאות סטנדרטיות לגשת לאזור B - אזור כתיבת הערכים, ניגש לאזור C בוויקיפדיה אשר שייך למשתמשים בעלי הרשאות ניטור. מונח זה ידוע גם בשם "העלאת הרשאות" (או באנגלית: privilege elevation).

ב'. הסלמת הרשאות אופקית (Horizontal privilege escalation): מונח המבטא פעולה של משתמש פשוט, כאשר הוא ניגש לאזור או למידע אשר שמור למשתמשים רגילים אחרים. לדוגמה: משתמש A ומשתמש B ברשת הם חברים לעבודה העובדים ברשת X, לכל אחד מהם יש הרשאה לבצע יצירת קבצים אישיים, קבצים אשר רק הוא יוכל לראות ולערוך. הסלמת הרשאות אופקית מתרחשת כאשר משתמש A משיג הרשאות לצפות ולערוך את קובצי משתמש B, ולא בגלל הסלמת הרשאות אנכית במערכת שמאפשרת לו להיות מנהל הרשת ולצפות בכל הקבצים ברשת, אלא בגלל הסלמת הרשאה ספציפית.

== הסלמת הרשאות במערכות Windows ==
כאמור, הסלמת הרשאות יכולה לנבוע ממגוון סיבות, החל מבאג ביישום או במערכת הפעלה ועד לכשלים לוגיים, לדוגמה, כאשר יישום עם הרשאות X ייפנה למשתמש עם הרשאות נמוכות משלו. הסלמת הרשאות בעקבות כשל לוגי נחשבת לנפוצה יותר מהמקרים האחרים, אך ניתן למצוא מקרים רבים גם של אירועי הסלמת הרשאות שנבעו מבאגים ופגמים במערכות הפעלה וביישומים. במהלך השנים נמצאו דרכים ושיטות רבות לביצוע הסלמת הראשות במערכות ההפעלה ממשפחת Microsoft Windows ובפסקאות הבאות נסקור את הבולטות שבהן<ref></ref>.

=== Bypass User Account Control ===
טכניקה נפוצה של הסלמת הרשאות היא שימוש במנגנון windows לבקרת חשבון המשתמש (user account control) המבצע הפרדה בין משתמשים רגילים למשתמשים בעלי הרשאות administrator. מנגנון זה מאפשר לכל היישומים לרוץ כברירת מחדל אך ורק עם הרשאות משתמש רגיל. על מנת לאפשר להן לרוץ תחת הראשות administrator יצטרך מנהל המערכת להגדיר זאת באופן ספציפי (או במקרה של משתמש סטנדרטי במחשב ביתי, לאפשר זאת במפורש ובאופן ספציפי). במקרה שהמנגנון אינו מגדיר הגנה ברמה הגבוהה ביותר, חלק מיישומי windows יוכלו לבצע הסלמת הרשאות או להריץ אובייקטים ממודל האובייקטים של הרכיבים תחת הרשאות מנהל. בנובמבר 2019 נחשפה חולשה במנגנון בקרת חשבון משתמש בגרסאות windows ספציפיות, אשר אפשרה לבצע הסלמת הרשאות אנכית גם כאשר מנגנון הבקרה מוגדר ברמה ההגנה הגבוהה ביותר. הרעיון מאחורי חולשה זו היא ניצולו של התהליך consent.exe האחראי על הדיאלוג Secure Desktop אשר רץ בכל פעם שאנו מריצים קובץ תחת הרשאות מנהל מערכת. תהליך ה-consent.exe רץ תחת מזהה NT_AUTHORITY\SYSTEM (מזהה ה-Local System, החשבון בעל ההרשאות הגבוהות ביותר במערכות windows) וחוקרי אבטחה מצאו דרך לגרום לניצול התהליך להרצת קבצים אחרים, על ידי ניצול התנהגות ספציפית של התהליך כאשר הוא זיהה קובץ עם מאפיינים מסוימים<ref></ref>.

=== Access Token Manipulation ===
טכניקה ידועה נוספת של הסלמת הרשאות היא ביצוע מניפולציה על אסימון הגישה בו משתמשת windows לאימות יוצר תהליך. כאשר תהליך מבצע משימה הדורשת הרשאות גבוהות, המערכת בודקת מי הוא יוצר התהליך והאם יש לו את ההרשאות המתאימות ועל פי זה מחליטה האם לאפשר לתהליך לרוץ או לא. מניפולציה של אסימון גישה היא שימוש בטכניקות קוד שונות בעזרתן גורם התוקף למערכת ההפעלה להאמין כי התהליך שייך למשתמש אחר, בעל הרשאות, ולא לתוקף אשר מהווה יוצר התהליך בפועל.

=== DLL search order hijacking ===
דרך נוספת לבצע הסלמת הרשאות במערכות windows, הוא ביצוע טעינה מוקדמת של ספריות קישור דינמי (Dynamic-Link Library). בשיטת תקיפה זו, יטמיעו התוקפים dll זדוני, עם שם זהה ל-dll לגיטימי אותו מערכת ההפעלה תחפש. התוקפים יטמיעו את ה-dll הזדוני במיקום בו מחפשת מערכת ההפעלה לפני שהיא מגיעה למיקום של ה-dll האמיתי ובכך יטעו את המערכת.

== הסלמת הרשאות במערכות Linux ==
=== Kernel Exploit ===
טכניקת תקיפה זו משתמשת בפגיעויות המתגלות בליבת לינוקס על מנת לעלות את ההרשאות של משתמשים במערכת להרשאות sudo. במהלך השנים נמצאו kernel exploit רבים ותקיפה זו נחשבת לפופולרית ונפוצה.

=== Exploiting SUDO Rights ===
טכניקה נפוצה נוספת של הסלמת הרשאות בLinux היא ניצול של תכונה במערכת Linux המאפשרת נתינת הרשאות sudo לפקודות ספציפיות. כך, שבמקרה בו מנהל רשת ייתן הרשאות sudo לפקודות find לצורך הדוגמה (פקודה שמסייעת למצוא קבצים במערכת, על פי פרמטרים של שם, גודל וסוג), יוכל משתמש בעל הרשאות רגילות להשתמש בפרמטרים של find לביצוע פקודות במערכת תחת הרשאות sudo, ההרשאה תחתיה רצה find.

== הסלמת הרשאות ביישומי אינטרנט ==
בנוסף למתקפות המבוססות על מערכות ההפעלה של השרתים, ביישומי אינטרנט קיימים פגיעויות הסלמת הרשאות נוספות רבות, הנובעים מxss, קובצי Cookie, ססמאות חלשות והגדרה לא נכונה של שרת ה-web.

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

מנגד, גם מתקפות הסלמת הרשאות אנכית קיימת ביישומי אינטרנט והיא נובעת לרוב מהגדרה לא נכונה של שרת ה-web, המביאה להסלמת הרשאות ולהרצת קוד מרחוק בעזרת שורה ארוכה של מתקפות כגון file Upload (פגיעות במנגנון העלאת הקבצים), או File inclusion ו-Directory traversal המאפשרות הזרקת קוד מרחוק או גישה למערכת הקבצים (בהתאמה) ועוד מתקפות רבות.

== פתרונות אבטחה ==
ישנם מספר כללים<ref></ref><ref></ref><ref></ref><ref></ref> אשר נקיטתם מבטיחה צמצום משמעותי של הסיכון להיפגע מהסלמת הרשאות ברשתות קטנות:
* הרצת כל התוכנות במערכת ההפעלה תחת ההרשאה המינימלית, כברירת מחדל.
* בחירת ססמאות חזקות לכלל המשתמשים ובמידת האפשר להשתמש באימות דו שלבי. כמו כן, יש להקפיד על חובת אימות נוסף לפני כל כניסה לתוכנה רגישה, כגון מסדי נתונים.
* יש להקפיד לעדכן את מערכת ההפעלה והיישומים המותקנים בה בה באופן תדיר.
* יש להקפיד לשנות את סיסמאות ברירת המחדל בנתבים, מתגים, מדפסות ובכל הציוד המשרדי ומוצרי הioT הקיימים ברשת.
* פעמים רבות 'תיקיות משותפות' מהוות הפתח עבור התוקף לביצוע הסלמת ההרשאות. הקפד לבדוק את תיקיות אלו ולוודא שרק המידע הרלוונטי למשתמשים הרלוונטיים נשמר בהם.
* בצע מעקב קפדני אחר הרשאות המשתמשים וחברותם בקבוצות במערכת. יש להקפיד שלכל משתמש תהיה אך ורק את הגישה הרלוונטית לו וחברותו תהיה אך ורק בקבוצות הרלוונטיות.
* כשעובד עוזב את החברה / תחום העבודה של עובד משתנה, הקפד למחוק את חשבונו / לעדכן את ההרשאות בהתאם.

== קישורים חיצוניים ==
* [https://www.digitalwhisper.co.il/files/Zines/0x01/DW1-1-PrivilegeEscalation.pdf Privilage Escalation], מגזין digital whisper

== הערות שוליים ==

קטגוריה:פרצות אבטחה
קטגוריה:מערכת הפעלה