თავდამსხმელის გავლენა
არასწორი JWT ვალიდაცია საშუალებას აძლევს თავდამსხმელებს გვერდის ავლით ავთენტიფიკაციის მექანიზმები პრეტენზიების გაყალბებით ან ვადაგასული ჟეტონების ხელახლა გამოყენებით [S1]. თუ სერვერი იღებს ტოკენებს მოქმედი ხელმოწერის გარეშე, თავდამსხმელს შეუძლია შეცვალოს დატვირთვა, რათა გაზარდოს პრივილეგიები ან მოიცვას ნებისმიერი მომხმარებელი [S1]. გარდა ამისა, ვადის გასვლის (exp) პრეტენზია თავდამსხმელს საშუალებას აძლევს გამოიყენოს გატეხილი ჟეტონი განუსაზღვრელი ვადით.
ძირეული მიზეზი
JSON ვებ ტოკენი (JWT) არის JSON-ზე დაფუძნებული სტრუქტურა, რომელიც გამოიყენება ციფრულად ხელმოწერილი ან მთლიანობის დაცული პრეტენზიების წარმოსაჩენად [S1]. უსაფრთხოების წარუმატებლობა, როგორც წესი, გამოწვეულია განხორციელების ორი ძირითადი ხარვეზიდან:
- დაუცველი JWT-ების მიღება: თუ სერვისი მკაცრად არ ახორციელებს ხელმოწერის დადასტურებას, მას შეუძლია დაამუშავოს „დაუცველი JWT-ები“, სადაც ხელმოწერა არ არის და ალგორითმი დაყენებულია „არცერთზე“ [S1]. ამ სცენარში, სერვერი ენდობა პრეტენზიებს მომხმარებელზე, მათი მთლიანობის დადასტურების გარეშე [S1].
- გამოტოვებული პრეტენზიის დადასტურება:
exp(მოქმედების ვადის გასვლის დრო) განსაზღვრავს დროს ან მის შემდეგ JWT არ უნდა იქნას მიღებული [S1] დასამუშავებლად.aud(აუდიტორიის) პრეტენზია განსაზღვრავს [S1] ნიშნის სავარაუდო მიმღებებს. თუ ეს არ არის მონიშნული, სერვერს შეუძლია მიიღოს ჟეტონები, რომლებსაც ვადა გაუვიდა ან იყო განკუთვნილი სხვა [S1] აპლიკაციისთვის.
ბეტონის შესწორებები
- აღასრულეთ კრიპტოგრაფიული ხელმოწერები: დააკონფიგურირეთ აპლიკაცია ისე, რომ უარყოს ნებისმიერი JWT, რომელიც არ იყენებს წინასწარ დამტკიცებულ, ძლიერ ხელმოწერის ალგორითმს (როგორიცაა RS256).
- გადასვლის ვალიდაცია: განახორციელეთ სავალდებულო შემოწმება, რათა დარწმუნდეთ, რომ მიმდინარე თარიღი და დრო არის
expმოთხოვნაში მითითებულ დროზე ადრე [S1]. - დაამოწმეთ აუდიტორია: დარწმუნდით, რომ
audპრეტენზია შეიცავს ლოკალური სერვისის იდენტიფიკაციის მნიშვნელობას; თუ სერვისი არ არის იდენტიფიცირებულიaudსაჩივარში, ჟეტონი უარყოფილი უნდა იყოს [S1]. - გამეორების თავიდან აცილება: გამოიყენეთ
jti(JWT ID) პრეტენზია თითოეული ტოკენისთვის უნიკალური იდენტიფიკატორის მინიჭებისთვის, რაც საშუალებას აძლევს სერვერს თვალყური ადევნოს და უარყოს ხელახლა გამოყენებული ტოკენები [S1].
გამოვლენის სტრატეგია
დაუცველობა JWT მართვაში შეიძლება გამოვლინდეს ტოკენის სტრუქტურისა და სერვერის პასუხის ქცევის ანალიზით:
- Header Inspection: შეამოწმეთ
alg(ალგორითმი) სათაური, რათა დარწმუნდეთ, რომ ის არ არის დაყენებული „არცერთი“ და იყენებს მოსალოდნელ კრიპტოგრაფიულ სტანდარტებს [S1]. - საჩივრის დადასტურება:
exp(ვადის გასვლის) დაaud(აუდიტორიის) პრეტენზიების არსებობისა და მოქმედების დადასტურება JSON დატვირთვის [S1]-ში. - ვალიდაციის ტესტირება: ტესტირება, თუ სერვერი სწორად უარყოფს ტოკენებს, რომლებსაც ვადა გაუვიდა
expპრეტენზიის მიხედვით ან განკუთვნილია სხვა აუდიტორიისთვის, როგორც ეს განსაზღვრულიაaudპრეტენზიით [S1].
