FixVibe
Covered by FixVibehigh

אבטחה JWT: סיכונים של אסימונים לא מאובטחים ואימות תביעה חסר

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

CWE-347CWE-287CWE-613

השפעת התוקף

אימות JWT לא תקין מאפשר לתוקפים לעקוף מנגנוני אימות על ידי זיוף תביעות או שימוש חוזר באסימונים שפג תוקפם [S1]. אם שרת מקבל אסימונים ללא חתימה חוקית, תוקף יכול לשנות את המטען כדי להסלים הרשאות או להתחזות לכל משתמש [S1]. יתר על כן, אי אכיפת תביעת התפוגה (exp) מאפשרת לתוקף להשתמש באסימון שנפרץ ללא הגבלת זמן [S1].

סיבת שורש

אסימון אינטרנט של JSON (JWT) הוא מבנה מבוסס JSON המשמש לייצוג תביעות בחתימה דיגיטלית או מוגנות בשלמות [S1]. כשלי אבטחה נובעים בדרך כלל משני פערי יישום ראשוניים:

  • קבלת JWTs לא מאובטחים: אם שירות אינו אוכף בקפדנות את אימות החתימה, הוא עשוי לעבד "JWTs לא מאובטחים" כאשר החתימה נעדרת והאלגוריתם מוגדר ל-"none" [S1]. בתרחיש זה, השרת סומך על התביעות במטען מבלי לאמת את תקינותן [S1].
  • אימות תביעה חסרה: תביעת exp (זמן תפוגה) מזהה את הזמן שבו או אחריו אין לקבל את ה-JWT לעיבוד [S1]. הטענה aud (קהל) מזהה את הנמענים המיועדים של האסימון [S1]. אם אלה לא מסומנים, השרת עשוי לקבל אסימונים שפג תוקפם או שנועדו ליישום אחר [S1].

תיקוני בטון

  • אכוף חתימות קריפטוגרפיות: הגדר את היישום כדי לדחות כל JWT שאינו משתמש באלגוריתם חתימה מאושר מראש וחזק (כגון RS256).
  • אמת תפוגה: בצע בדיקה חובה כדי לוודא שהתאריך והשעה הנוכחיים הם לפני השעה המצוינת בתביעה exp [S1].
  • אמת קהל: ודא שהתביעה aud מכילה ערך המזהה את השירות המקומי; אם השירות אינו מזוהה בתביעת aud, יש לדחות את האסימון [S1].
  • מנע הפעלה חוזרת: השתמש בתביעה jti (מזהה JWT) כדי להקצות מזהה ייחודי לכל אסימון, מה שמאפשר לשרת לעקוב ולדחות אסימונים שנעשה בהם שימוש חוזר [S1].

אסטרטגיית איתור

ניתן לזהות פגיעויות בטיפול JWT על ידי ניתוח מבנה האסימון והתנהגות תגובת השרת:

  • בדיקת כותרת: בדיקת הכותרת alg (אלגוריתם) כדי לוודא שהיא לא מוגדרת ל"ללא" ומשתמשת בתקני הצפנה צפויים [S1].
  • אימות תביעה: אישור נוכחות ותוקפן של תביעות exp (תפוגה) ו-aud (קהל) בתוך מטען ה-JSON [S1].
  • בדיקת אימות: בדיקה אם השרת דוחה כהלכה אסימונים שפג תוקפם בהתאם לטענת exp או שמיועדים לקהל אחר כפי שהוגדר על ידי תביעת aud [S1].