نقص جدید هسته وردپرس در wp2shell به مهاجمان غیرمجاز اجازه اجرای کد می‌دهد

به‌روزرسانی ۱۸ ژوئیهٔ ۲۰۲۶: دو نقص اکنون شناسه‌های CVE دارند، سازوکار کامل حمله منتشر شده، شرطی مرتبط با «کش شیء پایدار» مطرح شده و یک اثبات مفهومیِ عملی نیز به‌صورت عمومی منتشر شده است. گزارش زیر همهٔ این موارد را منعکس می‌کند.

آنچه در این مقاله می‌خوانیم

به‌روزرسانی ۱۸ ژوئیهٔ ۲۰۲۶: دو نقص اکنون شناسه‌های CVE دارند، سازوکار کامل حمله منتشر شده، شرطی مرتبط با «کش شیء پایدار» مطرح شده و یک اثبات مفهومیِ عملی نیز به‌صورت عمومی منتشر شده است. گزارش زیر همهٔ این موارد را منعکس می‌کند.

یک درخواست HTTP ناشناس می‌تواند روی یک سایت وردپرسی کد اجرا کند. این آسیب‌پذیری در هستهٔ وردپرس است؛ بنابراین حتی یک نصب خام، بدون هیچ افزونه‌ای، نیز قابل بهره‌برداری است. همهٔ سایت‌های نسخهٔ ۶.۹ و ۷.۰ تا روز جمعه در معرض خطر بودند؛ تا زمانی که وردپرس نسخه‌های ۶.۹.۵ و ۷.۰.۲ را منتشر کرد و آنچه را «به‌روزرسانی اجباری» می‌نامد، از طریق سامانهٔ به‌روزرسانی خودکار فعال کرد.

wp2shell در واقع دو آسیب‌پذیری است، نه یک مورد، و هر دو اکنون شناسهٔ CVE دارند. CVE-2026-63030 مربوط به آشفتگی در مسیرهای دسته‌ای REST API است و CVE-2026-60137 یک تزریق SQL در هستهٔ وردپرس است. ترکیب این دو، یک درخواست ناشناس را تا اجرای کد پیش می‌برد.

از روز جمعه، سازوکار کامل حمله منتشر شده و یک اثبات مفهومیِ عملی نیز در GitHub قرار گرفته است.

آدام کوئس از Assetnote، بازوی مدیریت سطح حملهٔ Searchlight Cyber، نقص مربوط به مسیر دسته‌ای را پیدا کرد و آن را از طریق برنامهٔ HackerOne وردپرس گزارش داد.

در گزارش فنی منتشرشده با نام wp2shell آمده است که این حمله «هیچ پیش‌شرطی ندارد و می‌تواند توسط یک کاربر ناشناس بهره‌برداری شود». آسیب‌پذیری تزریق SQL نیز جداگانه توسط TF1T، dtro و haongo گزارش شده است.

Searchlight هنوز گزارش فنی خود را منتشر نکرده و مالکان سایت‌ها را به ابزار بررسی در wp2shell.com ارجاع داده است. اما این احتیاط اکنون چندان تعیین‌کننده نیست: وصله عمومی شده و پژوهشگران دیگر آن را خوانده‌اند.

این دو آسیب‌پذیری نسخه‌های یکسانی را تحت تأثیر قرار نمی‌دهند، و همین نکته مشخص می‌کند چه کسانی در معرض چه خطری هستند. تزریق SQL به نسخهٔ ۶.۸ بازمی‌گردد. اما آشفتگی مسیر دسته‌ای، یعنی بخشی که یک تزریق محدود را به اجرای کد از راه دورِ بدون احراز هویت تبدیل می‌کند، فقط از نسخهٔ ۶.۹ به بعد وجود دارد.

بنابراین بازه‌ها چنین تفکیک می‌شوند:

  • نسخه‌های ۶.۸.۰ تا ۶.۸.۵: فقط تزریق SQL، رفع‌شده در ۶.۸.۶
  • نسخه‌های ۶.۹.۰ تا ۶.۹.۴: زنجیرهٔ کامل اجرای کد از راه دور، رفع‌شده در ۶.۹.۵
  • نسخه‌های ۷.۰.۰ تا ۷.۰.۱: زنجیرهٔ کامل اجرای کد از راه دور، رفع‌شده در ۷.۰.۲

نسخهٔ ۷.۱ بتا ۲ هر دو اصلاح را در خود دارد. یک سایت مبتنی بر نسخهٔ ۶.۸ از طریق این زنجیره در برابر اجرای کد از راه دور قابل بهره‌برداری نیست؛ به همین دلیل نسخهٔ ۶.۸.۶ فقط تزریق SQL را وصله می‌کند.

وردپرس اعلام نکرده است که آیا این به‌روزرسانی اجباری به سایت‌هایی که به‌روزرسانی خودکار را غیرفعال کرده‌اند نیز می‌رسد یا نه. به‌جای فرض کردن، نسخهٔ واقعی در حال اجرای سایت خود را بررسی کنید.

پست Searchlight برآورد می‌کند که بیش از ۵۰۰ میلیون وب‌سایت از وردپرس استفاده می‌کنند. این عدد کل پایگاه نصب وردپرس است، نه مجموعهٔ سایت‌های در معرض خطر. زنجیرهٔ اجرای کد از راه دور فقط از نسخهٔ ۶.۹ وجود دارد؛ نسخه‌ای که در ۲ دسامبر ۲۰۲۵ منتشر شد. بنابراین هر سایتی که در معرض مسیر اجرای کد قرار دارد، نسخه‌ای کمتر از هشت ماه قدمت را اجرا می‌کند، و هیچ هشدار امنیتی‌ای اعلام نکرده تعداد این سایت‌ها چقدر است.

این زنجیره از دو خطای کوچک تشکیل شده است. تزریق در پارامتر author__not_in مربوط به WP_Query قرار دارد: اگر به‌جای آرایه، یک رشته به آن داده شود، بررسی‌ای که انتظار آرایه دارد دور زده می‌شود و مقدار خام وارد کوئری می‌گردد.

رسیدن به این پارامتر بدون ورود به حساب کاربری، وظیفهٔ endpoint دسته‌ای است. مسیر /wp-json/batch/v1 در وردپرس چندین زیر‌درخواست را در یک فراخوانی اجرا می‌کند و آن‌ها را در دو آرایهٔ موازی دنبال می‌کند؛ خطا در یکی از زیر‌درخواست‌ها باعث می‌شود این آرایه‌ها یک خانه از هم عقب یا جلو بیفتند، در نتیجه یک درخواست زیر هندلرِ درخواست دیگری اجرا می‌شود.

وقتی این آشفتگی به‌صورت تو‌در‌تو استفاده شود، از فهرست مجاز endpoint عبور می‌کند و ورودی مهاجم را بدون احراز هویت به کوئری آسیب‌پذیر می‌رساند. endpoint دسته‌ای از نسخهٔ ۵.۶ در سال ۲۰۲۰ وجود داشته است؛ اما آشفتگی‌ای که از آن سوءاستفاده می‌کند، از نسخهٔ ۶.۹ اضافه شده است.

امتیازدهی‌ها ارزش توجه دقیق دارند. هشدار خود وردپرس، زنجیرهٔ اجرای کد از راه دور را «بحرانی» ارزیابی کرده است. اما رکورد CVE آن امتیاز ۷.۵، یعنی فقط «بالا»، دارد و معیارهای اثرگذاری آن تنها دسترسی به داده را لحاظ کرده‌اند، نه از دست رفتن یکپارچگی یا دسترس‌پذیری که معمولاً از اجرای کد انتظار می‌رود. در مقابل، تزریق SQL امتیازی بالاتر از ۹.۱ و در سطح «بحرانی» دارد.

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

یک شرط دامنهٔ آسیب را محدودتر می‌کند. طبق اعلام Cloudflare، مسیر اجرای کد فقط زمانی کار می‌کند که سایت از کش شیء پایدار استفاده نکند؛ Cloudflare هم‌زمان با افشا، قوانین WAF خود را منتشر کرد. نصب پیش‌فرض وردپرس چنین کشی ندارد، بنابراین نصب‌های پیش‌فرض همچنان در معرض خطر هستند.

سایتی که وردپرس را همراه با Redis یا Memcached به‌عنوان کش شیء پایدار اجرا می‌کند، ممکن است از این مسیر خاص در امان باشد؛ اما این یک اثر جانبی است، نه راه‌حل، و تزریق SQL را نیز پوشش نمی‌دهد.

با اختصاص شناسه‌های CVE، اسکنرها بالاخره می‌توانند آن را شناسایی کنند: Rapid7 اعلام کرده بررسی‌های احراز‌هویت‌شده برای InsightVM و Nexpose در ۲۰ ژوئیه ارائه می‌شوند. این آسیب‌پذیری هنوز در فهرست KEV سازمان CISA قرار نگرفته است؛ فهرستی که نیازمند تأیید بهره‌برداری واقعی است. تا ۱۸ ژوئیه نیز گزارشی از بهره‌برداری واقعی منتشر نشده است. اما این دلگرمی از آنچه به نظر می‌رسد ضعیف‌تر است.

بهره‌برداری گسترده از وردپرس حالا خود به یک صنعت تبدیل شده است. پیش از آنکه سرور گروه WP-SHELLSTORM در ماه ژوئن نشت کند، همین گروه تنها از طریق یک نقص در افزونهٔ کش، طبق شمارش خودش، به بیش از ۱۷ هزار سایت نفوذ کرده بود؛ آن هم با باگی که پیش‌تر عمومی شده، وصله شده و فقط روی یک تنظیم غیرپیش‌فرض کار می‌کرد. این مورد اما عمومی شده، وصله شده و روی تنظیمات پیش‌فرض کار می‌کند.

اگر امروز نمی‌توانید به‌روزرسانی کنید

همهٔ راهکارهای کاهشی Searchlight در نهایت به یک چیز برمی‌گردند: جلوگیری از دسترسی درخواست‌های ناشناس به endpoint دسته‌ای. همهٔ این‌ها موقت‌اند تا زمانی که به‌روزرسانی انجام شود، و همه می‌توانند یکپارچه‌سازی‌های مشروع را مختل کنند:

  • در WAF، هر دو مسیر /wp-json/batch/v1 و rest_route=/batch/v1 را مسدود کنید. هر دو باید بسته شوند، چون قانونی که فقط مسیر /wp-json را پوشش دهد، مسیر مبتنی بر query string را باز می‌گذارد. Cloudflare می‌گوید WAF مدیریت‌شدهٔ آن اکنون این زنجیره را برای سایت‌هایی که پشت آن هستند مسدود می‌کند.
  • WP REST API را غیرفعال کنید؛ این کار دسترسی REST بدون احراز هویت را به‌طور کلی از کار می‌اندازد.
  • از افزونهٔ کوتاه drop-in که Searchlight منتشر کرده استفاده کنید؛ این افزونه درخواست‌های ناشناس به /batch/v1 را در rest_pre_dispatch رد می‌کند.

هستهٔ وردپرس متن‌باز است و انتشار جدید، نام فایل‌های تغییر‌یافته را اعلام می‌کند. همین همیشه کافی بود. Searchlight گزارش فنی خود را نگه داشت؛ اما ظرف یک روز، پژوهشگران دیگر وصله را خواندند، سازوکار را منتشر کردند و یک اکسپلویت در GitHub قرار دادند؛ دقیقاً همان سناریویی که فرایند افشا تلاش داشت از آن جلو بزند.

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

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

مقالات مشابه

انتشار ورژن 22 فایروال سوفوس MR2
فایروال سوفوس ورژن 22 mr2 با هدف تقویت معماری «امنیت در طراحی» (Secure by Design) منتشر...
مطالعه کنید

نقص جدید هسته وردپرس در wp2shell به مهاجمان غیرمجاز اجازه اجرای کد می‌دهد
به‌روزرسانی ۱۸ ژوئیهٔ ۲۰۲۶: دو نقص اکنون شناسه‌های CVE دارند، سازوکار کامل حمله منتشر شده، شرطی...
مطالعه کنید

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