« Home | ההכרזה - טלדור » | XSS Translator - התרומה שלי לחודש XSS » | מאמר מצויין בנושא פגיעות אתרי אינטרנט » | Cisco.com XSS Vulnerability Found » | פרצת אבטחה במנוע החיפוש החדש של תפוז » | איך להקים שרת קבצים פשוט ובטוח על Linux » | PayPal פותחת את שעריה לישראל » | XSS באתר hadassah.ac.il » | XSS באתר information.com » | שאלת שימוש הוגן בתוכנות Freeware ( עם פרסומות ) »

XML Security - קצת מחשבות בנושא

פרילוג

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

מה זה XML

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

אני ממליץ לקרוא את המדריך הבא למי שהעולם הזה חדש עבורו.

SOAP

לשפה זו מצטרף פרוטוקול הSOAP אשר נבנה לצורך יצירת תווך של העברת ידע ופקודות בין מערכות שונות ( בד"כ תוך שימוש בפרוטוקול HTTP כשכבת תקשורת ) . למי שלא מכיר - SOAP עובד בשיטה של מעטפות מידע ופקודות אשר עוברות בין שני אלמנטים שונים ( אפליקציות \ שרתים \ טלפונים IP וכדומה ). לאותן מעטפות ישנה הגדרת מידע ומבנה אשר נקרא פשוט - סיכמת הSOAP , והוא ממוקם בקובץ WSDL אשר פירושו - Web Services Descripton Language. ומכיל את המידע הרלוונטי בכדי לאפשר לשני הצדדים להבין אחד את השני. חשוב להבין שSOAP יכול ואמור לכיל פרצדורות ופונקציות כמו בכל שפת תכנות אשר עוזרות לצד השני להבין את המידע המועבר ( ומאפשרות גם עיבוד נתונים בSERVER-SIDE ).

מדריך מצויין למתחילים עם SOAP ניתן לקרוא כאן.

שימושים נפוצים

השימושים הנפוצים ביותר לXML היום הם : העברת מידע בין מסדי נתונים ובין שירותי אתרי אינטרנט , העברת מידע בין מודלים של מידע ובין פלטפורמות שונות , RSS , הגדרות לציוד ( כמו למשל קונפיגורציה של נתבי Juniper ודומיהם ) ולאט לאט כמעט כל תקשורת המכילה נתונים מידיים ומובנים עוברת למודל זה. אפילו עולם הMobile עובד בתצורה זו. נכון להיום , ישנם מוצרים רבים אשר בעבר הוגדרו על ידי SNMP או קבצי קונפיגורציה שהורדו ועבר קומפילציה על המכונה , והיום עוברים בXML. למשל טלפוניית הIP של סיסקו.

תקשורת הSOAP

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

סכימת המבנה של שימוש בSOAP בHIGH-LEVEL ( תהליך ממוספר ) :

soap_h4

התקפות

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

  • SQL Injection , כן - אותה התקפה המוכרת לנו כלכך מעולם הSQL ועולם האפליקציה , מקבלת פנים חדשות לחלוטין. תחשבו על זה לרגע , למרות שתווך העברת הנתונים אינו SQL אלא XML , ישנו PARSER אשר הופך את המידע משאילתת SQL לXML ובחזרה . זה אומר בעצם שאם הייתי גורם לנתונים בתוך הXML להכיל את אותו "גרש" וסקריפ אחריו בתוך שדה נתונים - הPARSER בצד השני ימיר את ההתקפה בחזרה לSQL וההתקפה תעבוד. למרות כל ההגנה שהשקענו עד היום.
  • Recursive Payloads – התקפה המתבצעת על הPARSER אשר אמור לטפל בבקשות מסויימות , מתבצעת רקורסיה ארוכה , אשר גורמת לDOS. התקפה קלה מאוד לביצוע שכן הPARSER תמיד מנסה להבין את מבנה הנתונים ולענות לבקשות פעולה בקוד המעטפה.
  • WSDL Scanning – זליגת מידע על ידי סריקת מבנה התשתית של מעטפות הSOAP על ידי למידת מבנה מסד הנתונים המוצג בתבנית הWSDL. ברוב המקרים - במידה וכבר בחרו להצפין את תווך הSOAP או אפילו לבצע IP FILTERING כדי שהתווך יהיה רק בין שני גורמים , המעטפת תמיד נמשכת ממקור צד שלישי, שאולי אינו מוגן. כאשר אני קורא את הסכימה , אני יכול להסיק על כל מבנה הנתונים המוצג בשאילתות , ללמוד את מבנה מסד הנתונים, ולחסוך זמן בעבודת הפריצה וגניבת המידע.
  • Schema Poisoning - שינוי מעטפת הXML על מנת לשנות את מבנה הנתונים והמידע המופק ממנו , בעצם אני משנה את הצורה שבה אמור להיקרא המידע על ידי הצד השני על ידי שיבוש הסכימה, והמידע מגיע משובש לצד השני. ( MITM עובד כאן יופי יופי ).
  • SOAP Routing Detours - על ידי שתילת תגיות נוספות למעטפה , ניתן לגרום למעטפה לעבור דרך גורם שלישי בדרך , לבצע MITM ולשבש ואף לגנוב מידע מבלי שיורגש.

וירולוגיה

אין לשכוח עולם שלם של וירולוגיה ממוחשבת אשר עוברת דרך SOAP וXML. תחשבו על זה רגע ... נכון להיום כל מערכות האנטיוירוס סורקות רק נתונים מסויימים , ורק סוגי תעבורה ופרוטוקולים מסויימים. אם אני מפרק וירוס לתוך מעטפות SOAP , הוא יופעל על ידי האפליקציה שביצעה PARSING והרכיבה את הוירוס מחדש , ואותה אפליקציה , באופן לא מפתיע - מורשית לרוץ על המערכת , ולכן מערכות HOST-IPS ורוב הAV פשוט לא יתייחסו ( ברור לחלוטין גם מול הUAC של ויסטה ).

סיכום

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

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

Labels: , , , , , ,

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

מעניין, ועם זאת הגיוני.

WS למינהם, וגם דפים שמקבלים ומעבדים בקשות AJAX בעצם חושפים פונקציות גולמיות (בניגוד לממשק משתמש HTMLי למשל)

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



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



משה.

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