« Home | נראה שN מכשירים בסלקום » | קצת על BruteForce ופיצוח סיסמאות בכלל. » | Fedora 7 on HP nc2400 » | כנס שנתי - חברת TrekIT » | iPhone , שוחרר לעולם » | מי היה מאמין , 2007 - קשיים בלינוקס » | כיצד גיליתי את האינטרנט » | צ'אט עם סקריפט-קידי » | ספאם מעצבן - פרסום עבור SQLink » | ביצוע DOS פשוט לרוב מוצרי הSOHO-FW »

סיבוכיות אלגוריתמים וההקשר לאבטחת מידע

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

חשבתי שיהיה נכון להציג כאן את אחת מדעותיי בתחום בהקשר לאבטחת מידע אפליקטיבי , וכשאני אומר את זה אני מתכוון בעיקר להגנה נגד OverFlows למיניהם ולילד שלהם שהוא - ADOS
כלומר APPLICATIVE DENIAL OF SERVICE.

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

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

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

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

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

Labels: ,

Syndication : Digg It  Add to Technorati Favorites  Stumble It  Worth Reading 

אם יש לי גישה לזיכרון, למה שלא תהיה לי גישה להריץ תוכנית אחרת?

אם יש לי גישה לזיכרון, למה שלא תהיה לי גשיה להריץ תוכנית אחרת?

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

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

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

Post a Comment

About

    My Name is Barry Shteiman, im a devoted tech junkie, and this is my blog.
    E: barry.shteiman -at- gmail.com
    Twitter : bshteiman

Tags & Categories

Mailing List & RSS

Stay Updated  
Add to Technorati Favorites