Insecure direct object references (ارجاعات مستقیم ناامن به شیء)

ارجاعات مستقیم ناامن به شیء (IDOR) نوعی آسیب پذیری کنترل دسترسی است که زمانی ایجاد می‌شود که یک برنامه از ورودی ارائه شده توسط کاربر، برای دسترسی مستقیم به اشیا استفاده می‌کند. اصطلاح IDOR در OWASP TOP 10 2007 رایج شد. IDOR تنها یک نمونه از انواع بسیاری از اشتباه های رایج در پیاده سازی کنترل دسترسی است که می تواند منجر به دور زدن ساختارهای کنترل دسترسی شود. 

آسیب پذیری های IDOR به طور معمول، با افزایش امتیاز افقی (horizontal privilege escalation) مرتبط هستند، اما می‌توانند در رابطه با افزایش امتیاز عمودی (vertical privilege escalation) نیز ایجاد شوند. 

نمونه‌های زیادی از آسیب پذیری های کنترل دسترسی وجود دارد که در آن مقادیر پارامترهای کنترل شده توسط کاربر به طور مستقیم برای دسترسی به منابع یا قابلیت ها استفاده می شوند. 

1. آسیب پذیری IDOR با ارجاع مستقیم به اشیاء پایگاه داده

وب سایتی را در نظر بگیرید که از URL زیر برای دسترسی به صفحه ی حساب مشتری، با بازیابی اطلاعات از پایگاه داده استفاده می کند: 

https://insecure-website.com/customer_account?customer_number=132355

در این جا، شماره مشتری به طور مستقیم به عنوان شناسه مربوط به مشتری در پرس و جوهایی که در پایگاه داده انجام می شوند، استفاده می شود. اگر هیچ کنترل دیگری وجود نداشته باشد، مهاجم می تواند به سادگی مقدار customer_number را تغییر دهد و از کنترل های دسترسی برای مشاهده ی سوابق مشتریان دیگر عبور کند. این نمونه ای از آسیب پذیری IDOR است که منجر به افزایش امتیاز افقی (horizontal privilege escalation) می شود. 

2. آسیب پذیری IDOR با اشاره ی مستقیم به فایل های استاتیک 

آسیب پذیری های IDOR اغلب زمانی ایجاد می شوند که منابع و اطلاعات حساس در قالب فایل های استاتیک در فایل سیستم سمت سرور قرار دارند. برای مثال، یک وب سایت ممکن است رونوشت های پیام های چت را با استفاده از یک نام فایل در حال افزایش روی دیسک ذخیره کند(مثلا نام فایلها به این صورت باشد: 100.txt, 101.txt, 102.txt, …) و به کاربران اجازه دهد تا با مراجعه به یک URL مانند زیر، آن‌ها را بازیابی کنند: 

https://insecure-website.com/static/12144.txt

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