مدل هوش مصنوعی باگ خطرناکی را در PHP کشف کرد که وبسایتهای دولتی را از دسترس خارج کرد

نقصی که ۱۴ سال بدون شناسایی در کدهای PHP باقی مانده بود، در ماه اوت و زمانی آشکار شد که یک پژوهشگر از یک مدل هوش مصنوعی شرکت OpenAI برای بررسی ساختار داخلی این زبان برنامهنویسی استفاده کرد. کمتر از دو ماه بعد، دولتهای چند کشور اروپایی برای آنکه هدف حملات قرار نگیرند، وبسایتهای خود را از دسترس خارج کردند.
بنیاد PHP در ۲۱ اکتبر وصلههای اضطراری دو آسیبپذیری بحرانی با شناسههای CVE-2026-109618 و CVE-2026-109619 را منتشر کرد. این دو آسیبپذیری که اکنون با نام PHP2Shell شناخته میشوند، در مقیاس شدت آسیبپذیری CVSS امتیاز ۹٫۲ از ۱۰ را گرفتهاند. هر دو نقص به مهاجم اجازه میدهند بدون نیاز به ورود به حساب کاربری، روی یک سرور آسیبپذیر کد اجرا کند. طبق اعلام OpenAI، حدود ۷۰ درصد از وبسایتهای جهان که زبان برنامهنویسی سمت سرور آنها مشخص است، از PHP استفاده میکنند. بنابراین، با یک نقص محدود به چارچوبی ناشناخته روبهرو نیستیم؛ این آسیبپذیری در لایه زیرین سامانههایی مانند WordPress، Drupal، Laravel و Magento نیز وجود دارد، هر جا که این سامانهها با نسخهای آسیبپذیر از PHP اجرا شوند.
اما این نقص چگونه کشف شد؟ در ماه اوت، پژوهشگری به نام رایان آستین در شرکت امنیت سایبری Calif، مستقر در کالیفرنیا، از مدل GPT-5.6 Sol شرکت OpenAI برای بررسی موشکافانه کد منبع PHP استفاده کرد. این بررسی در چارچوب ابتکار «Patch the Planet» شرکت OpenAI انجام شد و به شناسایی نسخهای ناقص از این آسیبپذیری انجامید. تیم داخلی OpenAI نیز در ماه سپتامبر نسخه کاملتری از همین نوع نقص را پیدا کرد. در همین حال، پژوهشگران شرکت Wiz، فعال در حوزه امنیت ابری گوگل، بدون اطلاع از این دو تلاش، مستقلاً هر دو آسیبپذیری را کشف کردند. به این ترتیب، سه گروه مستقل به یک حفره امنیتی ۱۴ ساله در سازوکار مدیریت حافظه PHP رسیدند. گرگ براکمن، رئیس OpenAI، گفت که این شرکت سپس دو ماه بیسروصدا با تیم امنیتی PHP برای هماهنگی و آمادهسازی اصلاحات همکاری کرد تا پیش از انتشار عمومی اطلاعات، مشکل برطرف شود.
این دو آسیبپذیری از دو بخش متفاوت یک مشکل مشترک ناشی میشوند: نحوه مدیریت حافظه توسط فرایندهای اجرایی PHP هنگام رسیدگی به درخواستها. آسیبپذیری CVE-2026-109618 از نوع «استفاده پس از آزادسازی حافظه» (Use-After-Free) است. این نقص زمانی رخ میدهد که PHP در میانه پردازش یک درخواست با کمبود حافظه مواجه شود؛ در نتیجه، بخشی از دادههای داخلی درخواست بهطور کامل مقداردهی اولیه نمیشوند، اما کد پاکسازی همچنان به آنها دسترسی پیدا میکند.
آسیبپذیری CVE-2026-109619 به باقی ماندن وضعیت قدیمی در متغیرهای سراسری مربوط است. در این حالت، یک فرایند اجرایی PHP ممکن است ارجاعهایی به حافظهای نگه دارد که قبلاً آزاد شده است. سپس، درخواست دیگری که ارتباطی با درخواست قبلی ندارد و به همان فرایند سپرده میشود، ممکن است آن بخش از حافظه را بخواند.
هیچیک از این دو نقص لزوماً با از کار افتادن یا فروپاشی برنامه خود را آشکار نمیکنند. شناسایی آنها مستلزم درک رفتار اجزای داخلی PHP در شرایط فشار بر حافظه و بررسی هزاران خط کد نوشتهشده به زبان C است. این دقیقاً همان نوع جستوجوی فراگیر و الگومحوری است که یک مدل زبانی میتواند برای آن مناسب باشد؛ در مقابل، ممیزی انسانی ممکن است بهسادگی از کنار چنین الگویی عبور کند. براکمن گفت نسخه محدودی از مشکل زیربنایی این آسیبپذیری در سال ۲۰۲۴ نیز دیده شده بود، اما آن زمان کسی آن را بهاندازه کافی مهم ندانست که بررسی بیشتری روی آن انجام شود.
پژوهشگران Wiz این نقص را یکی از شدیدترین آسیبپذیریهایی توصیف کردهاند که هوش مصنوعی تاکنون کشف کرده است. به گفته آنها، احتمالاً انسانها بدون جستوجوی هوش مصنوعی قادر به یافتن آن نبودند. اهمیت اصلی ماجرا نیز همین است، نه صرفاً خود باگ. شرکتهای امنیتی چند سال است که درباره ظرفیت هوش مصنوعی برای یافتن آسیبپذیریها صحبت میکنند؛ اما این نخستین بار است که چنین تلاشی به کشف نقصی با دامنهای نزدیک به فراگیری جهانی منجر شده و اصلاح آن در چنین مقیاسی بهصورت عمومی و با پیامدهایی گسترده و هماهنگ همراه بوده است.
روند افشای آسیبپذیریها مطابق برنامه پیش نرفت. جزئیات پیش از زمانبندی موردنظر بنیاد PHP در اینترنت منتشر شد و مهاجمان و مدافعان تقریباً همزمان از وجود این نقصها باخبر شدند. PHP ظرف یک روز پس از انتشار اطلاعات، اصلاحیهها را ارائه کرد. این اصلاحیهها در نسخههای 8.5.12، 8.4.27، 8.3.36 و 8.2.35 منتشر شدند.
شرکت Cloudflare اعلام کرد که دیوار آتش برنامههای وب این شرکت از ساعت ۳:۰۲ بامداد به وقت هماهنگ جهانی در ۲۱ اکتبر، تلاشها برای بهرهبرداری از این آسیبپذیریها را در تمام طرحهای خدماتی خود، از جمله طرح رایگان، مسدود میکرد. این اقدام حدود ۹ ساعت پیش از افشای عمومی آسیبپذیریها آغاز شده بود. با این حال، این فاصله زمانی مانع همه حملات نشد؛ برخی مهاجمان بدون آنکه از جزئیات کامل نقصها اطلاع داشته باشند، اقدام به حمله کردند. وبسایت The Hacker News گزارش داد که تلاشها برای بهرهبرداری از این آسیبپذیریها از چهار روز پیش از افشای رسمی آنها آغاز شده بود.
آژانس امنیت ملی آمریکا به سازمانهایی که از PHP استفاده میکنند هشدار داد فوراً نرمافزار خود را بهروزرسانی کنند و اگر امکان نصب وصلهها را ندارند، سامانه آسیبپذیر را تا زمان رفع مشکل از دسترس خارج کنند. چند دولت این توصیه دوم را عملاً اجرا کردند. هلند، فنلاند، فرانسه، آلمان و بلژیک برای احتیاط، وبسایتهای دولتی در دسترس عموم را موقتاً از دسترس خارج کردند. سانائه تاکایچی، نخستوزیر ژاپن، نیز در شبکههای اجتماعی از کسبوکارها خواست همان شب برای مقابله با این خطر اقدام کنند. همچنین گزارشهایی منتشر شد که نشان میداد ویکیپدیا در برخی مناطق از دسترس خارج شده است.
برای بنیانگذاران استارتاپها و مدیران ارشد فناوری، عدد نگرانکننده در این ماجرا همان ۷۰ درصد است؛ نه لزوماً به این دلیل که سامانههای خودشان با PHP ساخته شدهاند، بلکه چون ممکن است شرکتهای تأمینکننده، سامانه مدیریت محتوا، افزونه تجارت الکترونیکی و بسیاری از ابزارهای نرمافزاری ابری که کارکنانشان هر روز به آنها وارد میشوند، از PHP استفاده کنند. نصب وصله برای خود PHP بخش ساده کار است. چالش اصلی، شناسایی تمام بخشهایی از زنجیره وابستگیهای نرمافزاری است که این زبان در آنها به کار رفته است. اتفاقات این هفته نشان داد که برای انجام این کار ممکن است فرصت چندانی در اختیار سازمانها نباشد.
