Title

מסמכים קשורים
הגנה - שקפי הרצאה

סדנת תכנות ב C/C++

הגנה - שקפי תרגול

Office 365 ProPlus בחינם לסטודנטים באוניברסיטת בן גוריון בנגב הוראות סטודנטים באוניברסיטת בן גוריון בנגב יכולים להוריד ולהתקין את חבילת התוכנה Office

שקופית 1

תכנות מונחה עצמים א' – תש"ע

שאלהIgal : מערכים דו מימדיים רקורסיה:

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

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

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

PowerPoint Presentation

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

מערכות הפעלה קורס מס'

תרגול 1

מבוא למדעי המחשב

Microsoft PowerPoint - Lecture1

PowerPoint Presentation

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

מדריך למרצים ומתרגלים 1

PowerPoint Presentation

Homework Dry 3

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

PowerPoint Presentation

Microsoft Word - c_SimA_MoedB2005.doc

מצגת של PowerPoint

מקביליות

שאלהIgal : מערכים דו מימדיים רקורסיה:

Microsoft PowerPoint - rec3.ppt

Microsoft Word - Ass1Bgu2019b_java docx

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

PRESENTATION NAME

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

תרגול מס' 1

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

שאלהIgal : מערכים דו מימדיים רקורסיה:

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

Slide 1

Microsoft PowerPoint - CE_Candidates_2011.ppt [Compatibility Mode]

מבוא לאסמבלי

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

PowerPoint Presentation

מבוא למדעי המחשב

מבוא לתכנות ב- JAVA תרגול 7

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

מבוא למדעי המחשב - חובלים

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

Titre du document en police Sodexo

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

6 סיבות מדוע הכרחי לקחת אחריות על גיבוי ה Office חשיפת סיבות קריטיות מדוע ארגונים זקוקים לגיבוי נתוני ה Office 365 -

(Microsoft Word - SQL\353\351\345\345\365 \341\361\351\361 \360\372\345\360\351\355 \ doc)

PowerPoint Presentation

תוכן העניינים

מבוא למדעי המחשב - חובלים

שעור 6

Slide 1

תוכן העניינים

Slide 1

מערכות הפעלה

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט

Slide 1

מהוא לתכנות ב- JAVA מעבדה 3

מערכות הפעלה

מסמך1

Overview of new Office 365 plans for SMBs

מבוא למדעי המחשב

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

מיכפל

Microsoft PowerPoint - lec2.ppt

מקביליות

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

Slide 1

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

Microsoft PowerPoint - rec1.ppt

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

ISI

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

Slide 1

Slide 1

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

Microsoft Word IG Lab - Configure Wireless Router in Windows Vista.docx

Microsoft PowerPoint - meli-iso.ppt

PowerPoint Presentation

Bitlocker_TC

מצגת של PowerPoint

Exam_A_final

WinZIP תוכנה לדחיסת קבצים ספטמבר 2007

הגשה תוך שבוע בשעת התרגול

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

התגוננות בפני כוחות האופל

Cloud Governance הכלי למזעור סיכונים ומקסום התועלת העסקית

תרגיל בית מספר 1#

תמליל:

פרק 2 מבוא לחולשות אבטחה ולבניית תוכנה בטוחה 72 06.06.2014

חולשות אבטחה 73 06.06.2014

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

buffer overflow & Stack overrun בקורסי תכנות בסיסיים לומדים כי דליפות זיכרון ובעיות אחרות בניהול זיכרון, פוגעות בביצועי התוכנית ונכונותה. היום נראה כי בעיות זיכרון יכולות לגרום לבעיות אבטחה. החולשה הכי נפוצה בתוכנה היא חריגה מחוצץ..buffer overflow o בעיה o זו נפוצה במספר רב של תוכנות. בסביבות מחצית מעדכוני האבטחה מתקנים חריגות מחוצצים. לרוב החולשה נובעת מחוסר בדיקת תקינות. לדוגמא, כאשר מעתיקים מחרוזת באורך שיכולה להכיל רק 100 תוים דרסנו 90 בתים בזיכרון! 10 קל לתוקף חולשת חריגה מחוצץ פשוט מנסים לזהות חולשה זו. לשלוח הודעה ארוכה, למחרוזת ורואים אם התכנית עפה... 75 06.06.2014

דוגמא לעדכון תוכנה בלינוקס 13/3/2014 76 06.06.2014

דוגמא: דריסת מחסנית Low TOS Buffer Stack growth Buffer FP Return addr FP Return addr High Stack before gets Stack after gets 77 06.06.2014

מה מדפיסה התכנית הבאה? main() { int k=3; char str1[80]; char str2[80]; strcpy(str1, "Happy birthday!"); gets(str2); printf("%s\n", str1); } האם התכנית עשויה להדפיס פלט אחר? האם תוכלו לקבוע מה יהיה הפלט בלי לשנות את התכנית? 78 06.06.2014

מה מדפיסה התכנית הבאה? תשובה: gets קוראת שורה מ- stdin. אם בשורה יש עד 79 תוים ואז NEWLINE אז ב- str2 יש את השורה עם NULL בסוף, והערך של str1 נותר הוא. Happy birthday! מודפס birthday!.happy main() { } int k=3; char str1[80]; char str2[80]; strcpy(str1, "Happy birthday!"); אבל אם נשלח שורה בת 100 תוים, נניח 100 פעמים האות A, ה- 80 הראשונים יכנסו ל- str2 והשאר ל- str1. כלומר str1 יקבל 20 פעמים A ואז.NULL הפלט יהיה.AAAAAAAAAAAAAAAAAAAA ואם נשלח 200 תוים, str1 גם הוא לא יספיק, ואז הוא יקבל מחרוזות שגדולה מהאורך שלו, כלומר הפלט יהיה בן 120 תוי A. ואחריהם התכנית תעוף ב- return. gets(str2); printf("%s\n", str1); 79 06.06.2014

מה מדפיסה התכנית הבאה? אבל אם נבחר היטב את המחרוזת כך שבמקום של ערך החזרה )תוים 168-171( יהיו תוים שמייצגים את הכתובת של,main התכנית תרוץ שוב... ונוכל גם לשלוח אותה לבצע כל קוד אחר שיש בזיכרון. main() { int k=3; char str1[80]; char str2[80]; strcpy(str1, "Happy birthday!"); ונוכל גם לשלוח לה קוד הרצה לתוך str2 ולהפנות אליו את ערך החזרה... למשל קוד שמריץ בתורו את...cmd.exe gets(str2); } printf("%s\n", str1); ואז נוכל לעשות התכנית הזו. דבר כל שנרצה, במסגרת ההרשאות של 80 06.06.2014

ומה מדפיסה התכנית הבאה? // Assume that argc==2 main(int argc, char **argv) { int k=3; char str1[80]; char str2[80]; strcpy(str1, "Not the only output"); strcpy(str2, argv[1]); } printf("%s\n", str1); 81 06.06.2014

ומה מדפיסה התכנית הבאה? // Assume that argc==2 main(int argc, char **argv) { int k=3; char *str1="this will not be the output"; char str2[80]; char *str3="can this be the output?"; strcpy(str2, argv[1]); printf("%s\n", str1); exit(0); } 82 06.06.2014

הקוד המוזרק (EGG) בדרך כלל החזרה כך "הנדרס". בלינוקס, ניתן לדוגמא של התהליך הנתקף. משנה התוקף בדריסת מחסנית את שתצביע לקטע קוד, שיושב בעצמו shell להריץ כתובת בחוצץ חדש, שיורש את ההרשאות הקוד המוזרק )נקרא,)EGG צריך להיות:.)PIC Position Independent Code( Relocatable איננו יכול להכיל תוים מיוחדים )לדוגמא "n\" או "0\"(. o כאשר הדריסה מתבצעת באמצעות.scanf(), gets(), strcpy() בדר"כ הקוד המוזרק מאד פשוט ניתן להוריד EGGs מהאינטרנט. פונקציות למשל מריץ מחרוזות כדוגמת shell חדש. 83 06.06.2014

פשוט לכתוב קוד בטוח הכי טוב: תמיד לבדוק שלא חורגים מחוצצים. ככה מלמדים אתכם גם במבוא למדעי המחשב ובקורסי הנדסת תוכנה )או שלא? (. אפשר גם לכתוב בשפות תכנות שבודקות חריגות )כלומר לא C(. בפרט, לא להשתמש בפונקציות הבעייתיות. כאשר התוכן o o עלול על להישלט הגנה נגד התקפות חריגה מחוצץ ישירות או בעקיפין. ועדיף בכלל לא להשתמש בהן. ידי תוקף..strcpy(dest, src),gets,calloc,scanf וכו'. במקומן להשתמש בפונקציות שבודקות גודל חוצץ:.strncpy(dest, src, size_of_dest).fgets זה לא תמיד מספיק, כי פונקציות ספריה קוראות הבעייתיות גם כן. לפונקציות 84 06.06.2014

מניעת הרצה ע"י מניעת הרשאה קוד והרצת המחסנית דריסת בעיית עם להתמודד בכדי מתוכה הוסיפו יצרני המעבדים דגל לחומרת ניהול הזיכרון,)MMU( שבעזרתו ניתן לציין כי דף בזיכרון מכיל נתונים בלבד, ואיננו ניתן לביצוע. ב- AMD No execute NX ב- Intel Disable execution DX o הגנה בחומרה נגד קוד מוזרק דגלים כאלה היו קיימים במחשבים שונים כבר עשרות שנים. אבל לא בכולם, ולא כל מערכות ההפעלה השתמשו בהם. הוכנסה ב- לחלונות תמיכה במערכות ההפעלה Data Execution Prevention DEP Server 2003 וב- R1 XP SP2 ב- Linux : החל מ- 2.6.8 kernel 85 06.06.2014

Return to libc() attack אם אין ביכולת התוקפים לכתוב קוד על גבי המחסנית, עדיין יש ביכולתם לשנות את מהלך ביצוע התכנית, ע"י קפיצה למקומות שונים בזיכרון. בפרט יכול התוקף לקפוץ ישירות לשירותי מערכת..Return to libc() attacks o או o לחילופין לקוד המקורי של התכנית. אם יש שם קוד שמתאים לו. ויש טכניקות יותר מורכבות שמאפשרות דבר אם התוכנית המקורית מספיק ארוכה. כל כמעט של ביצוע o רק על ידי שינוי כתובות חזרה. 86 06.06.2014

הגנה ע"י טעינת קוד למיקום לא צפוי Address Space Layout Randomization (ASLR) מנגנון ASLR נועד למנוע התקפות כאלה מנגנון זה קובע באקראי את מיקום התכנית והספריות בזיכרון בזמן טעינת התכנית. כך, תוקף לא יוכל לשתול מיקום סטטי של שירות מערכת במקום כתובת החזרה. זה פתרון חלקי בלבד, שאינו מונע שינוי תוכן במשתנים שעל המחסנית באופן שהתכנית המקורית תעשה פעולה לא ללא שלה, המקורי הקוד פי על שאפשרית אבל רצויה שינויו. ההגנה היא רק כנגד שינוי כתובות. 87 06.06.2014

פתרונות תוכנה לחריגה מחוצץ קנרית )Canary( overflow Buffer גורם לכתיבה של מחרוזות במקומות הלא נכונים. ניתן לזהות מקרים שכאלה ע"י טכניקה בשם קנרית.)Canary( בסוף כל אזור משתנים שמים מחרוזת ייחודית, ומדי פעם בודקים שהמחרוזת תואמת לציפייה. במקרה שלא כך הדבר, יש בזיכרון דליפה מסוימת המאפשרת כתיבה על הנתונים. בפרט, לפני ביצוע return בודקים קנרית על המחסנית! סוגי קנריות \n Terminators אקראיות XOR נתמך מ- 1.4 Visual studio (gs) ;gcc מ- 2003. 88 06.06.2014

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

חולשת אי בדיקת תחומים של הקלט דוגמא הקצאת זיכרון על המחסנית main() { unsigned int i, len; char *buf; scanf("%d", &len); buf=calloc(len); // Reading without gets, no buffer overflow for(i=0; i<len; i++) buf[i] = getchar(); exit(0); } 90 06.06.2014

חולשת אי בדיקת תחומים של הקלט int i; unsigned int * arr; scanf( %d, &i); דוגמא overflow Integer מה הבעיה בקוד הבא? arr = (unsigned int *) malloc (i*sizeof(unsigned int)); if (arr == NULL) exit(1); for (j=0; j<i; j++) scanf( %d, &arr[j]); קוראים ל-( free(arr בהמשך התוכנית. מה קורה כאשר מתקבל הקלט 2=i? 30 1+ במערכת בה int ו- int unsigned הם בגודל 4 בתים, המערכת תקצה רק 4 תאי זיכרון. ההקצאה מצליחה, ולכן הלולאה מתבצעת, אבל 2 30 1+ פעמים! 91 06.06.2014

פתרונות ל- Overflow Integer הצעה לתיקון int i; unsigned int * arr; scanf( %d, &i); int n = i * sizeof(unsigned int); n /= sizeof(unsigned int); if(n!= i) exit(1); arr = (unsigned int *) malloc (i*sizeof(unsigned int)); if (arr == NULL) exit(1); for (j=0; j<i; j++) scanf( %d, &arr[j]); 92 06.06.2014

פתרונות ל- Overflow Integer או, עדיף לבדוק תחום תקינות של הקלט #define MAX_ALLOWED 1000 // or any other reasonable bound int i; unsigned int * arr; scanf( %d, &i); =========== if(scanf( %d, &i)!=1) exit(1); if(i<1 i>max_allowed) exit(1); arr = (unsigned int *) malloc (i*sizeof(unsigned int)); if (arr == NULL) exit(1); for (j=0; j<i; j++) scanf( %d, &arr[j]); וכדאי גם לבדוק ש- scanf הצליחה... 93 06.06.2014

דוגמא נוספת overflow Integer מה הבעיה בקוד הבא, המשרשר שתי מחרוזות ומעבד אותן? וכן בודק תחום? int process_concat(char *str1, char *str2, unsigned int len1,unsigned int len2) { } char concat_str[256]; if ((len1 + len2) > 256) { return -1; } memcpy(concat_str, str1, len1); memcpy(concat_str + len1, str2, len2); return some_function(concat_str); הפעם עשויה להתרחש גלישה של הסכום.len1+len2 למשל.len1=len2=2 31 +3 94 06.06.2014

חולשת ב- SSL/TLS Heartbleed נחשבת לאחת מבעיות האבטחה החמורות ביותר בשנים האחרונות בסה"כ מישהו שכח לבדוק תחומים... OpenSSL Security Advisory [07 Apr 2014] TLS heartbeat read overrun (CVE-2014-0160) A missing bounds check in the handling of the TLS heartbeat extension can be used to reveal up to 64k of memory to a connected client or server. הפעלה חוזרת מזליגה בלוק נוסף של 64K ע"י ביצוע memcpy מהזיכרון לתוך מערך הפלט התוכן הזולג עלול להכיל מפתחות וסיסמאות אורך הקלט על הקלט מגיע מהרשת לחוצץ בזיכרון הדינמי )בגודל האמיתי שהגיע( פי ההודעה אבל גם בהודעה רשום גודל התיקון בסך הכל מוודא שהתחומים נכונים: if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec. 4 */ לפני שמבצעים memcpy(output, input, payload); אורך אמיתי, כולל כותרות אחרת אפשר להעתיק יותר בתים ממה שהגיעו... נמצא בזיכרון הדינמי מעתיק לפלט יותר מהאורך שיש בקלט 95 06.06.2014

.)Databases( הינה שפת תכנות לבסיסי נתונים SQL במקרים רבים, שאילתות ברשת מועברות למנגנון SQL שמטפל בבקשה, ע"י המרת הקלט לשאילתת.SQL למשל: SELECT passwd FROM students WHERE name= <Input> אם המכניזם תקינות קלט, הוראות. כלומר, SQL Injection שמייצר אז תוקף את הקריאה יכול להעביר ל- SQL לא בודק ל- SQL פקודות או זה עוד סוג חולשה הנובע מאי בדיקת תקינות קלט. זו חולשה מאד נפוצה. וגם קל לתוקף לבדוק את קיומה ולנצל אותה. 96 06.06.2014

דוגמאות ל- Injection SQL fgets(name, 100, stdin); למשל, דוגמא לקריאה מ- sql משפת תכנות: sql("select * FROM students WHERE name='"+name+"'") name = "a' or name!='a" מה יקרה אם דוגמא לשינוי סיסמא במערכת ציונים: Let name=the username, newpas=the new password. sql("update students set pass='"+newpas+"' WHERE name='"+name+"'") מה יקרה אם newpas = "X7+q87^5', grade='100" 97 06.06.2014

חולשת שימוש בפעולות לא אטומיות דוגמא: שימוש בקובץ כשהתוקף יכול לשנות אותו FILE *fd=fopen("/tmp/myfile.tmp","w"); if(fd==null) {exit(2)}; //Write temporary information to fd fclose(fd); Attacker... cp forged_info.dat /tmp/myfile.tmp fd=fopen("/tmp/myfile.tmp","r"); //Read the information from fd fclose(fd); 98 06.06.2014

רקע על Setuid setuid היא הרשאה ב- Unix המאפשרת ליצור קובץ הרצה שירוץ תחת סביבת ההרשאות האפקטיבית של בעל הקובץ, גם אם הוא מורץ על ידי משתמש אחר. מאד שימושי לתכניות של מ"ה שמשתמש צריך לקרא להן, ושאמורות לגשת לקבצים שהמשתמש לא יכול לקרא או לשנות. דוגמא: passwd שינוי סיסמא משתמש מריץ עם הרשאות.root שימושי גם כאשר משתמש רוצה לתת לאחרים לקרא לתכניות שלו, שמצידן יוכלו לגשת לקבצים שלו. למשל, CGI באתר הווב הפקולטי שכותב קובץ נרשמים לכנס הדורש שמירה על פרטיות. o חולשת שימוש בפעולות לא אטומיות ללא,setuid כל CGI באתר יוכל לקרא את הרשימה. 99 06.06.2014

חולשת שימוש בפעולות לא אטומיות בדיקת הרשאות ופתיחת קובץ לא אטומית יחד עם Setuid Program that run under setuid root: Attacker: if (access( myfile, W_OK)!= 0) { exit(1); } symlink("/etc/passwd", myfile"); fd = open( myfile", O_WRONLY); write(fd, buffer, sizeof(buffer)); זו בעיה חמורה בתוכנות!Unix חולשה זו קיימת בתוכנות רבות. יש צורך בפעולה אטומית לבדיקה ופתיחת הקובץ! 100 06.06.2014

חולשת קוד שמזליג זמן חישוב למשל, בדיקת סיסמא על ידי int success=strcmp(typed_pw, saved_pw); כי אם נוכל למדוד את זמן החישוב בדיוק טוב, לדעת נוכל את מספר התווים הנכונים בתחילת הסיסמא. וככה לחסוך המון זמן בחיפוש סיסמאות. 101 06.06.2014

חולשות תצוגה מבלבלת יקרה ב- double-click על הקובץ הבא? מה שם מלא: picture.gif.exe" "A great 102 06.06.2014

חולשות תצוגה מבלבלת פתרון חלקי 103 06.06.2014

חולשות אנושיות שינוי ע"י חובבים חולשה אחרת נובעת כאשר אנשים משנים קוד אינם שהם מבינים בו דבר, ומבלי להתייעץ עם המומחים. בדר"כ קשה לזהות יודע על כך... כשזה קורה, כי מי שמבין שיש לא בעיה 104 06.06.2014

חולשות אנושיות דוגמא יצירת אקראיות ב- Debian מספרים אקראיים הם חיוניים לאבטחת מידע. יצירת מפתחות. ערבול נתונים. nonce -ים לפרוטוקולי אבטחה. הפלט של פונקציית שינוי ע"י חובבים random() הוא לא באמת אקראי... 105 06.06.2014

מחשבים הם דטרמיניסטיים, ולכן לא יכולים לייצר אקראיות אמיתית. במקום זה, הם משתמשים באלגוריתמים המכונים Pseudo-random number )PRNG( generators כדי לייצר אותם משתמשים בקלט נתון )seed( כדי לייצר מחרוזת גדולה יותר בעלת תכונות אקראיות o o איך מייצרים אקראיות? יכולת שליטה ב- seed שימושית לדיבוג תכניות יש לוודא כי תוקף לא יוכל לנחש את ה- seed חשופים להתקפות )ניחוש(, ולכן יש לבחון את בטיחותם כאשר דרוש קלט אקראי באמת עבור תכנות בטוח, יש לוודא שה- PRNG שמשתמשים בו הוא בטוח קריפטוגרפית 106 06.06.2014

איך בוחרים ל- PRNG? Seed seed עשוי אתחול הלאה, לניחוש עפ"י נתונים כמו זמן, כתובת,IP להיות בעייתי נתונים כאלה מקורות חלופיים ל- seed : חומרה מיוחדת קלט משתמש )קצב הקשה, תזוזות עכבר( מדידת זמני גישה לדיסק שילוב מספר מקורות שמות וכן הם קלים 107 06.06.2014

דוגמא: בעיית ב- Debian PRNG במאי 2008, פרויקט Debian )הפצה של לינוקס( דיווח על באג במנגנון ה- PRNG )http://www.debian.org/security/2008/dsa-1571( בשל מחיקת שורת הקוד הבאה, שפונה לזיכרון לא מאותחל וגורמת לתלונות כלי בדיקת זיכרון: #ifndef PURIFY MD_Update(&m,buf,j); /* purify complains */ #endif השינוי נעשה בספטמבר 2006 עקב השינוי, מקור האקראיות היחיד היה מזהה התהליך,)pid( שהינו רק בעל 32,768 ערכים אפשריים התוצאה: מאז השינוי, המפתחות שנוצרו במערכות מבוססות Debian )כולל הפצות )Ubuntu אינם בטוחים 108 06.06.2014

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

ושאלות שיחזור סיסמא יש המון מערכות ואתרים ששומרים את הסיסמא בכתב גלוי. במקום "מוצפן". ולכן פריצה לאתר מאפשרת לדעת את כל הסיסמאות. ואם למשתמש יש אותה סיסמא גם בחשבון הבנק... לעיתים יש עובד שיש לו את רשימת הסיסמאות כדי להקל על המשתמשים לשחזר אותן. טעות חמורה. שאלות שיחזור סיסמא: גם כן בעיה חמורה. שנת לידה? שם הנעורים של האם? שם בית הספר? שם החתול? הגנה: יש לדאוג שיישום הסיסמאות יהיה סביר! ו"מוצפן". וגם בחירת שאלות שיחזור הסיסמא. כלקוח: לא להשתמש באותה סיסמא בכמה מערכות. o סיסמאות ששמורות בכתב גלוי ולתת סיסמאות חזקות גם לשאלות שיחזור הסיסמא. 110 06.06.2014

חולשת זליגות מערוצי צד כידוע תוקפים ישתמשו באמצעים שונים ומשונים לתקוף, אם זה יקל עליהם את התקיפה. אי לכך, חשוב להגן גם כנגד זליגות מערוצי צד..side-channels ומערכות חכמים כרטיסים )למשל רבות במערכות למשל, שהמחשב המתחים את למדוד יכול תוקף מחשב( משובצות צורך analysis(.)power ויש למתחים מתאם עם תוכן החישוב. במקרים רבים ניתן להסיק מכך ידע סודי. למשל מפתחות קריפטוגרפיים. ערוצי צד נוספים. המחשב משמיע רעשים התלויים בחישוב ) התקפה אקוסטית( הארקות. שגיאות חישוב, באגים במעבד. 111 06.06.2014

חולשת שימוש שגוי בקריפטוגרפיה קריפטוגרפיה היא כלי שמאפשר לנו להגן על מידע, כפי שנראה בשיעור הבא. אבל צריך להשתמש בה נכון. יש מגוון דוגמאות לשימוש שגוי נפרט כאן רק דוגמא אחת. דוגמא: תוכנה להצפנת קבצים )מקרה אמיתי(. הצפנת קובץ תחת מפתח סודי, הידוע רק למצפין. כאשר מצפינים, התוכנה קוראת מפתח, מצפינה, וכותבת את הקובץ המוצפן על הקובץ המקורי )שזה הדבר הנכון לעשות(. אבל, אם המשתמש טעה בתקתוק המפתח בפיענוח, הוא יקבל זבל, ולא יוכל לשחזר את המקור לעולם. אז כותב התוכנה החליט לבדוק שהמפתח נכון לפני הפענוח, כדי להגן כנגד טעויות. לצורך הבדיקה, הוא שם עותק של המפתח הסודי בראש הקובץ! 112 06.06.2014

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

על נקודות תורפה, התקפות, ושטח פני ההתקפה On Vulnerabilities, Exploits & Attack Surface 114 06.06.2014

בכל מערכת )תוכנה או חומרה( קיימות נקודות תורפה )חורי אבטחה( יצרניות מערכות תוכנה/תוכנה-חומרה, כמו גם חוקרים מקהיליית האבטחה, מחפשים באופן תמידי אחר נקודות תורפה במערכות לדוגמא: מיקרוסופט התחייבה לפרסם מידע על נקודת התורפה, תוך 90 יום מזמן שנודע לה עליה כיום מפרסמת מיקרוסופט פעם בחודש Tuesday( )patch תיאור של חורי האבטחה, ותיקונים )Patches) עבורם מירב נקודות התורפה הן תוצאה של באגים בתכנות או בתכנון חלק הארי נובע מחוסר בדיקות תקינות של מספר, תחום ואורך של פרמטרים, או חריגה מחוצצים. נקודות תורפה 115 06.06.2014

Exploits התקפות התקפות )Exploits( שמנצלות חורי אבטחה )Vulnerabilities( יכולות להיות מקומיות או מרוחקות: Exploits Local התקפות שמחייבות גישה אל המערכת )משמע שבכדי להפעיל אותן צריך להיות משתמש לגיטימי של המערכת( Exploits Remote התקפות שניתן להפעילן "מרחוק", מבלי להיות משתמש של המערכת קריטי יותר הוא מחור חור אבטחה שניתן לניצול מרחוק, אבטחה שניתן רק לניצול מקומי. 116 06.06.2014

חולשות והתקפות Zero Day מירב ההתקפות )וירוסים, תולעים( הגדולות חורי ניצלו אבטחה, שפורסמו עבורם תיקונים )patches( מירב כלי ההגנה Intrusion ( IPS,Anti-Virus )Prevention Systems מתגוננים כנגד התקפות ידועות, או התקפות שמנצלות חורי אבטחה ידועים עבורם נקודת תיקון תורפה התקפה או חור אבטחה שטרם התפרסם )Patch) נקראים Zero-day attack או )Vulnerability( 117 06.06.2014

נקודות תורפה במערכות הפעלה Bugtraq באתר מדווח 2013, לאוקטובר נכון (http://www.securityfocus.com/bid/) כ- 180 נקודות תורפה ב- 7.Windows Professional ב 4 Windows 8-80 בגרעין Linux גרסה 0( 3.3.5 בגרסה.)3.11 לא כל נקודות התורפה אומרות שניתן לשבור את בטיחות המערכת, אבל רובן כן. מדווחות נקודות תורפה מסוגים שונים: Service Denial of על המערכת Buffer Overflow פגיעויות המאפשרות Privilege escalation ועוד 118 06.06.2014

דוגמא: VML vulnerability תיאור חור האבטחה: http://www.microsoft.com/technet/security/advisory/92556 8.mspx מידע על התיקון: http://www.microsoft.com/technet/security/bulletin/ms06-055.mspx תיאור ההתקפה:( Exploit (Remote http://sunbeltblog.blogspot.com/2006/09/seen-in-wild-zero-day-exploit-being.html http://www.networkworld.com/news/2006/092606-criminals-spread-windows-exploit-via.html 119 06.06.2014

Criminals spread Windows exploit via Web host By Infoworld Staff, InfoWorld, 09/25/2006 Attackers exploited the zero-day VML vulnerability on Windows-based machines by targeting a separate hole in cpanel, an application that's popular with Web hosting services. The attack, which lasted from late Thursday to Saturday afternoon, used a zero-day vulnerability in cpanel to access the servers of HostGator, a Boca Raton, Florida, company that hosts about 600,000 domain addresses, and three other Web hosting companies, according to Brent Oxley, the owner of HostGator. The attackers then planted an iframe script in Web sites that directed some visitors to malicious addresses that would infect them. The attack came four days after the discovery of the VML vulnerability, which allows malicious Web sites to gain complete control of Windowsbased machines that access the site using IE. About 20,000 sites are attempting to exploit the flaw, according to Eric Sites, vice president of Sunbelt Software, the company that first spotted the vulnerability. One such site installs about 50 pieces of malware, including a password stealer, a backdoor, spam zombies, and commercial adware, he said. http://www.networkworld.com/news/2006/092606-criminals-spread-windows-exploit-via.html 120 06.06.2014

שטח פני ההתקפה attack( )Surface of של מערכת מוגדר כסך כל הפעולות ומשאבי המערכת שחשופים למשתמשים ישנם פעולות ומשאבים שמהווים מטרות יותר "מפתות": מערכת הקבצים עשויה להיות יותר "מפתה" מהמדפסת. פעולות שרצות בהרשאות admin או root יותר מפתות מהפעולות שרצות בהרשאות משתמש רגיל וקטורי ההתקפה attack( )Vectors of דרכים אפשריות להגיע לפני השטח מדדים לבטיחות של מערכת למערכת, של גישה דרך ה- Web, או email ההתקפה: גישה בדרך כלל המטרה להפחית ככל שניתן את שטח "המפתה" שפתוח להתקפה דרך וקטורים מרוחקים פני השטח של ההתקפה להשוואה בין מערכות בדר"כ הוא יחסי מושג מקומית הפנים המשמש 121 06.06.2014

דרכים לצמצום שטח פני ההתקפה דוגמאות: מוצרי Firewall מצמצמים את שטח פני ההתקפה כיוון שהם מפחיתים את מספר הדרכים בהן תוקף יכול להתחבר למערכת תיעוד פעילויות במערכת )logging( אינו מפחית את מספר הפגיעויות, אבל אם נעשה היטב, יכול להפחית את הזמן הנתון לרשות התוקף לחדור למערכת )כאשר הלוג משקף פריצת אבטחה(, ויכול לעזור לגלות בעיות אפשרויות וקונפיגורציות שגויות זהו הבסיס של מערכות,Intrusion Detection בהן שרות מסוים מנסה לנתח את התנהגות המשתמשים )כולל מנהל המערכת(. כאשר משתמש אינו מתנהג "כרגיל", השרות מתריע בפני מנהלי המערכת 122 06.06.2014

הגישה השלטת patch Penetrate & בקרב ספקי תוכנה עדיין תכונה שמוסיפים למוצר, אין הבנה שאבטחת תוכנה אינה והם נוקטים את הגישה הבאה: בצע: חפש חורי אבטחה 1. אם לא נמצאו חורי אבטחה, עבור ל- 5 2. בצע: תקן חור אבטחה 3. חזור ל- 1 4. בצע: טפיחה על השכם 5. בצע: המערכת נפרצה בכל אופן 6. חזור ל- 1 7. בעיות אבטחה מטופלות רק לאחר שנחשפו בציבור לא כחלק מתכנון המערכת ולא כחלק מהעדיפויות בפיתוח ועמידה בלוחות הזמנים לעיתים ה"טיפול" הוא ע"י ניסיון מניעת חשיפה... 123 06.06.2014

הגישה השלטת patch Penetrate & החסרונות בגישה: ניתן לתקן רק על למפתחים ידווחו לא התוקפים שמצאנו. בעיות הבעיות שהם מצאו התיקונים מופצים לרוב תחת לחץ זמן, ועקב כך עלולים לגרור בעיות נוספות מטפלים רק בסימפטומים ולא בשורש הבעיה מנהלי מערכת לא תמיד מתקינים את עדכוני התוכנה קיימים מוצרים לניהול אוטומטי של תיקוני תוכנה. עם זאת, השימוש בכלים כאלה, במיוחד בארגונים גדולים, לא בהכרח פותר את הבעיה: עדכוני תוכנה עשויים להשפיע על פונקציונליות של מוצרים קיימים, ולכן נדרשת בדיקה לפני התקנת התיקון במקומות בהם אין חיבוריות רציפה לאינטרנט )למשל, צבא, בנקים(, לא ניתן לבצע עדכון מהיר של תיקונים 124 06.06.2014

ניצול חורי אבטחה האם הוצאת ההתקפות? תיקוני האבטחה יעילה אכן למניעת Based on data from: Windows of Vulnerability: A Case Study Analysis, Bill Arbaugh. Bill Fithen and John McHugh, 2000. התפיסה האינטואיטיבית העולם האמיתי התקפות התקפות זמן גילוי חשיפה שחרור תיקון זמן סקריפטים שחרור חשיפה תיקון 125 06.06.2014

2008 מדצמבר בפרסום,Secunia חברת,)http://secunia.com/blog/37/( המציעה מוצר חינמי לתיקוני אבטחה, פירטה את מספר התוכניות הלא בטוחות שמצאה בקרב 20,000 מחשבים בהן הותקנה התוכנה לאחרונה: רק על 1.91% מהמחשבים לא נמצאה תוכנה לא בטוחה 30.27% מהמחשבים 1-5 תכניות לא בטוחות: 6-10 תכניות לא בטוחות: 25.07% מהמחשבים 11+ תכניות לא בטוחות: 45.76% מהמחשבים o קצב עדכון תיקוני אבטחה )הערה: הטעות באחוזים מופיעה במקור( לצורך הסטטיסטיקות, תוכנית לא בטוחה הוגדרה כתוכנית עבורה קיימת גרסה חדשה יותר המתקנת נקודות תורפה ידועות. 126 06.06.2014

תיקון החולשות למשל patch שמפורסם החולשה מאפשר לתוקף להכיר את החולשה לכן תיקון חולשה צריך להיעשות בו זמנית בכל המערכות היא קיימת למשל פרסום חולשת Heartbleed נדחה עד שתוקנה o פרסום חולשות ע"י תיקונן כולל עד שהעדכון בוצע בכל שירותי האינטרנט הגדולים גוגל, פייסבוק, וכו' לתיקון בהן 127 06.06.2014

פרסום חולשות ע"י תיקון חלקי 128 06.06.2014

פרסום חולשות מבלי לתקנן 129 06.06.2014

עשרה עקרונות מנחים לתוכנה בטוחה 130 06.06.2014

1. אבטחו את החוליה החלשה כיום, קריפטוגרפיה לרוב אינה החוליה החלשה במערכת הנדסה חברתית engineering( )social אחת היא הנקודות הבעייתיות. שאלת שחזור סיסמא היא חוליה חלשה אחרת. So in war, the way is to avoid what is strong and to strike at what is weak The art of war Sun Tzu 131 06.06.2014

Palin E-Mail Hacker Says It Was Easy By Kim Zetter September 18, 2008 10:05 am As detailed in the postings, the Palin hack didn t require any real skill. Instead, the hacker simply reset Palin s password using her birthdate, ZIP code and information about where she met her spouse the security question on her Yahoo account, which was answered (Wasilla High) by a simple Google search. http://www.wired.com/threatlevel/2008/09/palin-e-mail-ha/ How Paris Got Hacked? by Brian McWilliams 02/22/2005 Paris Hilton's Chihuahua couldn't protect her Hollywood home from a burglary last summer. So why was Hilton counting on her dog to protect her T-Mobile account from intruders? Despite repeated attacks on her T-Mobile email and telephone records in recent months, the actress and heiress has persisted in using the little dog's name to secure her password at the T-Mobile site. Like many online service providers, T-Mobile.com requires users to answer a "secret question" if they forget their passwords. For Hilton's account, the secret question was "What is your favorite pet's name?" By correctly providing the answer, any internet user could change Hilton's password and freely access her account http://macdevcenter.com/pub/a/mac/2005/01/01/paris.html 132 06.06.2014

133 06.06.2014

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

3. היכשל באופן בטוח לכל מערכת מורכבת יש מצבי כישלון לרוב לא ניתן להימנע ממצבים כאלה, ויש לתכנן מה נדרש לעשות כאשר הם מתרחשים דוגמא: exception handling יש להימנע מבעיות אבטחה העלולות להיווצר בזמן כישלון תוקף עשוי לייצר מצב כזה במכוון כדי להחליש את המערכת במקרה כישלון, דאגו לנקות את הזיכרון אחריכם, ובמיוחד צאו מהתוכנית בצורה "יפה" ו"בטוחה" בין החיבור את לנתק יש קורס, אם Firewall דוגמא: הרשתות מערכות עם לאחור תאימות של הבעייתיות דוגמא: legacy 135 06.06.2014

4. עקרון מזעור הזכויות יש לספק את הגישה המינימלית הדרושה לביצוע פעולה. ויש לתת אותה לזמן המינימלי הדרוש. דוגמא שלילית: בקרת גישה ב- Unix : תכניות שצריכות הרשאות root לביצוע חלק מפעולותיהן, ממשיכות להחזיק בהרשאות גם כאשר אינן נחוצות. User Account Control( דוגמא: מנגנון UAC ב(.Windows Vista- אבל 136 06.06.2014

נתבונן במערכת Unix טיפוסית. לכל קובץ יש שלוש פעולות אפשריות: כתיבה, קריאה והרצה. לכל קובץ בעלים )משתמש שהוא נחשב הבעלים של הקובץ(. o דוגמא למזעור הרשאות הבעלים רשאי להחליט מה מותר ומה אסור לעשות עם הקובץ. ישנם מקרים בהם בעליו של הקובץ מעוניין שההרצה תעשה תחת ההרשאות שלו, גם כשאחר מריץ אותו. למשל, הפקודה passwd ב- Unix מאפשרת למשתמש לשנות את הסיסמה שלו, כלומר כותבת לקובץ הסיסמאות של המערכת. ברור שאם ניתן לכל משתמש לשנות את הקובץ, כולם יוכלו לשנות את סיסמת מנהל המערכת.)root( 137 06.06.2014

עבור המשימה הזו )ובעיות דומות( הומצא.setuid setuid זו הרשאה המאפשרת להכריז כי כל מי הקובץ נהנה מהזכויות של בעל הקובץ בעת הרצתו. דוגמא למזעור הרשאות מנגנון שמריץ -r-s--x--x 1 root root 16336 Feb 13 2003 /bin/passwd קובץ ההרצה שמשנה סיסמאות הוא בבעלות של.root וכל משתמש יכול להריץ אותו ולקבל הרשאות root ההרצה בלבד. המשמעות היא שהמשתמש מריץ את התכנית ההרשאות של.root במקרה הזה התכנית משנה את הסיסמה שלו הסיסמאות. בשם את לצורך תחת בקובץ 138 06.06.2014

דרך הפעולה של Setuid התוכנית מופעלת ע"י משתמש.orrd מזהה כי זוהי תוכנית עם הרשאת,setuid לה לרוץ בהרשאות. root ולכן המערכת מאפשרת הפעלת passwd orrd passwd (root) orrd סיום passwd 139 06.06.2014

הבעיה עם Setuid "root לכן תכניות שאמורות לרוץ להיות מוגנות. ובמיוחד אם הן אמורות ב"הרשאות אמורות להיות.setuid נוהג נפוץ )אך לא נפוץ מספיק( הוא מעקב אחר כל התוכנות שיש להן הרשאות.setuid ניתן לייצר רשימה של כל התוכנות הללו )בשימוש בפקודה find ב- Unix (. ואז לבדוק שכולן אכן בטוחות מספיק להיות בהרשאה שכזו. 140 06.06.2014

Passwd מתכננים "מחדש" את נשים לב כי קובץ הסיסמאות ניתן לקריאה ולכתיבה רק על ידי.root כלומר הטיפול בקריאת הסיסמה )כדי לבדוק שבאמת המשתמש הוא המשנה את הסיסמה, ולא מישהו אחר( וכתיבתה חייב להתבצע בהרשאות.root o הרשאות root אבל השאר לא! בדיקת סיסמת המשתמש קבלת סיסמה נוכחית מהמשתמש הרשאות משתמש עדכון סיסמת המשתמש קבלת סיסמה חדשה מהמשתמש 141 06.06.2014

5. מידור ניתן להפחית את הנזק למערכת בעל הרשאות גבוהות יותר. שנפרצה קוד בידוד ע"י דוגמא שלילית: הרשאות הכל-או-כלום ב- Unix. חלקו זה לא רק עקרון שמקל על תכנות לתתי משימות בלתי תלויות. הוא משפר אבטחה. 142 06.06.2014

מידור במערכת ההפעלה User Mode and Kernel Mode User mode סביבת הריצה של תוכנית )או תהליך( משתמש. מצב זה הינו מוגבל ביותר. לא ניתן לגשת להתקנים פיסיים ולקבצים באופן ישיר לשם כך יש קריאות מ"ה. Kernel mode סביבת הריצה של הגרעין. בסביבה זו ניתן למצוא את כל טבלאות התהליכים והמידע אודות המערכת. הגרעין יכול לגשת לכל התקן שהוא רוצה, וכל שיטה שהוא רוצה. החדרת קוד זדוני ל- mode kernel משמעותה שליטה מלאה במערכת. הקוד הזדוני יכול לגשת )לקריאה או כתיבה( לכל ההתקנים של המערכת זיכרון, קבצים וכו'. ולעשות ככל העולה על רוחו. 143 06.06.2014

דוגמא: קריאת מערכת ב- Linux פונקציה מבצעת שגרת טיפול בפסיקה מעטפת קוד קוד משתמש open() 1 open() {.. int 0x80 2 6. } 5 system_call():. sys_open().. iret 3 4 sys_open() {... } User Mode Kernel Mode 144 06.06.2014

6. שמרו על פשטות )KISS( מורכבות מעלה את הסיכוי לבעיות קוד מורכב נוטה להכיל יותר באגים של )במיוחד בקוד חוזר שימוש תוכנה, בהנדסת כמו ספריות קריפטוגרפיות( יכול לשפר את בטיחות התוכנה, ולא רק את איכותה ניתן לפשט ע"י ניתוב פעולות חשובות מבחינת בטיחות דרך מספר קטן של צווארי בקבוק points( )choke מנשק קטן ומוגדר היטב שדרכו הבקרה חייבת לעבור אם ניתן לעקוף את צוואר הבקבוק, ערכו קטן דוגמא: מנגנון קריאות מערכת הפעלה ב- Linux גם שימושיות )usability( היא היבט של פשטות 145 06.06.2014

7. שמרו על פרטיות הרבה משתמשים מחשיבים פרטיות כתכונת בטיחות. ויש חוקים מיוחדים לשמירה על פרטיות בנתונים דיגיטליים. יש להימנע מפעולות שיגרמו לפגיעה בפרטיות המשתמש. לפעמים קיים מתח בין פרטיות לשימושיות. לדוגמא, זכירת פרטים שמשתמש הזין בעבר. יש להימנע מלמסור יותר מידע ממה שנחוץ. מוצלח לא כניסה ניסיון בעת המתקבלת ההודעה דוגמא: למערכת: failure"."username or password למה לא להגיד מי מהם שגוי? למה לא להגיד באיזה תו יש שגיאה בסיסמא? סגירת פקודת finger מחוץ לרשת הטכניונית או לבטלה כליל. השתדלו לשמור על פרטיות הנתונים. מחקו מהזיכרון נתונים שאינכם צריכים. 146 06.06.2014

147 06.06.2014

148 06.06.2014

8. זכרו שקשה לשמור סודות בהרבה מקרים, אבטחה מסתמכת על שמירת סודות: שמירת מידע פרטי של משתמשים שמירה על סודיות ובטיחות של מפתחות מניעת דליפת אלגוריתמים למתחרים שמירת סודות אינה פשוטה: קוד בינארי הוא לא סודי גם הרשתות הבטוחות ביותר חשופות להתקפות מבפנים עדיף לא לשמור חומר סודי שאינו נדרש, מלהגן עליו. 149 06.06.2014

דוגמא אפקט סטרייסנד Blu-Ray )2007 חשיפת מפתח ההצפנה של AACS עבור ו- HD-DVD, והמהפכה של משתמשי digg )מאי 150 06.06.2014

MBTA = Massachusetts Bay Transportation Authorities http://tech.mit.edu/v128/n30/subway.html ב- 2008 קבוצת סטודנטים ב- MIT בחנה את אבטחת הרכבת התחתית של בוסטון הם בחנו היבטים שונים של אבטחה: אבטחה פיסית )חדרי בקרה פתוחים ולא מאוישים, מפתחות שהושארו בקופסאות בקרה ללא השגחה, תעודות עובדים קלות לשכפול( פריצת כרטיסי נסיעה )שכפול כרטיסים מגנטיים ticket( Reverse,)Charlie engineering לכרטיסים המגנטיים, פריצת כרטיסי )Mifare( RFID באמצעות חיפוש ממצה או התקפות שידור חוזר )חולשה ב- PRNG (( ציתות לרשת העבודה הייתה צריכה באמצעות צו בית משפט להיות מוצגת ב- 2008,DEFCON דוגמא: אנליזה של דווקא מסיבה זו, העבודה קיבלה חשיפה עצומה MBTA אבל ה- MBTA זאת מנעו 151 06.06.2014

סודות ובסיסי נתונים דולפים בסופו של דבר, הכל דולף. או לפחות יש סיכון גבוה שידלוף. למשל: מרשם התושבים הישראלי. וענונו. ענת קם. הפריצה ל- RSA ולוקהיד-מרטין. אדוארד סנואדן..RC4 ונתונים בנקאיים דולפים כל הזמן. o וגם מס הכנסה, ביטוח לאומי, o משטרה, צבא, וכו'. אפליקציות בסלולר. o מתוכננות לגנוב מידע. וגם המאגר הביומטרי ידלוף. עדיף לא לשמור נתונים לא הכרחיים על פני להגן עליהם! 152 06.06.2014

153 06.06.2014

154 06.06.2014

9. אל תבטחו בקלות אל תסמכו על שום דבר )גם לא על תוכנה אחרת שכתבתם( בדקו תמיד שהפרמטרים הם נכונים ממה סיכון יותר לייצר עשויים אבטחה מוצרי לעיתים, שהם מונעים )גם להם יש חורי אבטחה...( בכתיבת תוכנת,client-server יש לתכנן את צד השרת כך שלא יסמוך על צד הלקוח, ולהפך גם עוזר למידור שירות לקוחות חשוף להתקפות הנדסה חברתית Snake oil and FUD אתרים המציעים ייצור ושמירת סיסמאות אתרים שמוכרים מספרים ראשוניים,... לפעמים זה לא זהיר גם לסמוך על עצמך... 155 06.06.2014

10. נצלו תקנים ומשאבי קהילה על להסתמך מומלץ לא הקריפטוגרפיה, בתחום אלגוריתמים סודיים שלא נבחנו היטב ע"י הקהילה. מקובלים קריפטוגרפיים אלגוריתמים על להסתמך יש שנבחנו היטב ע"י הקהילה, כגון: הצפנה: AES-CBC( AES לרצפי מידע, ואופני תפעול מיוחדים עבור הצפנת דיסקים, כגון )AES-GCM צפני שטף: פרויקט estream פונקציות תמצות: SHA-256/SHA-512/SHA-3 )לא )SHA-1 הצפנת מפתח פומבי: RSA-OAEP חתימה: ECDSA,DSA,RSA-PSS אם מאילוצים לכל הפחות יש שונים נעשה שימוש באלגוריתם לא תקני, לבדוק את בטיחותו עם קריפטוגרף מומחה. 156 06.06.2014

שנעשה אבטחה קוד עם בספריות להשתמש עדיף שימוש רב Cryptlib, OpenSSL, Crypto++, Cryptix, BSAFE, בדר"כ הן יעשו את העבודה יותר טוב מכם, o משאבי קהילה ויהיו להם גרסאות מתוקנות אם יתגלו בעיות! בהן נצלו את הכלים האוטומטיים )ספריות שמגנות על זיכרון, וכו'( שעוזרים לתכנות בטוח לא תמיד להמציא הכל מחדש בעצמך זה טוב. 157 06.06.2014