Faragiri

همهٔ زبان‌ها

آموزش امن‌سازی وردپرس وردپرس

سه راه ورود، و هیچ‌کدام هسته نیست: افزونه‌ای که به‌روز نشده، رمزی که تکراری بوده، و آپلود فایلی که بررسی نشده.

۴بخش
۲دقیقه خواندن
۵عمق

پنج لایه، پنج سوراخ

هر لایه چه چیزی را نگه می‌دارد و چه چیزی از آن رد می‌شود

لایه‌ای که فقط بگوید چه می‌گیرد آگهی است؛ ستون دوم است که می‌گوید لایه بعدی چرا لازم است.

  1. به‌روزرسانی خودکارآسیب‌پذیری‌های شناخته‌شده‌ای که اسکن خودکار دنبالشان می‌گرددافزونه‌ای که سازنده‌اش دیگر به‌روزش نمی‌کند
  2. حذف افزونه‌های بلااستفادهاجرای فایل یک افزونه غیرفعال از راه نشانی مستقیمافزونه‌ای که فعال است و لازم هم هست
  3. احراز دو مرحله‌ای برای مدیرورود با رمز لو رفته یا تکرارینشستی که پیش از این ربوده شده باشد
  4. بستن اجرای PHP در پوشه آپلوداجرای فایلی که از راه فرم آپلود بالا رفتهآپلودی که در پوشه دیگری بنشیند
  5. خاموش کردن ویرایشگر فایلاجرای کد با یک حساب مدیر لو رفته، بدون دسترسی به سروردسترسی مستقیم به فایل‌ها از راه پنل هاست
سایت و پایگاه داده‌اش

این پنج لایه درباره پیشگیری‌اند و نه درباره تشخیص. هیچ‌کدام نمی‌گویند سایت آلوده شده یا نه، و آن کار مقایسه فایل‌ها با نسخه رسمی است.

در تقریبا هر نفوذ وردپرسی که بررسی می‌شود، راه ورود یکی از سه چیز است و هیچ‌کدام هسته نیست: افزونه‌ای که کسی به‌روزش نکرده، رمزی که کاربر جای دیگری هم استفاده کرده، یا مسیر آپلود فایلی که نوع فایل را بررسی نمی‌کند.

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

یک نکته که همیشه غافلگیر می‌کند: فایل‌های یک افزونه غیرفعال هنوز روی سرور هستند و از راه نشانی مستقیم قابل اجرا. غیرفعال کردن کافی نیست و افزونه‌ای که استفاده نمی‌کنید باید حذف شود.

چه چیزی معمولا کاشته می‌شود

پس از ورود، محموله تقریبا همیشه یکی از دو چیز است: لینک‌های تبلیغاتی که در پایگاه داده تزریق می‌شوند و فقط برای موتور جست‌وجو دیده می‌شوند، یا یک ارسال‌کننده ایمیل که سرور شما را به یک ماشین هرزنامه تبدیل می‌کند.

هر دو عمدا بی‌سروصدا هستند و ماه‌ها دیده نمی‌شوند. اولی وقتی معلوم می‌شود که رتبه سایت افت کند، دومی وقتی که نشانی سرور در فهرست سیاه برود و ایمیل‌های واقعی سایت هم نرسند.

پنج کار که بیشترین اثر را دارند

به‌روزرسانی خودکار هسته و افزونه‌ها را روشن کنید. ویرایشگر فایل در پنل مدیریت را با یک ثابت خاموش کنید، چون یک حساب مدیر لو رفته با آن مستقیم کد اجرا می‌کند. اجرای PHP را در پوشه آپلود ببندید. احراز هویت دو مرحله‌ای را برای حساب‌های مدیر روشن کنید. و برای هر آپلود، نوع فایل را از محتوایش بررسی کنید و نه از پسوندش.

هیچ‌کدام از این پنج به افزونه امنیتی نیاز ندارند و هر پنج مورد از هر افزونه امنیتی موثرترند. لایه‌های عمومی‌تر همین دفاع در حمله‌هایی که یک سایت واقعا می‌گیرد است.

جایی که کار گیر می‌کند، افزونه‌های دستکاری‌شده و پشتیبان است

دو عادت رایج در ایران بیشترین سهم را در نفوذها دارند. اول، نصب افزونه و قالب تجاری از نسخه‌های دستکاری‌شده، که در آن‌ها کد اضافه چیزی است که خریدار حساب نکرده. دوم، نبود پشتیبان قابل بازیابی: خیلی از سایت‌ها پشتیبان دارند و هیچ‌وقت آزموده نشده، و روزی که لازم می‌شود معلوم می‌شود ناقص است یا روی همان سروری است که از دست رفته. آزمون پشتیبان یعنی یک بار بازیابی کامل روی یک نصب جدا، و اگر این کار را نکرده‌اید، پشتیبان ندارید. هر دو مسئله ارزان‌تر از پاک‌سازی یک سایت آلوده حل می‌شوند.

ابزار، و سالی که این حرف درست است

در سال ۲۰۲۶، WP-CLI دستوری دارد که همه فایل‌های هسته را با نسخه رسمی مقایسه می‌کند و هر فایل تغییریافته یا اضافه را گزارش می‌دهد؛ رایگان است و سریع‌ترین راه تشخیص آلودگی است. برای بررسی افزونه‌ها در برابر آسیب‌پذیری‌های شناخته‌شده، سرویس‌های پایگاه داده آسیب‌پذیری نسخه رایگان دارند. و به‌روزرسانی خودکار از سال‌ها پیش در هسته است و روشن کردنش یک تنظیم است.

پرسش بعدی این است که آن مسیرهایی که از بیرون قابل صدا زدن‌اند کدام‌اند و چه چیزی بدون ورود جواب می‌دهد، که وردپرس به‌عنوان بک‌اند چیزی دیگر است. و لایه‌ای که بیشتر این مسائل در آن ساخته می‌شوند در هوک، فیلتر، و نوشتن افزونه خودتان است.

کنار این

بالای این