یک آسیبپذیری امنیتی در کتابخانه Catalyst::Seal (نسخههای پیش از 0.03) برای زبان برنامهنویسی Perl شناسایی شده است که میتواند منجر به دور زدن بررسیهای مجوز دسترسی (Authorization Check) شود.
جزئیات فنی آسیبپذیری
این نقص امنیتی در نحوه مدیریت Dispatch Memo رخ میدهد. در Catalyst::Seal، متد prepare_action جایگزین شده تا نحوه تحلیل مسیرها (Path Resolution) را ذخیره (Memoise) کند. این فرآیند شامل مواردی چون نوع Dispatch تطبیقیافته، سطح تطبیق و آرگومانهای باقیمانده است.
مشکل اصلی این است که کلید مورد استفاده برای این حافظه (Memo key)، تنها بر اساس Request Path تعریف شده است و سایر پارامترهای حیاتی را نادیده میگیرد. در نتیجه، اگر Action Roleهایی وجود داشته باشند که بر اساس متد (Method)، نوع محتوا (Content Type)، طرح (Scheme) یا کوئری (Query) تطبیق مییابند، یک درخواست اولیه میتواند مسیر را در حافظه ثبت کند و درخواستهای بعدی را به گونهای هدایت کند که بررسیهای امنیتی و احراز هویت را دور بزنند.
تاثیرات امنیتی
- دور زدن احراز هویت: مهاجم میتواند با ارسال درخواستهای خاص، دسترسی به مسیرهای حفاظتشده را به دست آورد.
- تغییر مسیر درخواستها: امکان غیرفعال کردن یک مسیر یا هدایت درخواستهای بعدی به نقاطی که نیاز به بررسی مجوز ندارند.