PHP دو آسیبپذیری حیاتی را به دلیل نشت اطلاعات مجبور به انتشار زودهنگام کرد
پس از یک شب پرآشوب، جزئیات بیشتری از رویدادهای پیرامون انتشار دو آسیبپذیری حیاتی در PHP آشکار میشود. این آسیبپذیریها که با نام PHP2Shell شناخته میشوند، میتوانند به مهاجمان بدون احراز هویت اجازه اجرای کد دلخواه بر روی سرورهای PHP را بدهند.
در ابتدا، بنیاد PHP قصد داشت این دو آسیبپذیری را در تاریخ ۲۲ اکتبر ساعت ۱۰ شب (به وقت UTC+8) به صورت عمومی منتشر کند. اما در شامگاه ۲۰ اکتبر، حدود ساعت ۱۱ شب، اطلاعات مربوط به این آسیبپذیریها در انجمنهای آنلاین و شبکههای اجتماعی منتشر شد. این نشت اطلاعات، بنیاد PHP را مجبور کرد تا انتشار را یک روز زودتر، در تاریخ ۲۱ اکتبر ساعت ۱۰ شب، انجام دهد و این امر برنامه هماهنگی مخفیانهای را که حدود دو ماه به طول انجامیده بود، مختل کرد.
این دو آسیبپذیری با شناسههای CVE-2026-109618 و CVE-2026-109619 (CVE مخفف Common Vulnerabilities and Exposures است و به شناسههای عمومی آسیبپذیریهای امنیتی اشاره دارد) شناخته میشوند. هماهنگی این امنیتی توسط OpenAI رهبری شده بود. این شرکت در بیانیهای اعلام کرد که در دو ماه گذشته، اتحادیهای متشکل از نگهدارندگان پروژه، محققان امنیتی و شرکتهای فعال در حوزه امنیت سایبری را برای رسیدگی به این موضوع هدایت کرده است.
الکساندر دوبوا، یکی از اعضای بنیاد PHP، در وبلاگ شخصی خود نوشت که در همان روز چندین مورد نشت اطلاعات رخ داده است. ابتدا یک پست ناشناس در Hacker News با استناد به “منبع موثق” منتشر شد که بعداً حذف گردید، اما اسکرینشاتهای آن در X و Mastodon منتشر شد. همزمان، تصویری از ابزار PHP2Shell با برچسب Calif.IO نیز فاش شد.
ریشههای ماجرا
این رویدادها از ۳۰ جولای آغاز شد. شرکت امنیتی Calif در چارچوب برنامه “Patch the Planet” شرکت OpenAI، پروژه PHP را مورد ممیزی قرار داد. در ۱۱ آگوست، Calif و OpenAI به طور همزمان یک ریشه مشترک برای این آسیبپذیری را گزارش کردند. بنیاد PHP در توضیحات بعدی خود اشاره کرد که نشانههای این ریشه در سال ۲۰۲۴ مشاهده شده بود. در ۲۵ سپتامبر، درخواست ادغام برای اعمال وصله امنیتی (pull request) باز شد که به گفته دوبوا، ۳۹۰ فایل را تحت تأثیر قرار داد.
هماهنگی گسترده و نشت اطلاعات
افراد مطلع از این موضوع کم نبودند. OpenAI اعلام کرد که همراه با نگهدارندگان پروژه و شرکای تحقیقاتی، وصلههای امنیتی را آزمایش کرده و دستورالعملهای لازم را آماده کرده است. همچنین با اپراتورهای زیرساخت برای آمادهسازی دفاعها تماس گرفته و با تیمهای امنیت سایبری کاخ سفید، دفتر ملی مدیر امنیت سایبری (ONCD) و سازمان CISA در آمریکا و شرکای بینالمللی ارتباط برقرار کرده بود. توزیعکنندگان لینوکس و شرکتهای ارائهدهنده پشتیبانی بلندمدت (LTS) نیز پیش از انتشار عمومی، وصلههای امنیتی را دریافت کرده بودند تا کاربران بتوانند در روز انتشار، سیستمهای خود را بهروزرسانی کنند.
OpenAI لیست کامل شرکتکنندگان و تعداد آنها را منتشر نکرد و اعلام کرد که تصمیمگیری در مورد لیست نهایی بر عهده نگهدارندگان پروژه بوده است. طبق چارچوب OpenAI، هر شرکتکننده اطلاعات متفاوتی دریافت میکرد، از سوابق شبکه گرفته تا کدهای اجرایی حمله. OpenAI اذعان کرد که حتی جزئیات محدود نیز میتواند آسیبپذیری را فاش کند و بنابراین باید بین ریسک افشا و مزایای حفاظتی تعادل برقرار شود.
انتشار زودهنگام و واکنشها
در ساعت ۳:۳۰ بامداد ۲۱ اکتبر، php.net پیشاعلامیهای منتشر کرد و زمان انتشار را به ۱۰ شب همان روز موکول کرد. بنیاد PHP توضیح داد که انتشار فوری صورت نگرفته است زیرا بستههای بهروزرسانی هنوز در حال آمادهسازی بودند و انتشار فوری باعث میشد بسیاری از کاربران دسترسی سادهای برای بهروزرسانی نداشته باشند. انتشار یک روز زودتر، یک مصالحه بود. در متن پیشاعلامیه نیز ذکر شده بود که در صورت افشای جزئیات یا وقوع حملات واقعی، حق تسریع بیشتر در انتشار محفوظ است.
حدود ساعت ۴ بامداد، شرکت Calif که یکی از گزارشدهندگان بود، ظاهراً به اشتباه ویدیویی را منتشر کرد که در آن یک اثبات مفهوم حمله (PoC) بر روی چندین هدف اجرا میشد و جزئیات محدودی را فاش میکرد. این ویدئو حذف شد، اما نسخههای کپی آن در جامعه منتشر شد و باعث تسریع در ظهور PoCهای مختلف گردید. بنیاد PHP از حدود ساعت ۷ صبح توصیههای کاهش ریسک را برای تعداد کمی از اپراتورهای زیرساخت حیاتی ارائه داد که احتمالاً آنها نیز نشت کردهاند. بنیاد اعلام کرد که PoCهای فاش شده را رصد کرده و تا زمان انتشار، هیچ کد حمله قابل استفادهای مشاهده نکروده است.
جنجال Chainguard
بحثبرانگیزترین بخش در ساعت ۳:۴۱ بعد از ظهر رخ داد، زمانی که Chainguard، بیش از شش ساعت زودتر از برنامه هماهنگ شده، ایمیجهایی (محیطهای اجرایی از پیش بستهبندی شده با وصلههای امنیتی که قابل استقرار مستقیم هستند) حاوی وصلههای امنیتی را منتشر کرد. بنیاد PHP این اقدام را “شکستن یکطرفه ممنوعیت انتشار” نامید. این ممنوعیت توسط طرفهای درگیر توافق شده بود تا از انتشار هرگونه اطلاعات قبل از زمان عمومی خودداری شود. مهاجمان میتوانستند از فایلهای باینری (فایلهای برنامهنویسی شده کامپایل شده) برای مطالعه وصلههای امنیتی استفاده کنند، در حالی که سایر کاربران PHP هنوز منتظر بودند و این امر تلاشهای چندین هفتهای طرفهای مختلف را نادیده میگرفت.
دن لورنس، مدیرعامل Chainguard، در پاسخی در Hacker News اظهار داشت که او با تیم خود هماهنگ بوده است، اما “هنگامی که حملات در محیط واقعی رخ داد، تصمیم گرفتم زودتر منتشر کنم.” او همچنین اعلام کرد که ایمیجها به صورت رایگان ارائه شدهاند. دو روایت متفاوت وجود دارد: بنیاد PHP میگوید تا زمان انتشار، کد حمله قابل استفادهای مشاهده نکرده است، در حالی که لورنس ادعا میکند حملات در خارج از محیط پروژه در حال وقوع بوده است. در ساعت ۱۰ شب، نسخههای PHP 8.5.12، 8.4.27، 8.3.36 و 8.2.35 طبق برنامه جدید منتشر شدند.
در چارچوب پیشنهادی OpenAI، بندی وجود دارد که در صورت وقوع حملات واقعی، نشت اطلاعات یا افشای جزئیات از طریق انتشار وصلههای امنیتی، برنامه زمانی باید مجدداً ارزیابی شود. انتشار زودهنگام PHP دقیقاً همین اقدام بود.
در پایان، OpenAI از جامعه برای دریافت نظرات در مورد نحوه اطلاعرسانی، از جمله اطلاعرسانی مرحلهای یا اطلاعرسانی به افراد بیشتر به صورت همزمان، و چگونگی تعادل بین پوشش گسترده و ریسک نشت اطلاعات، درخواست کرده است. تجربه اخیر PHP در این زمینه، نمونهای عینی از این موضوع است. مقاله OpenAI به نشت اطلاعات، ویدیوی Calif یا Chainguard اشارهای نکرده است؛ Calif یکی از شرکای برنامه Patch the Planet بود.
در مجموع، این نشت اطلاعات برنامه زمانی را مختل کرد، اما ماهیت اقدامات لازم را تغییر نداد.

Leave a Reply