PHPMailer

اخیراً یک محقق امنیتی یک آسیب‌پذیری حیاتی را در یکی از معروف‌ترین کتابخانه‌های منبع باز PHP گزارش کرده بود[۱] که برای فرستادن پست‌های الکترونیک استفاده می‌شد که به مهاجم از راه دور اجازه می‌داد تا یک کد دلخواه را در زمینه(۱) یک سرور تحت وب اجرا کند و یک برنامه تحت وب را به خطر بیندازد.

این آسیب‌پذیری که CVE-2016-10033 نام‌گذاری شده است توسط Dawid Golunski که یک محقق امنیتی از شرکت Legal Hackers است، کشف شده بود. این آسیب‌پذیری در PHPMailer قرار داشت که بیش از ۹ میلیون کاربر در سراسر جهان از آن استفاده می‌کنند و تصور می‌شد پس از انتشار نسخه ۵٫۲٫۱۸ برطرف شده است.

با این حال، Golunski نسخه اصلاح شده PHPMailer را bypass کرد و یک آسیب‌پذیری جدید به نام CVE-2016-10045 معرفی شد[۲]. این آسیب‌پذیری مجدداً میلیون‌ها وب‌سایت و برنامه تحت وب منبع باز مانند WordPress ،Drupal ،۱CRM ،SugarCRM ، Yii  و جوملا را در معرض خطر حمله اجرای کد از راه دور قرار داد.

در نهایت PHPMailer این آسیب‌پذیری را با انتشار یک به روز رسانی و در نسخه ۵٫۲٫۲۰ برطرف کرد[۳]. تمامی نسخه‌های PHPMailer قبل از این نسخه نسبت به این آسیب‌پذیری حساس هستند. به مدیران سیستم و توسعه‌دهندگان قویا پیشنهاد می‌شود تا نسخه PHPMailer خود را به آخرین نسخه به روز رسانی کنند.

علاوه بر این آسیب‌پذیری، Golunski همچنین آسیب‌پذیری مشابهی را در دو کتابخانه پست الکترونیک دیگر که مربوط به PHP بودند (SwiftMailer[4] و ZendMail[5]) گزارش داد. این آسیب‌پذیری‌ها نیز منجر به حمله اجرای کد از راه دور می‌شوند.

آسیبپذیری RCE در SwiftMailer

SwiftMailer  یک کتابخانه PHP معروف است که توسط بسیاری از پروژه‌های منبع باز شامل چارچوب‌های معروف برنامه‌نویسی با PHP(2) مانند Yii2 ، Laravel برای ارسال پست‌های الکترونیک از طریق SMTP مورد استفاده قرار می‌گیرد.

این آسیب‌پذیری که CVE-2016-10074 نام‌گذاری شده است و در SwiftMailer  قرار دارد می‌تواند مشابه روش موجود در آسیب‌پذیری PHPMailer مورد بهره‌برداری قرار گیرد و اجزای یک وب‌سایت را که از کلاس SwiftMailer  استفاده می‌کنند مانند فرم‌های تماس با ما/ثبت‌نام، فرم‌های تنظیم مجدد کلمات عبور و غیره مورد هدف قرار دهد.

مهاجمان می‌توانند کد دلخواه را از راه دور در زمینه سرور تحت وب اجرا کنند. این سرور، قبلا برای دسترسی به یک سرور تحت وب که یک برنامه تحت وب را میزبانی می‌کند و از نسخه آسیب‌پذیر کتابخانه مورد نظر استفاده می‌کند، مورد بهره‌برداری قرار گرفته است.

آسیب‌پذیری SwiftMailer بر روی تمامی نسخه‌های این کتابخانه از جمله نسخه فعلی (۵٫۴٫۵-DEV) اثرگذار است.

Golunski  این آسیب‌پذیری را به تیم SwiftMailer گزارش کرده است و توسعه‌دهندگان این برنامه به سرعت برای برطرف کردن آن دست به کار شدند و نسخه ۵٫۴٫۵ را منتشر کردند.

در تغییرات نوشته شده برای SwiftMailer در  GitHub آمده است[۶]: “نقل و انتقال پست الکترونیک (Swift_Transport_MailTransport) نسبت به عبور آرگومان‌های پوسته(۳) در حالتی که سرآیندهای “From”، “ReturnPath” یا “Sender” از منبع غیرقابل اعتماد آمده باشند، آسیب‌پذیر است و به طور بالاقوه اجازه اجرای کد از راه دور را می‌دهد.”

 آسیب‌پذیری RCE در ZendMail

ZendMail

ZendMail یک جزء از چارچوب برنامه‌نویسی PHP معروف است که بیش از ۹۵ میلیون بار نصب شده است.

آسیب‌پذیری حیاتی CVE-2016-10034 در ZendMail می‌تواند مشابه آسیب‌پذیری کشف شده در PHPMailer و SwiftMailer  توسط مورد هدف قرار دادن اجزای وب‌سایت که از ZendMail استفاده می‌کنند مانند فرم‌های تماس با ما/ثبت‌نام، فرم‌های تنظیم مجدد کلمات عبور و غیره مورد هدف قرار داده شود.

مهاجمان می‌توانند به اجرای کد از راه دور در زمینه سرور تحت وب دست یابند و می‌توانند از راه دور برنامه تحت وبی که از نسخه آسیب‌پذیر ZendMail استفاده می‌کند را به مخاطره بیندازند.

این محقق مشکل فوق را به ZendMail گزارش کرده است و توسعه‌دهندگان این مشکل را برطرف کرده و وصله مربوطه را منتشر کردند.

ZendMail در یک blog post می‌نویسد: “هنگامی که از اجزاء zend-mail برای فرستادن پست الکترونیک از طریق نقل و انتقال Zend\Mail\Transport\Sendmail  استفاده می‌کنید، یک کاربر بدذات امکان دارد که قادر به تزریق پارامترهای دلخواه به برنامه system sendmail باشد. این حمله با تأمین quote character های اضافی در یک آدرس قابل پیاده‌سازی است. در هنگامی که پاک‌سازی نشده باشند(۴) آن‌ها می‌توانند به عنوان آرگومان‌های خط فرمان(۵) اضافی وارد شده و منجر به این آسیب‌پذیری شوند.”

Golunski ویدیوی مربوط به اثبات این ادعا را که هر ۳ نوع حمله را نشان می‌دهد منتشر کرده است.

Golunski همچنین یک بهره‌بردار سه در یک را با نام PwnScriptum منتشر کرده است که شامل اطلاعات مربوط به آسیب‌پذیری‌های PHPMailer، SwiftMailer و ZendMail  است[۷].

این محقق به زودی یک white-paper امنیتی را منتشر می‌کند که شامل شاخص‌های سابق بهره‌برداری ناشناس(۶) و روش‌هایی است که می‌تواند برای بهره‌برداری از این ۳ آسیب‌پذیری مورد استفاده واقع شود[۸].

 

منابع

[۱] http://apa.aut.ac.ir/?p=1950

[۲] https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html

[۳] https://github.com/PHPMailer/PHPMailer/blob/master/SECURITY.md

[۴] https://legalhackers.com/advisories/SwiftMailer-Exploit-Remote-Code-Exec-CVE-2016-10074-Vuln.html

[۵] https://legalhackers.com/advisories/ZendFramework-Exploit-ZendMail-Remote-Code-Exec-CVE-2016-10034-Vuln.html

[۶] https://github.com/swiftmailer/swiftmailer/blob/5.x/CHANGES

[۷] https://legalhackers.com/exploits/CVE-2016-10033/10045/10034/10074/PwnScriptum_RCE_exploit.py

[۸] https://legalhackers.com/papers/Pwning-PHP-mail-func-For-Fun-And-RCE-New-Exploit-Techniques-Vectors.html

[۹] http://thehackernews.com/2017/01/phpmailer-swiftmailer-zendmail.html


(۱) Context
(۲) top PHP programming frameworks
(۳) arbitrary shell arguments
(۴) unsanitized
(۵) command line arguments
(۶) previously unknown exploitation vectors