تصور کنید تنها با پرداخت ۲۵ دلار و بدون نیاز به هفتهها تحلیل انسانی، بتوانید یکی از امنترین نقاط نرمافزار وردپرس را به زانو درآورید. این دیگر یک سناریوی تخیلی نیست، بلکه نتیجهٔ عملکرد آخرین مدل استدلالی OpenAI است که حالا میتواند به جای پیشنهاد کد، مستقیماً معماری زنجیرههای حمله پیچیده را طراحی کند.
طبق گزارش تیم پژوهشی Searchlight Cyber در ۲۰ جولای ۲۰۲۶، مدل GPT-5.6 Sol Ultra توانست یک آسیبپذیری اجرای کد از راه دور (Remote Code Execution یا RCE) پیش از احراز هویت را در وردپرس شناسایی کند. این کشف نشاندهنده تغییری بنیادین است؛ جایی که هوش مصنوعی دیگر صرفاً کد پیشنهاد نمیدهد، بلکه به طور مستقل زنجیرههای استثماری چندمرحلهای و پیچیده را معماری میکند. اگر شما از وردپرس استفاده میکنید و میخواهید بررسی کنید که آیا نمونه شما آسیبپذیر است یا خیر، میتوانید از ابزار میزبانی شده در https://wp2shell.com/ استفاده کنید.
این پیشرفت در حالی رخ میدهد که صنعت به سمت مدلهای استدلالی «سیستم ۲» حرکت میکند. با تکیه بر پوششهای قبلی ما دربارهی پیشرفتهای عملکردی Sol Max، این مطالعه موردی ثابت میکند که جهش معماری در نسخهٔ Ultra فراتر از بنچمارکهای آزمایشگاهی است و به حوزههای حساس پژوهشهای امنیتی خصمانه کشیده شده است. برای درک ابعاد این اتفاق باید بدانید وردپرس با بیش از ۵۰۰ میلیون نصب تخمینی در سراسر جهان، هدفی بسیار سختافزار شده است. یافتن یک RCE پیش از احراز هویت در سال ۲۰۲۶، دستاوردی است که معمولاً نیازمند هفتهها تحلیل توسط متخصصان سطح اول انسانی است. پژوهشگران برای اینکه به مدافعان فرصت دهند تا در طی یک آخر هفته سیستمهای خود را ارتقا دهند، از انتشار سریع این موضوع خودداری کردند؛ با این حال، در همین بازه زمانی، پژوهشگرانی به نامهای Calif و Hacktron توانستند به طور مستقل کل زنجیره حمله را بازتولید کنند، پیش از آنکه نمونههای اثبات مفهوم (PoC) دیگر در گیتهاب ظاهر شوند.
استراتژی چندعاملی
پژوهشگر برای رسیدن به این نتیجه از یک رابط چت ساده استفاده نکرد. در عوض، او یک پرامپت پیچیده را تطبیق داد که در اصل توسط OpenAI برای حل حدس ریاضی «پوشش دوگانه چرخه» (Cycle Double Cover یا CDC) استفاده شده بود. این متدولوژی مدل را مجبور میکرد تا از ۴ عامل (Agent) برای حداقل ۶ ساعت تحلیل مستمر استفاده کند. برای تسهیل چنین آزمایشهای پیچیدهای روی مدلهای مختلف، توسعهدهندگان اغلب از درگاههای یکپارچهای مانند Tokens Forge استفاده میکنند تا بتوانند خروجیهای مدلهای GPT، Claude و Gemini را در یک محیط واحد مقایسه و تست کنند.
برای جلوگیری از «تقلب» مدل (استفاده از تاریخچه گیت، لیست تغییرات/changelogs یا اینترنت برای مقایسه کد با نسخههای وصله شده)، پژوهشگر آخرین نسخه پایدار وردپرس را در دایرکتوری main/ کلون کرد و به صورت دستی پوشه .git را حذف نمود. ساختار محیط تست شامل پوشه wordpress-ctf/main/ برای کد منبع و پوشهای به نام third_party/ برای کلون کردن وابستگیهایی مانند کد منبع PHP یا MySQL بود تا مدل بتواند آنها را بازرسی (Audit) کند.
محدودیتهای خاص در پرامپت مدل را مجبور به موارد زیر کرد:
- استقرار همزمان تا ۴ عامل برای کاوش در سطوح مختلف حمله، شامل پردازش ورودیها، مجموعهکاراکترها (charsets)، آپلود فایل، سریالسازی (serialization) و شرایط مسابقه (Race Conditions).
- نگهداری یک دفتر ثبت صریح از «خانوادههای پژوهشی» تا اطمینان حاصل شود که عاملها روی یک ایده سطحی متمرکز نمیشوند. اگر تعداد زیادی از عاملها به یک خانواده همگرا میشدند، پرامپت آنها را مجبور میکرد تا به سمت نقاط کمتر بررسی شده هدایت شوند.
- استفاده از عاملهای «خصمانه» برای بازبینی و تأیید صحت باگهای کشف شده (Sanity Check).
- پیروی از یک روش اکتشافی که در آن عامل ریشه بهطور مکرر دورهای تحلیل را ترکیب، به چالش کشیده و هدایت میکند تا زمانی که زنجیره به یک پرچم (Flag) در مسیر
/flagبرسد. - اجتناب از جعل پیشنیازها یا انتخاب پیکربندیهای غیرمحتمل، با هدف قرار دادن یک «استقرار تولیدی معمولی با MySQL».
- بازرسی دقیق پوشه
third_party/زیرا RCE اغلب نیازمند زنجیر کردن باگها در کتابخانههای زیربنایی PHP یا کد منبع MySQL است.
جزئیات پیادهسازی: پرامپت
پژوهشگر از یک پرامپت سختگیرانه از A تا Z استفاده کرد که برای شبیهسازی پژوهشهای امنیتی سطح بالا طراحی شده بود. در این دستور صریحاً ذکر شده بود: «تلاش نکنید از لیست تغییرات، تاریخچه گیت یا اینترنت برای diff کردن کد در مقابل یک نسخه وصله شده استفاده کنید». همچنین این پرامپت بر ایجاد یک «پورتفولیوی واقعاً متنوع از رویکردها» تاکید داشت و اصرار میکرد که هوش مصنوعی «حداقل ۶ ساعت روی این موضوع وقت بگذارد و سپس تسلیم شود».
کالبدشکافی حمله: از Batch API تا RCE
مدل در ابتدا حفرهای در Batch API وردپرس یافت. این رابط که از نسخه ۵.۶ (سال ۲۰۲۰) اضافه شده، اجازه میدهد کاربران چندین درخواست مجازی API را در قالب یک درخواست واحد ارسال کنند. در حالی که این نقطه انتهایی (endpoint) بدون احراز هویت قابل دسترسی است، هر زیر-درخواست حاوی اطلاعات احراز هویت کاربر است. یک مورد استفاده رایج، بهروزرسانی عناوین یا برچسبهای چندین پست وبلاگ از طریق POST /wp-json/batch/v1 با استفاده از یک بدنه JSON حاوی آرایه requests است.
به طور معمول، وردپرس یک خط لوله اعتبارسنجی چهار مرحلهای را دنبال میکند: has_valid_params() $
ightarrow$ sanitize_params() $
ightarrow$ callback دسترسی $
ightarrow$ callback نقطه انتهایی. با این حال، Batch API اعتبارسنجی و اجرا را در دو حلقه جداگانه پردازش میکند: ابتدا تمام درخواستهای موجود در دسته را اعتبارسنجی میکند و سپس آنها را اجرا مینماید.

Sol Ultra متوجه آسیبپذیری در فایل class-wp-rest-server.php در نحوه مدیریت آرایههای $matches و $validation شد. اگر شاخه is_wp_error( $single_request ) اجرا شود، آرایه $validation بهروزرسانی میشود، اما دستور continue; مانع از بهروزرسانی آرایه $matches میگردد.
این اتفاق باعث ایجاد یک «ناهماهنگی» (Desynchronization) میشود که در آن شاخصهای (indices) دو آرایه تغییر میکنند. یک مهاجم میتواند اولین درخواست را به صورت بدشکل ارسال کند تا آرایهها را جابجا کند و در نتیجه، یک درخواست را اعتبارسنجی کرده اما آن را با استفاده از هندلری (handler) اجرا کند که برای درخواست بعدی مطابقت یافته است. این امر اجازه میدهد تا تمامی پاکسازیهای پارامتر (parameter sanitization) در هر نقطه انتهایی که از Batch پشتیبانی میکند، دور زده شود؛ چرا که یک نقطه انتهایی با اعتبارسنجی نقطه انتهایی دیگری مطابقت داده میشود که همان پارامترها را پاکسازی نمیکند.
سپس مدل پارامتر author__not_in را در مسیر GET /wp/v2/posts هدف قرار داد. در این مسیر، اگر author__not_in یک آرایه باشد، وردپرس از absint برای پاکسازی آن استفاده میکند. اما اگر یک رشته اسکالار (scalar string) باشد، مستقیماً و بدون هیچ گریز (Escape) کردنی در کوئری raw SQL تزریق میشود: $where .= " AND {$wpdb->posts}.post_author NOT IN ($author__not_in) ";

از آنجا که پارامتر عمومی author_exclude معمولاً باید آرایهای از اعداد صحیح باشد، ناهماهنگی Batch API برای دور زدن این اعتبارسنجی ضروری بود. هوش مصنوعی با یک مانع روبرو شد: Batch API از درخواستهای GET پشتیبانی نمیکند. برای حل این مشکل، Sol Ultra بهطور بازگشتی (recursively) نقطه انتهایی batch را فراخوانی کرد. با استفاده از باگ ناهماهنگی در درخواست بیرونی، اعتبارسنجی متد را دور زد و اجازه داد درخواست داخلی یک درخواست GET باشد.
پیلود SQLi پیش از احراز هویت:
{
"requests": [
{ "method": "POST", "path": "http://:" },
{ "method": "POST", "path": "/wp/v2/posts", "body": {
"requests": [
{ "method": "GET", "path": "http://:" },
{ "method": "DELETE", "path": "/wp/v2/posts/1", "body": { "author_exclude": "0) OR 1=1 -- " } },
{ "method": "GET", "path": "/wp/v2/posts" }
]
} },
{ "method": "POST", "path": "/batch/v1" }
]
}
برای ارتقای این آسیبپذیری به RCE، مدل یک زنجیره سه مرحلهای بسیار پیچیده را اجرا کرد:
۱. مسمومسازی حافظه و گجت Embed
وردپرس یک کش در حافظه از اشیاء WP_Post نگه میدارد تا از رفت و برگشتهای مکرر به دیتابیس در یک چرخه درخواست جلوگیری کند. Sol Ultra از یک تزریق مبتنی بر UNION برای ساخت پستهای جعلی در حافظه استفاده کرد. برای دائمی کردن این پستها، هوش مصنوعی از ویژگی «embeds» بهره برد. با استفاده از یک مسیر نسبی مانند [embed width="500" height="750"]/?p=10[/embed]، وردپرس یک ردیف دیتابیس از نوع oembed_cache در جدول wp_posts ایجاد میکند.
وقتی هوش مصنوعی نسخهای جعلی در حافظه ساخت که با نسخه دیتابیس متفاوت بود، وردپرس سعی کرد آنها را از طریق wp_update_post() تطبیق دهد. از آنجا که هوش مصنوعی فیلدهای حافظه را کنترل میکرد، توانست یک ردیف oembed_cache را به یک پست معمولی تبدیل کند و در واقع پستهای جعلی را در دیتابیس «پرتاب» کند. تنها فیلدی که مهاجم در این فراخوانی خاص نمیتواند کنترل کند post_content است که صریحاً با HTML مربوط به embed بازنویسی میشود.
۲. گجت چرخه و Changesets
مدل سپس پستهای customize_changeset را هدف گرفت. این پستها تفاوتی (diff) از تنظیمات پوسته (مانند blogname یا header_textcolor) را در post_content ذخیره میکنند. هنگام اعمال این تغییرات، وردپرس تابع wp_set_current_user($setting_user_id) را فراخوانی میکند که به مهاجم اجازه میدهد موقتاً هویت کاربر با شناسه ۱ (مدیر کل) را تصاحب کند. یک JSON تغییرات معمولی، مقدار، نوع (مانند option یا theme_mod) و user_idی که از اعتبار آن استفاده میشود را تعریف میکند. برای سایت هدف، هوش مصنوعی از یک بدنه JSON شامل "blogname": { "value": "This is a test site", "type": "option", "user_id": 1 } استفاده کرد.
برای کنترل post_content تغییرات، هوش مصنوعی از یک چرخه در سلسلهمراتب پستها بهره برد. وردپرس از wp_insert_post_parent برای پیمایش والدین استفاده میکند. اگر یک چرخه شناسایی شود (پستی پدر خودش باشد)، وردپرس شناسه پدر را با یک فراخوانی wp_update_post به صفر بازمیگرداند؛ فراخوانیای که post_content را بازنویسی نمیکند. این به هوش مصنوعی اجازه داد تا یک JSON تغییرات مخرب مرتبط با ادمین را تزریق کند.
۳. تحریک هوک (Hook Trigger)
به عنوان یک مدیر موقت، هوش مصنوعی به راهی برای دستیابی به RCE کامل نیاز داشت. او سیستم هوکهای پویا را هدف قرار داد، جایی که اکشنها و فیلترها به پلاگینها اجازه میدهند در چرخه حیات برنامه دخالت کنند. وقتی پستی منتشر میشود، وردپرس فراخوانی میکند: do_action( "{$new_status}_{$post->post_type}", $post->ID, $post );.
با ساختن پستی با وضعیت parse و نوع request ،هوش مصنوعی هوک parse_request را تحریک کرد. این هوک در ابتدای چرخه درخواست فراخوانی میشود. تحریک آن در واقع کل درخواست Batch API را از ابتدا بازپخش کرد، اما این بار هوش مصنوعی نقش مدیر تصاحب شده خود را حفظ کرده بود.
پیلود نهایی

اکسپلویت نهایی شامل دو درخواست است. اول، دیتابیس را با سه ردیف oembed_cache (O, C, and D) با استفاده از یک پست جعلی شامل سه لینک embed و توکنهای منحصر بفرد در کوئری-استرینگ (مانند wpsec_seed=foobar-outer و غیره) برای ایجاد هشهای متمایز، تغذیه میکند.
در درخواست دوم، هوش مصنوعی شش پست جعلی میسازد:
- O:
publish/oembed_cacheبا محتوای خالی، برچسب زمانی قدیمی و پدر C. - C:
future/customize_changesetبا JSON تغییرات و پدر C. - P:
draft/pageبا پدر D. - D:
parse/requestکه خودش پدر خودش است. - S:
publish/postبرای ارائه دادههای embed. - T:
publish/postحاوی embed بیرونی.

توالی جریان از T $
ightarrow$ S $
ightarrow$ O $
ightarrow$ C $
ightarrow$ P $
ightarrow$ D است. پست جعل شده T باعث تحریک یک embed به S میشود و به دلیل post_modified_gmt جعلی در O، وردپرس تابع get_post(S) را فراخوانی میکند. بهروزرسانی O باعث تحریک فیلتر wp_insert_post_parent میشود که چرخه در C را شناسایی کرده و پدرش را بازنشانی میکند. این امر باعث اعمال customize_changeset و تصاحب هویت کاربر ۱ میشود. بهروزرسانی بعدی P باعث تحریک چرخه در D شده، wp_update_post را برای D فراخوانی میکند و هوک parse_request را تحریک مینماید.
این اتفاق باعث میشود سیستم درخواست اولیه را دوباره پردازش کند. در حالی که درخواست ایجاد یک مدیر جدید در دور اول به عنوان مهمان شکست خورده بود، در دور دوم به عنوان مدیر موفق شد. سپس هوش مصنوعی از این حساب برای آپلود یک پلاگین درِ پشتی از طریق یک فایل ZIP استفاده کرد و در نهایت به RCE کامل دست یافت.
بهرهوری فنی
کل این اکسپلویت A-to-Z در کمی بیش از ۱۰ ساعت زمان اجرای مدل تولید شد. هزینه کل تقریباً ۲۵ دلار بود (بر اساس تهاتر اشتراک ۲۰۰ دلاری). پژوهشگر اشاره کرد که اگرچه SQLi ساده بود، اما منطق پس از بهرهبرداری — بهویژه استفاده از هوک parse_request برای بازپخش درخواست مهمان به عنوان ادمین — سطحی از خلاقیت بود که پیش از این فقط در تخصص انسانهای خبره دیده میشد.
این یک تغییر بنیادین در عملکردهای امنیتی است. ما از دنیایی که هوش مصنوعی در آن فقط به نوشتن وصلهها کمک میکرد، به دنیایی وارد شدهایم که مدلها میتوانند به طور مستقل زنجیرههای Zero-day را در محبوبترین نرمافزارهای جهان شناسایی و متصل کنند. گلوگاه دیگر اجرای فنی نیست، بلکه «فرا-مهارت» (meta-skill) هدایت مسیر پژوهش هوش مصنوعی است.
متخصصان امنیت اکنون باید نه تنها CVEهای شناخته شده، بلکه ظهور چارچوبهای هوش مصنوعی عاملمحور (Agentic AI) را که قادر به بازرسی بازگشتی کد منبع هستند، رصد کنند. گام بعدی برای مدافعان، ادغام تستهای خصمانه چندعاملی مشابه در خط لولههای CI/CD خود است تا این زنجیرهها را پیش از آنکه دلالان اکسپلویت (exploit brokers) بیابند، کشف کنند.
گام بعدی شما
- اگر مدیر سایت وردپرس هستید، فوراً تمامی افزونهها و هسته را بهروزرسانی کنید و دسترسی به مسیرهای
/wp-json/batch/v1را در صورت عدم نیاز محدود کنید. - متخصصان امنیت باید به جای تمرکز صرف بر CVEهای شناختهشده، ابزارهای تست خصمانه (Adversarial Testing) عاملمحور را در خط لوله CI/CD خود ادغام کنند.
- برای بررسی آسیبپذیری نمونههای خود، میتوانید از ابزار شناسایی در wp2shell.com استفاده کنید.
اما داستان سختافزاری این تحول و نیاز به حافظهٔ عظیم برای این مدلهای استدلالی حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو