امنیت ورود همزمان (Concurrent Login Security)

ورودهای نامحدود می‌توانند نقص‌های جدی در منطق کسب‌وکار (business logic) را پنهان کنند.

یک کاربر با لپ‌تاپ وارد می‌شود. چند ثانیه بعد، همان حساب در مرورگر دیگری وارد می‌شود. سپس یک دستگاه موبایل. سپس یک کلاینت API. همه چیز به درستی کار می‌کند.

این موضوع عادی به نظر می‌رسد زیرا بسیاری از اپلیکیشن‌ها از چندین دستگاه پشتیبانی می‌کنند. اما باید پرسید: آیا هر اپلیکیشنی باید اجازه نشست‌های (sessions) نامحدود را بدهد؟

در برخی سیستم‌ها، چندین نشست یک ویژگی (feature) محسوب می‌شود. در برخی دیگر، نقص است که مهاجمان از آن برای پنهان ماندن استفاده می‌کنند. این یک آسیب‌پذیری منطق کسب‌وکار است. کد طبق طراحی کار می‌کند، اما خودِ طراحی ضعیف است.

تفاوت در چیست: • باگ‌های سنتی از اشتباهات کدنویسی سوءاستفاده می‌کنند. • باگ‌های منطق کسب‌وکار از تصمیمات طراحی سوءاستفاده می‌کنند.

یک سرویس استریم فیلم را در نظر بگیرید. اگر یک اشتراک به ده نفر اجازه دهد همزمان تماشا کنند، سیستم ورود درست کار می‌کند، اما قانون کسب‌وکار شکست خورده است.

این موضوع در بانکداری، پنل‌های مدیریت و محصولات SaaS صدق می‌کند.

نحوه تست این مورد:

اپلیکیشن‌های با امنیت بالا اغلب این قوانین را اعمال می‌کنند:

اگر مهاجمی اطلاعات کاربری را سرقت کند، اگر اجازه ورودهای نامحدود را داده باشید، می‌تواند برای همیشه وارد بماند. آن‌ها در حالی که کاربر واقعی فعال است، فعال می‌مانند. هیچ‌کدام متوجه حضور فرد مزاحم نمی‌شوند.

زمینه (Context) همه چیز است. اپلیکیشن‌هایی که به نشست‌های زیاد نیاز دارند:

اپلیکیشن‌هایی که به کنترل دقیق نیاز دارند:

نحوه رفع آن:

فقط به دنبال باگ‌های کد مانند SQL injection نباشید. به دنبال شکاف‌های بین آنچه اپلیکیشن شما انجام می‌دهد و آنچه کسب‌وکار شما نیاز دارد، باشید.

سیاست نشست‌های خود را همین امروز بازبینی کنید. بزرگترین ریسک شما ممکن است کد خراب نباشد، بلکه منطق خراب باشد.

Source: https://dev.to/arashad_dodhiya_0e4bdba5a/concurrent-login-security-how-to-check-whether-multiple-sessions-are-allowed-1839