در نسخههای پیش از 2.590 از کتابخانه Net::IDN::UTS46 در زبان Perl، یک آسیبپذیری شناسایی شده است که میتواند منجر به تخلیه منابع پردازشی (CPU Exhaustion) شود. این مشکل در جریان پردازش نامهای دامنه و تبدیل آنها به فرمت ASCII رخ میدهد.
تحلیل فنی مکانیسم حمله
این نقص امنیتی در تابع to_ascii نهفته است. در این تابع، ابتدا عملیات Punycode Encoding برای هر Label انجام شده و سپس محدودیت ۶۳ بایتی DNS اعمال میگردد. به دلیل این ترتیب در اجرا، مهاجم میتواند با ارسال Labelهای بسیار طولانی حاوی کاراکترهای غیر ASCII، باعث ایجاد فشار مضاعف بر پردازنده شود.
پیادهسازی Quadratic Complexity
بررسیها نشان میدهد که تابع encode_punycode در هر دو Backend مورد استفاده، از پیادهسازی نمونه در RFC 3492 پیروی میکند. در این روش، حلقه بیرونی به ازای هر کد غیر ASCII متمایز یک بار اجرا شده و در هر دور، کل ورودی را اسکن میکند. در نتیجه، اگر یک Label شامل کاراکترهای غیر ASCII متمایز باشد، هزینه پردازشی به صورت مجذوری (Quadratic) نسبت به طول رشته افزایش مییابد.
تاثیرات امنیتی
این وضعیت میتواند منجر به حملات Denial of Service (DoS) شود، جایی که یک درخواست کوچک اما پیچیده، منابع CPU سرور را به طور کامل اشغال کرده و سرویس را برای سایر کاربران غیرقابل دسترس میکند.