الگوریتم none در JWT

jwt-none-algorithm
تاریخ انتشار : 2020/09/14 | نویسنده : Mr-M4HDI

الگوریتم none در JWT

همانطور که در مقاله قبل به معرفی JSON Web Token (JWT) پرداخته شد. در این مقاله قصد داریم به یکی

از حملات و شرح آسیب پذیری موجود در توکن های JWT بپردازیم.

JWT برای محافظت در برابر دستکاری اطلاعات می‌تواند به صورت دیجیتالی امضا شود. زمانی الگوریتم JWT

بر روی none تنظیم می‌شود. به این معنا می‌باشد که این توکن امضا نشده است.

الگوریتم none یک قابلیت اضافی JWT می‌باشد. این الگوریتم در وضعیتی که یکپارچگی توکن قبلاً تایید شده

باشد، استفاده می‌شود. لازم به ذکر است این الگوریتم یکی از دو الگوریتمی می باشد که برای پیاده سازی

لازم است به آن توجه شود. (دیگری HS256)

متاسفانه، برخی از کتابخانه ها، توکن های امضا شده با الگوریتم none را به عنوان یک امضا معتبر تلقی

می‌کنند. (به عنوان مثال signature="")

در حال حاضر اکثر پیاده سازی ها، یک راه حل برای جلوگیری از این حمله دارند. یکی از مواردی که می‌توان به

آن اشاره نمود اختصاص یک secret برای اعتبارسنجی توکن ها می‌باشد، در این صورت نمی‌توان از الگوریتم

none استفاده نمود.

 

تغییر الگوریتم به مقدار none

هدر JWT به صورت زیر می باشد.

jwt-header

این داده ها با مکانیزم Base64 رمزگذاری شده و قبل از اولین dot ( . ) واقع شده است. پارامتر alg در اینجا

الگوریتم مورد استفاده برای امضای JWT را نشان می‌دهد. یکی از الگوریتم هایی که تمامی کتابخانه های

JWT بدون هیچ امضایی، می‌بایست پشتیبانی کنند، مقدار none می‌باشد. اگر ما مقدار none را برای

الگوریتم در نظر بگیریم، JWT بدون داشتن هیچگونه امضایی پذیرفته خواهد شد.

 

پیاده سازی حمله JWT none algorithm  در محیط آزمایشی

در این سناریو، هکر با سوء استفاده از آسیب پذیری موجود در JWT، سطح دسترسی خود را از Guest به admin افزایش می دهد.

 

 

منابع

[0] www.jwt.io

[1] repository.root-me.org