بررسی Weak Password Change or Reset Functionalities
در این بخش از دوره آموزشی OWASP-WSTG به چهارمین بخش از استاندارد WSTG با شناسه WSTG-ATHN-09 می پردازیم که مربوط به بررسی Weak Password Change or Reset Functionalities می باشد.
خلاصه
تغییر و تنظیم مجدد کلمه عبور در یک برنامه، به عنوان قابلیتی در نظر گرفته میشود که کاربر امکان چنین عملیاتی را به صورت سلف سرویس خواهد داشت.
این مکانیزم سلفسرویس به کاربران این امکان را میدهد که بدون مداخله مدیر، کلمه عبور خود را به سرعت تغییر داده یا ریست نمایند. زمانی که گذرواژهها توسط کاربر تغییر میکنند، معمولا این تغییرات در برنامه نیز اعمال میشود. زمانی که گذرواژهها ریست میشوند، یا در داخل برنامه ارائه شده و یا برای کاربر ایمیل میشوند. این امر ممکن است نشان دهد که گذرواژهها به صورت متن ساده یا به صورت قابل رمزگشایی ذخیره شدهاند.
اهداف تست
• بررسی مقاومت برنامه در برابر خرابکاری مربوط به روند تغییر حساب کاربری که به فردی اجازه میدهد رمز عبور یک حساب را تغییر دهد.
• بررسی مقاومت عملکرد تنظیم مجدد رمزهای عبور در برابر حدس زدن یا دور زدن.
چگونه تست را انجام دهیم
هم برای تغییر و هم برای ریست کلمه عبور مهم است که موارد زیر را بررسی نمایید:
• در صورتی که کاربران، به غیر از مدیران، بتوانند گذرواژهها را برای حسابهایی غیر از حساب خودشان تغییر داده یا تنظیم مجدد کنند.
• در صورتی که کاربران بتوانند فرآیند تغییر یا ریست کلمه عبور را دستکاری نموده تا کلمه عبور مدیر یا کاربر دیگری را تغییر دهند.
• اگر فرآیند تغییر گذرواژه یا ریست آن، در برابر CSRF آسیبپذیر باشد.
بررسی بخش ریست کلمه عبور
علاوه بر بررسیهای قبلی، بررسی موارد زیر نیز حائز اهمیت میباشد:
• چه اطلاعاتی برای ریست کلمه عبور مورد نیاز است؟
اولین قدم بررسی این موضوع است که آیا به سوالات امنیتی نیاز است یا خیر. ارسال کلمه عبور(یا یک لینک ریست رمز عبور) به آدرس ایمیل کاربر بدون درخواست اولیه برای یک سوال امنیتی، به معنی اعتماد ۱۰۰ % به امنیت آن آدرس ایمیل است که اگر برنامه نیاز به سطح بالایی از امنیت داشته باشد، این موضوع مناسب نخواهد بود.
از سوی دیگر، اگر از سوالات امنیتی استفاده شود، گام بعدی ارزیابی قدرت آنها است. این تست خاص در تست مربوط به Testing for Weak security question/answer مورد بحث قرار گرفتهاست.
• چگونه رمزهای عبور مجدد به کاربر منتقل می شوند؟
خطرناکترین سناریو در اینجا این است که ابزار ریست کلمه عبور، رمز عبور را به شما نشان دهد؛ این امر به مهاجم امکان ورود به حساب را میدهد و تا زمانی که برنامه اطلاعاتی را در مورد آخرین ورود به قربانی ارایه ندهد، متوجه نخواهد شد که حساب آنها به خطر افتادهاست.
یک سناریوی با درصد نا امنی کمتر این است که ابزار ریست کلمه عبور، کاربر را مجبور کند تا فورا رمز عبور خود را تغییر دهد. در حالی که به اندازه مورد اول پنهانی نیست، ولی به مهاجم اجازه دسترسی و قفل کردن کاربر واقعی را میدهد.
بهترین سناریوی امنیتی در این بخش، زمانی حاصل میشود که تنظیم مجدد رمز عبور از طریق یک ایمیل به آدرس کاربری که در ابتدا با آن ثبتنام شدهاست، یا برخی دیگر از آدرسهای ایمیل انجام شود؛ این امر مهاجم را مجبور میکند تا نه تنها حدس بزند که در کدام حساب ایمیل مقدار کلمه عبور دوباره ارسال شدهاست (مگر این که برنامه این اطلاعات را نشان دهد) بلکه میبایست به آن حساب ایمیل به منظور دسترسی به کلمه عبور موقت یا لینک راهاندازی مجدد کلمه عبور نیز دسترسی داشته باشد.
• آیا ریست کلمات عبور به طور تصادفی ایجاد میشوند؟
مهمترین سناریو در اینجا این است که برنامه، کلمه عبور قدیمی را به صورت متن واضح ارسال کند، زیرا این بدین معنی است که کلمه عبور به شکل Hash شده ذخیره نمیشود. این موضوع به خودی خود یک مساله امنیتی محسوب میشود.
بهترین مدل امنیتی در صورتی حاصل میشود که گذرواژهها به طور تصادفی با الگوریتمی ایمن تولید شوند که امکان استخراج آنها وجود نداشته باشد.
• آیا قابلیت ریست کلمه عبور قبل از تغییر کلمه عبور، تاییدی درخواست میکند؟
برای محدود کردن حملات انکار سرویس، برنامه کاربردی باید یک لینک را با یک توکن تصادفی به کاربر ایمیل کند و تنها در صورتی که کاربر از لینک بازدید کند، روند ریست کردن تکمیل شود. این امر تضمین میکند که گذرواژه فعلی همچنان معتبر خواهد بود تا زمانی که تنظیم مجدد تایید شود.
بررسی تغییر کلمه عبور
علاوه بر بررسیهای انجام شده قبلی، مهم است که موارد زیر نیز بررسی شود:
• آیا کلمه عبور قدیمی برای تکمیل فرآیند تغییر، درخواست شدهاست؟
خطرناکترین سناریو در اینجا این است که برنامه اجازه تغییر گذرواژه را بدون درخواست گذرواژه فعلی بدهد. در واقع اگر مهاجم بتواند کنترل یک جلسه معتبر را در دست بگیرد، میتواند به راحتی رمز عبور قربانی را تغییر دهد. همچنین برای بررسی به قسمت Testing for Weak password policy مراجعه کنید.
Remediation
عملکرد تغییر یا بازنشانی گذرواژه یک عملکرد حساس است و به نوعی از حفاظت نیاز دارد ، مانند الزام کاربران به احراز هویت مجدد یا ارائه صفحههای تأیید به کاربر.