Հարձակվողի ազդեցությունը
JWT-ի սխալ վավերացումը թույլ է տալիս հարձակվողներին շրջանցել նույնականացման մեխանիզմները՝ կեղծելով պահանջները կամ վերօգտագործելով ժամկետանց ժետոններ [S1]: Եթե սերվերն ընդունում է նշաններ առանց վավեր ստորագրության, հարձակվողը կարող է փոփոխել օգտակար բեռը՝ արտոնությունները մեծացնելու կամ [S1] ցանկացած օգտվողի նմանակման համար: Ավելին, ժամկետանց (exp) պահանջի չկիրառումը թույլ է տալիս հարձակվողին անորոշ ժամանակով օգտագործել վնասված նշանը [S1]:
Արմատային պատճառ
JSON Web Token-ը (JWT) JSON-ի վրա հիմնված կառույց է, որն օգտագործվում է թվային ստորագրությամբ կամ ամբողջականության պաշտպանված [S1] պահանջները ներկայացնելու համար: Անվտանգության ձախողումները սովորաբար բխում են իրականացման երկու հիմնական բացերից.
- Անապահով JWT-ների ընդունում. Եթե ծառայությունը խստորեն չի պարտադրում ստորագրության ստուգումը, այն կարող է մշակել «Անապահով JWT-ներ», որտեղ ստորագրությունը բացակայում է, իսկ ալգորիթմը սահմանված է [S1]-ի «ոչինչ»: Այս սցենարում սերվերը վստահում է ծանրաբեռնվածության պահանջներին՝ առանց ստուգելու դրանց ամբողջականությունը [S1]:
- Բացակայող հայցի վավերացում.
exp(ժամկետի ժամկետը) հայցը սահմանում է այն ժամանակը, երբ JWT-ն չպետք է ընդունվի [S1] մշակման համար:aud(լսարանի) հայցը նույնականացնում է [S1] նշանի նախատեսված ստացողներին: Եթե դրանք ստուգված չեն, սերվերը կարող է ընդունել նշաններ, որոնք ժամկետանց են կամ նախատեսված են այլ [S1] հավելվածի համար:
Բետոնե ամրացումներ
- Կիրառել գաղտնագրային ստորագրությունները. կարգավորեք հավելվածը այնպես, որ մերժի ցանկացած JWT, որը չի օգտագործում նախապես հաստատված, ուժեղ ստորագրման ալգորիթմ (օրինակ՝ RS256):
- Վավերացնել գործողության ժամկետը. Կատարեք պարտադիր ստուգում
համոզվելու համար, որ ընթացիկ ամսաթիվը և ժամըexp` պահանջի մեջ նշված ժամանակից առաջ են: - Ստուգեք լսարանը. Համոզվեք, որ
audհայցը պարունակում է տեղական ծառայությունը նույնացնող արժեք. եթե ծառայությունը նշված չէaudհայցում, ապա նշանը պետք է մերժվի [S1]: - Կանխել վերարտադրումը. Օգտագործեք
jti(JWT ID) հայցը` յուրաքանչյուր նշանին եզակի նույնացուցիչ հատկացնելու համար, որը թույլ է տալիս սերվերին հետևել և մերժել վերօգտագործված նշանները [S1]:
Հայտնաբերման ռազմավարություն
JWT մշակման խոցելիությունները կարելի է բացահայտել՝ վերլուծելով նշանի կառուցվածքը և սերվերի արձագանքման վարքագիծը.
- Header Inspection.
alg(ալգորիթմ) վերնագրի ստուգում` համոզվելու համար, որ այն սահմանված չէ «ոչ մեկը» և օգտագործում է [S1] ակնկալվող ծածկագրային ստանդարտները: - Բողոքի ստուգում. հաստատում է
exp(ժամկետանց) ևaud(լսարան) պահանջների առկայությունը և վավերականությունը JSON օգտակար բեռնվածքում [S1]: - Վավերացման փորձարկում. Ստուգում, եթե սերվերը ճիշտ է մերժում այն նշանները, որոնք ժամկետանց են՝ համաձայն
expպահանջի կամ նախատեսված են այլ լսարանի համար, ինչպես սահմանված էaudպահանջով [S1]:
