שְׁאֵלָה:
עד כמה מסוכן אחסון הסיסמה הגוברת באחסון המקומי?
user837487
2018-05-21 22:40:32 UTC
view on stackexchange narkive permalink

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

היישום מכיל את הסיסמה עם SHA256 ומלח ושומר אותה באחסון הפעלה או באחסון מקומי בדפדפן (תלוי אם המשתמש רוצה להישאר מחובר לצמיתות). היא גם משתמשת בגיבוב נכון של סיסמאות שוב בצד השרת (PBKDF2) והיישום מוגש באמצעות HTTPS.

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

אילו חסרונות ספציפיים יש בגישה זו בהשוואה לגישות האופייניות לאחסון הפעלות?

ההשפעה של התקפת XSS הופכת לחמורה הרבה יותר.אם מפתח מושב נפגע, הוא תקף רק עד שתוקף מושב זה יפוג.אם הסיסמה הגיבובית נפגעת ונסדקת, היא תאפשר לתוקף לגשת לחשבון עד שהמשתמש ישנה את הסיסמה שלו (אלא אם כן מופעלת 2FA).זה יכול גם לאפשר למשתמש להתפשר בדרכים אחרות, אם הסיסמה שלו משותפת בין שירותים אחרים.
אני לא חושב שזה כל כך גרוע כי בכל מקרה אתה אמור להיות מסוגל לסמוך על סביבת היישומים שלך.אם יש לך פשרה שיכולה לקרוא LS, היא יכולה להגיע לכל דבר אחר.יש הכשרון "לא לאחסן מסמכים חשובים בבית, זה עלול להתפרץ", אבל בסופו של יום, אתה צריך לסמוך על _משהו_, ואם האפליקציה שלך אחרת מאובטחת, למה לא לסמוך על האפליקציה שלך?אמת עדיין בשרת ...
אני לא מבין, האם סיסמת ה- SHA256 עם הגיבוב נשלחת לשרת וחוזרת שוב, או שנשלחת סיסמת הטקסט הרגיל?כמו כן, האם חלק מהערכים נשלחים בכל בקשה?
@multithr3at3d סיסמת הגיבוב נשלחת לשרת וחוזרת לשם שוב לאחסון.
בכנות, ההיבט הנוגע יותר לשאלה זו הוא שהיזם שעומד מאחורי אתר זה השתמש באבטחה כלשהי "גלגל בעצמך", דבר שיכול להצביע על בעיות רבות נוספות בהמשך הדרך.
ארבע תשובות:
jmingov
2018-05-22 00:05:23 UTC
view on stackexchange narkive permalink

זה ממש מסוכן.

השימוש באחסון המקומי לאחסון מזהי הפעלות אינו מומלץ לעולם מכיוון ש הנתונים נגישים תמיד על ידי JavaScript.

אנא השתמש בעוגיות כדי למתן סיכון זה באמצעות הדגל httpOnly .

התקפה יחידה של XSS (Cross Site Scripting) תוכל לגנוב את כל הנתונים באובייקטים אלה ו / או לטעון מידע זדוני, לכן אל תחשיב את "האחסון המקומי" למהימן ופחות עבור מזהה הפעלה / סיסמה מגובשת.

Ref: https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Local_Storage

האם הערכה זו תשתנה אם ניתן להוסיף מדיניות אבטחת תוכן מגבילה ליישום כולו?למיטב הבנתי, זה ימנע למעשה את כל התקפות ה- XSS המקובלות.
בדוק את https://www.rdegges.com/2018/please-stop-using-local-storage/, ההערה בסוף.אולי שילוב עם "שלמות מקורות המשנה" יכול להיות מאובטח.רק אל תיישם את זה ככה אם אתה יכול להימנע מכך.
זה לא נכון, הצבעה למטה.הדפדפן משתמש במדיניות 'אותו מקור' כדי למנוע קלט / פלט חוצה תחומים של DOM, קובצי Cookie ומנגנוני אחסון HTML5.
Ajedi32
2018-05-22 18:43:05 UTC
view on stackexchange narkive permalink

יש כמה בעיות בנושא זה.

ראשית, הערך המלוח SHA-256 הוא שווה ערך לסיסמה; כל תוקף שמקבל גישה לערך זה יכול פשוט להעביר אותו ישירות לשרת כדי לאמת. אין צורך להכריח את החשיש.

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

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

jas-
2018-05-22 19:03:55 UTC
view on stackexchange narkive permalink

מסוכן. לא מומלץ.

כמה סיבות לכך;

  1. התקפות MITM. במקרה של התקפה של ערוץ צדדי, ניתן לאלל שדרוג לאחור של צופן, ריפוד או חולשות באלגוריתם ההצפנה ששולח סיסמת גיבוב מעבר לקו.

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

  3. DOM המחייב מחדש התקפות & XSS. חולשות בקוד הלקוח יכולות לסייע לתוקפים בגניבת אישורים המאוחסנים בדפדפן.

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

כמה דרכים להגן על הלקוחות שלך;

  1. אל תאחסן מידע רגיש ב מזמין הלקוחות.

  2. עטוף את מסירת הקודים שלך בחיבור TLS עם צפנים חזקים ושום דבר יותר מגרסה 1.2. זה דורש מפתחות חזקים, ECC / RSA גדול מ -2048 סיביות, לא פחות מאלגוריתם SHA512 עבור אישורי x509.

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

  4. ודא שהיישום שלך לא מדליף נתונים רגישים, או אם אתה משתמש במזהה כדי להבטיח ששום דבר רגיש לא יעזוב את השרת.

  5. עדכן את השרת שלך טלאי ויישומים מעודכנים כולל קושחה.

BgrWorker
2018-05-22 20:49:23 UTC
view on stackexchange narkive permalink

גישה זו בהחלט פחות מאובטחת מאחסון אסימון / עוגיית הפעלה רגילה ושליחת הסיסמה בטקסט רגיל.

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

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

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

לקבלת מידע נוסף על הסיבה לכך שחשיש בצד הלקוח הוא רעיון רע / מיותר, עיין בסעיף זה: גיבוב סיסמא בצד הלקוח

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



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 4.0 עליו הוא מופץ.
Loading...