FixVibe
Covered by FixVibehigh

JWT Бяспека: рызыкі неабароненых токенаў і адсутнасці праверкі патрабаванняў

Вэб-токены JSON (JWT) забяспечваюць стандарт для перадачы патрабаванняў, але бяспека залежыць ад строгай праверкі. Адсутнасць праверкі подпісаў, часу заканчэння дзеяння або меркаванай аўдыторыі дазваляе зламыснікам абыйсці аўтэнтыфікацыю або прайграць токены.

CWE-347CWE-287CWE-613

Уздзеянне нападніка

Няправільная праверка JWT дазваляе зламыснікам абыходзіць механізмы аўтэнтыфікацыі шляхам падробкі прэтэнзій або паўторнага выкарыстання пратэрмінаваных токенаў [S1]. Калі сервер прымае токены без сапраўднай подпісы, зламыснік можа змяніць карысную нагрузку, каб павысіць прывілеі або выдаць сябе за любога карыстальніка [S1]. Акрамя таго, невыкананне прэтэнзіі аб заканчэнні тэрміну дзеяння (exp) дазваляе зламысніку выкарыстоўваць скампраметаваны токен бясконца [S1].

Першапрычына

Вэб-токен JSON (JWT) - гэта структура на аснове JSON, якая выкарыстоўваецца для прадстаўлення прэтэнзій з лічбавым подпісам або абаронай цэласнасці [S1]. Збоі ў бяспецы звычайна адбываюцца з двух асноўных прабелаў у рэалізацыі:

  • Прыняцце неабароненых JWT: калі сэрвіс не выконвае строга праверку подпісаў, ён можа апрацоўваць «Неабароненыя JWT», дзе подпіс адсутнічае, а алгарытм усталяваны ў «няма» [S1]. У гэтым выпадку сервер давярае прэтэнзіям у карыснай нагрузцы без праверкі іх цэласнасці [S1].
  • Адсутная праверка прэтэнзіі: прэтэнзія exp (тэрмін прыдатнасці) вызначае час або пасля якога JWT не павінен быць прыняты для апрацоўкі [S1]. Заява aud (аўдыторыя) вызначае меркаваных атрымальнікаў токена [S1]. Калі яны не адзначаны, сервер можа прымаць токены, тэрмін дзеяння якіх скончыўся або прызначаны для іншага прыкладання [S1].

Канкрэтныя выпраўленні

  • Выкананне крыптаграфічных подпісаў: Наладзьце прыкладанне так, каб адхіляць любы JWT, які не выкарыстоўвае папярэдне зацверджаны надзейны алгарытм подпісу (напрыклад, RS256).
  • Праверка заканчэння тэрміну дзеяння: укараніце абавязковую праверку, каб пераканацца, што бягучыя дата і час ранейшыя за час, указаны ў прэтэнзіі exp [S1].
  • Праверка аўдыторыі: пераканайцеся, што прэтэнзія aud змяшчае значэнне, якое ідэнтыфікуе лакальную службу; калі паслуга не вызначана ў прэтэнзіі aud, маркер павінен быць адхілены [S1].
  • Прадухіленне паўторнага прайгравання: выкарыстоўвайце прэтэнзію jti (ID JWT), каб прызначыць унікальны ідэнтыфікатар кожнаму токену, дазваляючы серверу адсочваць і адхіляць паўторна выкарыстаныя токены [S1].

Стратэгія выяўлення

Уразлівасці ў апрацоўцы JWT можна вызначыць, прааналізаваўшы структуру токена і паводзіны адказу сервера:

  • Праверка загалоўка: Праверка загалоўка alg (алгарытм), каб пераканацца, што ён не ўсталяваны ў "няма" і выкарыстоўвае чаканыя крыптаграфічныя стандарты [S1].
  • Праверка прэтэнзій: пацверджанне наяўнасці і сапраўднасці прэтэнзій exp (тэрмін дзеяння) і aud (аўдыторыя) у карыснай нагрузцы JSON [S1].
  • Валідацыйнае тэсціраванне: правяраецца, ці правільна сервер адхіляе токены, тэрмін дзеяння якіх скончыўся ў адпаведнасці з прэтэнзіяй exp або прызначаны для іншай аўдыторыі, як вызначана ў прэтэнзіі aud [S1].