Уздзеянне нападніка
Няправільная праверка 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].
