یک آسیبپذیری امنیتی بحرانی در نسخههای پیش از 2.602 از ماژول Email::Sender::Transport::Sendmail در زبان برنامهنویسی Perl شناسایی شده است که امکان اجرای دستورات دلخواه (Arbitrary Command Execution) را در محیط ویندوز فراهم میکند.
تحلیل فنی آسیبپذیری
این نقص امنیتی در متد _sendmail_pipe رخ میدهد. در سیستمعاملهای خانواده ویندوز (MSWin32)، آدرس فرستنده (Envelope Sender) و تمامی گیرندگان در قالب یک رشته متنی واحد (Single Command String) قرار میگیرند. این رشته سپس توسط تابع open() به Shell ارسال میشود.
در مقابل، در سایر پلتفرمها، این اطلاعات به صورت لیستی (List Form) ارسال شده و دستور sendmail را بهطور مستقیم اجرا میکنند که این مکانیسم در برابر تزریق دستورات مقاوم است. اما در ویندوز، به دلیل نحوه پردازش رشتهها توسط Shell، اگر مهاجم بتواند آدرسهای پاکت نامه (Envelope Address) را کنترل کند، میتواند دستورات مخرب خود را به سیستم تزریق نماید.
سناریوی حمله
زمانی که فراخوان (Caller) هیچ آدرس پاکتی را تعریف نکند، ماژول Email::Sender::Simple به طور خودکار گیرندگان را از هدرهای To و Cc استخراج میکند. اگر این مقادیر توسط کاربر کنترل شوند، مهاجم میتواند با استفاده از کاراکترهای خاص، اجرای دستورات سیستمعامل (RCE) را هدف قرار دهد.
- نوع آسیبپذیری: Command Injection
- پلتفرم متاثر: Windows
- نسخههای آسیبپذیر: نسخههای قدیمیتر از 2.602