بررسی رایج ترین مشکلات امنیتی وردپرس (WordPress) و روش های مقابله با آن ها برای محافظت از وب سایت یا فروشگاه اینترنتی شما در برابر مجرمان سایبری.
وردپرس محبوب ترین سیستم مدیریت محتوای (CMS) جهان است. همان طور که توسعه دهندگان آن نیز اشاره می کنند، بیش از 40 درصد وب سایت های موجود بر پایه وردپرس ساخته شده اند. با این حال، این محبوبیت یک جنبه منفی نیز دارد: تعداد بسیار زیاد اهداف بالقوه، به طور طبیعی توجه مهاجمان سایبری را جلب می کند. به همین دلیل، پژوهشگران حوزه امنیت سایبری، وردپرس را به دقت بررسی کرده و به صورت منظم مشکلات مختلف این سیستم را گزارش می کنند.
در نتیجه، شنیدن این که وردپرس پر از مشکلات امنیتی است، چندان دور از ذهن نیست. اما این توجه گسترده یک نکته مثبت نیز دارد: بیشتر تهدیدها و روش های مقابله با آن ها به خوبی شناخته شده اند و همین موضوع باعث می شود که ایمن نگه داشتن یک وب سایت وردپرس آسان تر شود. در این مقاله قصد داریم به همین موضوع بپردازیم.
1- آسیب پذیری در افزونه ها، قالب ها و هسته وردپرسدر تمام فهرست های مربوط به مشکلات امنیتی وردپرس که در اینترنت منتشر شده اند، همواره عباراتی مانند XSS (تزریق کدهای مخرب جاوا اسکریپت به وب اپلیکیشن)، SQL Injection (حمله به پایگاه داده از طریق تزریق به SQL) و CSRF (جعل درخواست بین سایتی) به چشم می خورند. این حملات - و بسیاری از حملات مشابه دیگر - به دلیل وجود آسیب پذیری در یکی از سه بخش اصلی وردپرس امکان پذیر می شوند: هسته نرم افزاری وردپرس، افزونه ها یا قالب ها.
در میان این سه، افزونه ها بیشترین سهم را در بروز مشکلات امنیتی دارند، چرا که معمولا توسط توسعه دهندگان مختلف و با سطوح متفاوتی از دانش امنیتی ساخته می شوند. قالب ها نیز ممکن است کدهای ناامن یا دستکاری شده داشته باشند. هرچند هسته وردپرس به طور منظم توسط تیم اصلی آن به روز رسانی و بررسی می شود، اما هیچ نرم افزاری کاملا عاری از آسیب پذیری نیست.
چگونه امنیت را افزایش دهیم:- هسته وردپرس را همیشه به موقع به روز رسانی کنید: اگرچه آسیب پذیری های موجود در هسته وردپرس نسبتا کم هستند، اما در صورت کشف، اغلب به شدت مورد سوء استفاده قرار می گیرند. بنابراین به روز نکردن هسته می تواند ریسک های امنیتی قابل توجهی به همراه داشته باشد.
- به روز رسانی قالب ها - و به ویژه افزونه ها - را فراموش نکنید: همان طور که پیش تر اشاره شد، بیشترین آسیب پذیری ها در افزونه ها یافت می شوند. به روز رسانی منظم آن ها یکی از موثرترین راهکارهای جلوگیری از نفوذ است.
- از نصب افزونه های غیرضروری خودداری کنید: تنها افزونه هایی را نصب کنید که واقعا برای عملکرد سایت ضروری هستند. هر افزونه اضافی، یک نقطه ضعف بالقوه جدید به سایت شما اضافه می کند.
- افزونه هایی را که دیگر استفاده نمی کنید، سریعا غیرفعال یا حذف کنید: باقی ماندن افزونه های بلا استفاده در سایت، حتی اگر فعال نباشند، می تواند تهدیدآمیز باشند. حذف کامل آن ها به کاهش سطح حمله کمک می کند.
2- رمزهای عبور ضعیف و نبود احراز هویت دو مرحله ای
دومین مشکل بزرگ امنیتی در وردپرس، نفوذ از طریق حدس زدن رمز عبور (Brute-Force) یا استفاده از اطلاعات کاربری افشا شده (Credential Stuffing) است. در این نوع حملات، هکرها با استفاده از پایگاه داده های آماده ای که حاوی نام های کاربری و رمزهای عبور درز کرده از سرویس های دیگر هستند، تلاش می کنند به حساب های وردپرس دسترسی پیدا کنند.
اگر مهاجمان موفق شوند به حسابی با دسترسی سطح بالا (مانند مدیر سایت) نفوذ کنند، می توانند کنترل کامل سایت را در دست بگیرند و از آن در راستای اهداف خود استفاده کنند؛ از جمله: سرقت داده ها و اطلاعات کاربران، افزودن مخفیانه لینک های تبلیغاتی به محتوای سایت (SEO Spam)، نصب بدافزار از جمله اسکریپت های سرقت اطلاعات کاربران مانند (Web Skimmer) و استفاده از سایت شما برای میزبانی صفحات فیشینگ و غیره.
چگونه امنیت را افزایش دهیم:- اطمینان حاصل کنید که تمامی کاربران وردپرس از رمزهای عبور پیچیده و امن استفاده می کنند: برای این منظور، بهتر است یک سیاست رمز عبور (Password Policy) اعمال شود - مجموعه ای از قوانین که مشخص می کند رمزها باید چه ویژگی هایی داشته باشند. افزونه های مختلفی برای اعمال این سیاست ها در وردپرس در دسترس هستند.
- تعداد تلاش های ورود ناموفق را محدود کنید: با استفاده از افزونه های مخصوص، می توانید تعداد دفعات ورود ناموفق را محدود کنید و مانع حملات Brute-Force شوید.
- احراز هویت دو مرحله ای را فعال کنید: از اپلیکیشن هایی که کدهای یک بار مصرف تولید می کنند برای اضافه کردن لایه دوم امنیتی استفاده کنید. این کار را نیز می توان با نصب افزونه های وردپرس به راحتی انجام داد.
- به کاربران خود توصیه کنید از رمزهای عبور بلند و پیچیده استفاده کنند، بدون اینکه مجبور باشند آن ها را به خاطر بسپارند: برای این کار، استفاده از یک مدیر رمز عبور بسیار مفید است. به عنوان مثال، کسپرسکی پسورد منیجر (Kaspersky Password Manager) نه تنها امکان ذخیره امن رمزها را فراهم می کند، بلکه قابلیت تولید کدهای احراز هویت دو مرحله ای را نیز دارد.
3- مدیریت ضعیف کاربران و سطح دسترسی ها
این مشکل ارتباط مستقیمی با موضوع قبلی دارد: بسیاری از صاحبان وب سایت های وردپرس، کنترل دقیقی بر نقش ها و سطح دسترسی کاربران خود ندارند. این بی توجهی می تواند در صورت نفوذ به یکی از حساب های کاربری، خطرات امنیتی را به طور قابل توجهی افزایش دهد.
پیش تر درباره پیامدهای خطرناک نفوذ به حساب هایی با سطح دسترسی بالا صحبت کردیم - حتی در مواردی که این دسترسی ها به اشتباه یا صرفا به امید نیاز داشتن در آینده به کاربران داده شده اند. در چنین شرایطی، مهاجمان می توانند: لینک های اسپم تبلیغاتی (SEO Spam) را به صورت مخفیانه در محتوای سایت تزریق کنند، به داده های حساس و شخصی کاربران دسترسی پیدا کنند، بدافزار نصب کرده یا اسکریپت های مخرب اجرا کنند، صفحات فیشینگ بر روی سایت ایجاد کرده و از اعتبار شما برای فریب کاربران سوء استفاده کنند.
چگونه امنیت را افزایش دهیم:- هنگام تخصیص سطح دسترسی کاربران نهایت دقت را به خرج دهید: از اصل حداقل دسترسی (Least Privilege) پیروی کنید - یعنی فقط به اندازه ای که برای انجام وظایفشان نیاز دارند، به کاربران دسترسی بدهید و نه بیشتر.
- فهرست کاربران وردپرس را به صورت دوره ای بازبینی کنید: حساب هایی که دیگر مورد استفاده نیستند یا متعلق به افراد غیرفعال هستند را حذف کنید.
- سطح دسترسی کاربران را در صورت نیاز کاهش دهید: اگر کاربری دیگر به دسترسی های بالا نیاز ندارد، او را به گروهی با مجوزهای کمتر منتقل کنید.
- و البته، نکات امنیتی مربوط به رمز عبور را هم فراموش نکنید: همان طور که در بخش قبلی گفته شد، استفاده از رمزهای عبور قوی و احراز هویت دو مرحله ای برای همه حساب ها به ویژه حساب های با دسترسی بالا ضروری است.
4- افزونه های مخرب
فراتر از افزونه هایی که صرفا دارای آسیب پذیری امنیتی هستند، برخی افزونه ها ذاتا مخرب طراحی شده اند. برای مثال، مدتی پیش پژوهشگران امنیتی افزونه ای برای وردپرس را شناسایی کردند که در ظاهر یک افزونه ساده برای کش کردن صفحات بود، اما در واقع یک درِ پشتی کامل (Backdoor) محسوب می شد. وظیفه اصلی این افزونه مخرب، ایجاد حساب های کاربری ادمین غیرمجاز و به دست گرفتن کنترل کامل سایت آلوده بود. چنین افزونه هایی نه تنها امنیت سایت را به شدت به خطر می اندازند، بلکه می توانند زیرساخت فنی، اطلاعات کاربران و اعتبار شما را به طور جدی تهدید کنند.
اوایل امسال، پژوهشگران امنیتی یک افزونه مخرب دیگر را در وردپرس شناسایی کردند که در ابتدا کاملا مشروع و قانونی بود، اما توسعه دهندگان بیش از یک دهه پیش آن را رها کرده بودند. پس از مدتی، برخی افراد سودجو این افزونه را به دست گرفتند، آن را دوباره منتشر کردند و در نسخه جدید، به یک بک دور تبدیل کردند. این بک دور به آن ها امکان می داد کنترل هزاران سایت وردپرس را در اختیار بگیرند.
چگونه امنیت را افزایش دهیم:- از نصب افزونه های غیرضروری خودداری کنید: فقط افزونه هایی را نصب کنید که واقعا برای عملکرد سایت شما حیاتی هستند. هر افزونه اضافی، یک نقطه ضعف بالقوه است.
- قبل از نصب هر افزونه، نظرات کاربران را با دقت بخوانید: اگر افزونه ای رفتار مشکوکی داشته باشد، معمولا یکی از کاربران پیش تر آن را گزارش کرده است.
- افزونه هایی را که دیگر استفاده نمی کنید غیرفعال کرده یا به طور کامل حذف کنید.
- از افزونه های امنیتی برای اسکن بدافزار استفاده کنید، اما با احتیاط: برخی افزونه ها توانایی اسکن سایت برای شناسایی بدافزار را دارند. با این حال، نباید صد در صد به آن ها اعتماد کرد؛ چرا که بدافزارهای جدید می توانند این ابزارها را دور بزنند.
- در صورت مشاهده رفتار غیرعادی در سایت، از متخصصان امنیتی کمک بگیرید: اگر احساس می کنید سایت شما آلوده شده، ممکن است نیاز به بررسی امنیتی تخصصی (Security Audit) داشته باشید. این کار می تواند آسیب پذیری ها یا کدهای مخرب پنهان را شناسایی کند.
5- پروتکل XML-RPC بدون محدودیت
یکی دیگر از آسیب پذیری های خاص وردپرس، مربوط به پروتکل XML-RPC است. این پروتکل در ابتدا برای برقراری ارتباط بین وردپرس و نرم افزارهای شخص ثالث طراحی شده بود. با این حال، از سال 2015 به بعد، وردپرس پشتیبانی از REST API را معرفی کرد که اکنون به مراتب بیشتر در تعاملات بین برنامه ها استفاده می شود. با وجود این پیشرفت، پروتکل XML-RPC همچنان به طور پیش فرض در وردپرس فعال است.
مشکل اینجاست که پروتکل XML-RPC می تواند توسط مهاجمان برای دو نوع حمله متفاوت علیه سایت شما مورد استفاده قرار گیرد. نوع اول، حملات بروت فورس (Brute-force) است که با هدف حدس زدن رمز عبور حساب های کاربری وردپرس انجام می شود. در این روش، مهاجمان با استفاده از XML-RPC می توانند تعداد زیادی تلاش ورود را در قالب یک درخواست واحد ترکیب کنند، که این کار روند هک را ساده تر و سریع تر میکند. نوع دوم، سوء استفاده از پروتکل XML-RPC برای اجرای حملات DDoS است. در این روش، مهاجم با کمک قابلیتی به نام "پینگ بک" (Pingback)، سایت شما را وادار می کند که به طور ناخواسته به سایت های دیگر حمله کند. یعنی سایت شما بدون اینکه متوجه باشید، در یک حمله سایبری علیه وب سایت های دیگر شرکت می کند.
چگونه امنیت را افزایش دهیم:- اگر قصد ندارید به این زودی ها از قابلیت XML-RPC استفاده کنید، بهتر است آن را در سایت وردپرس خود غیرفعال کنید. روش های مختلفی برای انجام این کار وجود دارد و در صورت نیاز، فعال سازی دوباره آن نیز دشوار نخواهد بود.
- اگر واقعا به استفاده از XML-RPC نیاز دارید، توصیه می شود دسترسی به آن را محدود کنید. این کار را می توان به راحتی با استفاده از افزونه های وردپرس انجام داد.
- همچنین برای جلوگیری از حملات Brute-force، می توانید اقدامات امنیتی اشاره شده در بخش دوم این مقاله را اجرا کنید: استفاده از رمزهای عبور قوی، فعال سازی احراز هویت دو مرحله ای و استفاده از مدیر رمز عبور. ضمنا این قابلیت ها به طور کامل در لایسنس محصول امنیتی ما برای کسب و کارهای کوچک یعنی Kaspersky Small Office Security نیز گنجانده شده است.