פגיעויות Oauth | כיצד ליישם אישור בטוח ביישום האינטרנט שלך

Anonim
פגיעויות Oauth | כיצד ליישם אישור בטוח ביישום האינטרנט שלך 2740_1

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

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

מבוא

OAUTH 2.0 פרוטוקול נמצא בשימוש נרחב ביישומים שונים. שימוש בו, ממשק משתמש נוח הופך זמין, אימות קל יותר והרשאה לעומת שיטות מסורתיות להיכנס לשם המשתמש והסיסמה. עם יישום ראוי ומתחשב, פרוטוקול Oauth יהיה בטוח יותר מאשר אישור מסורתי, שכן משתמשים אינם צריכים לשתף את הנתונים החשבונאיים שלהם עם יישום צד שלישי כדי לגשת למשאב מסוים. משתמשים לעתים קרובות מעדיפים להיכנס באמצעות חשבונות Google שלהם, Facebook או LinkedIn, במקום ליצור חשבון חדש בכל פעם שאתה צריך להירשם באתר אינטרנט מסוים. לפיכך, פרוטוקול Oauth מפשט מאוד את חיינו.

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

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

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

Oauth Tokkey גניבה באמצעות כותרת המורד

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

הערה: כותרת המורד היא כותרת שאילתת HTTP, היא מעבירה את מארח כתובת האתר שממנה נשלחת הבקשה.

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

גניבת Oauth ToCKEY באמצעות הפרמטר redirect_uri

היישום יוזם את תהליך ההרשאה על-ידי שליחת בקשה לשרת Oauth:

https://www.example.com/signin/authorize?? [אחריות ://dredirect_uri=httpps://demo.example.com/loginsuccessful.

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

https://www.example.com/signin/authorize?? [אחריות תודה]

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

https://www.example.com/oauth20_authorize.srf???

או זה:

https://www.example.com/oauth2/uuthorize? [...]% IRECT_URI = HTTPS% 3A% 2F% 2FAPPS.Facebook.com% 2Fattacker% 2F.

בעת יישום Oauth, לא תוכל לכלול דומיינים שלמים ברשימה הלבנה. רק כמה כתובות אתר יש להוסיף ל "Redirect_uri" לא מנותב הבקשה לפתוח מחדש.

זיוף בקשות חוצות

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

כדאי לראות כיצד התקפת ה- CSRF מתבצעת על Oauth וכמו פרמטר "המדינה" ניתן להשתמש כדי להקטין את ההשפעות של הפגיעות.

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

אז, איך אני יכול למנוע מצב זה באמצעות פרמטר "המדינה"?

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

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

קוד ההרשאה מונפק ונשלח ללקוח בפגישה יחד עם פרמטר "המדינה".

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

פגיעויות אחרות זוהה בעת יישום Oauth כוללות את היכולת לבצע XSS (Scripting באתר) באמצעות "redirect_uri" פרמטר, הגדרת מפתח OAUTH PRIVE (המפתח יכול להיות לפעמים בעת decompiling יישום נייד) ואת ההרשאה קוד הכללי הפרה (מתי קוד הרשאה יכול לשמש יותר מפעם אחת כדי להוציא מספר אסימונים גישה). פגיעויות אלה הן נפוצות פחות מאלה המתוארים לעיל, אבל זה לא עושה אותם פחות מסוכנים. היזם צריך לדעת את כל הפרקטיקות הדרושות כדי להבטיח פעולה אמינה של יישום האינטרנט שלה.

מחבר המאמר המתורגם: סיימון סליבה.

חָשׁוּב! מידע אך ורק למטרות אקדמיות. נא לציית לחקיקה ולא להחיל מידע זה למטרות בלתי חוקיות.

חומר מעניין יותר על cisoclub.ru. הירשם אלינו: פייסבוק | VK | טוויטר Instagram | מברק זן שליח ICQ חדש YouTube | דוֹפֶק.

קרא עוד