یک آسیبپذیری امنیتی در نسخههای پیش از 2.590 کتابخانه Net::IDN::Punycode در زبان برنامهنویسی Perl شناسایی شده است که میتواند منجر به توقف برنامه (Hang)، کرش کردن (Crash) یا بازگرداندن برچسبهای نادرست شود.
جزئیات فنی نقص امنیتی
این مشکل در تابع encode_punycode ریشه دارد. در این نسخه، هیچیک از Backendهای مورد استفاده، صحت ساختار UTF-8 ورودی را بررسی نمیکنند. در نتیجه، اگر رشتهای با پرچم UTF-8 اما حاوی بایتهای بدشکل (Malformed Bytes) به انکودر برسد (که معمولاً توسط لایه :utf8 PerlIO در ورودیهای نامعتبر تولید میشود)، بدون هیچگونه اعتبارسنجی پردازش میگردد.
تاثیر بر نسخههای مختلف Perl
در نسخههای 5.32 و جدیدتر Perl، Backend مربوط به XS در مواجهه با توالیهای بدشکل، طول رشته را به صورت (STRLEN)-1 گزارش میدهد. این رفتار باعث میشود فرآیند اسکن به جای حرکت به جلو، یک بایت به عقب بازگردد که در نهایت منجر به رفتارهای پیشبینی نشده یا از کار افتادن سرویس میشود.
- نوع آسیبپذیری: عدم اعتبارسنجی ورودی (Input Validation)
- تاثیر: Denial of Service (DoS) و اختلال در پردازش دادهها
- راهکار: بهروزرسانی سریع کتابخانه به نسخه 2.590 یا بالاتر