آخرین اخبار
همهٔ اخبار
امنیت وب و نرم‌افزار گزارش بحرانیت ۵/۱۰

رفع آسیب‌پذیری بحرانی در Dancer2: ریسک اجرای مسیرهای غیرمجاز در Perl

رفع آسیب‌پذیری بحرانی در Dancer2: ریسک اجرای مسیرهای غیرمجاز در Perl

در نسخه‌های 2.0.0 تا پیش از 2.2.0 فریم‌ورک Dancer2 برای زبان Perl، یک نقص امنیتی شناسایی شده است که می‌تواند منجر به اجرای مسیرهایی (Routes) شود که پیش‌تر توسط یک Dying Hook رد شده بودند.

تحلیل فنی مشکل

این آسیب‌پذیری در نحوه مدیریت استثناها در متد compile_hooks رخ می‌دهد. زمانی که یک Hook با خطا مواجه شده و متوقف می‌شود (Die)، رویداد core.app.hook_exception فعال می‌گردد. در ادامه، اگر Hook شکست‌خورده، خودِ مدیریت‌کننده استثنا (Exception Handler) نباشد، متد cleanup فراخوانی می‌شود.

مکانیسم اکسپلویت

مشکل اصلی زمانی رخ می‌دهد که Handler مربوطه پاسخ (Response) را متوقف (Halt) کند. در این حالت، عملیات Cleanup متوقف نشده و باعث می‌شود درخواست (Request)، پاسخ و Session که دیسپچر (Dispatcher) هنوز آن‌ها را نخوانده است، دور ریخته شوند. در نتیجه، مسیری که در ابتدا توسط سیستم رد شده بود، به اشتباه اجرا می‌گردد.

راهکار اصلاحی

برای جلوگیری از این رفتار، Handler باید شیء Response را با فراخوانی متد halt به طور کامل متوقف کند تا از اجرای غیرمنتظره مسیرهای رد شده جلوگیری شود. توصیه می‌شود تمامی مدیران سیستم و توسعه‌دهندگانی که از این فریم‌ورک استفاده می‌کنند، سریعاً به نسخه 2.2.0 یا بالاتر ارتقا دهند.