CurrencyFlow

تتر ویو

متفرقه

باگ PHP؛ یک اشتباه ساده یا درِ پشتی پنهان؟

باگ PHP؛ یک اشتباه ساده یا درِ پشتی پنهان؟

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

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

تئوری اول: شاید بعضی‌ها زودتر از بقیه خبر داشتن!

در اکتبر ۲۰۲۶، دو آسیب‌پذیری مهم با عنوان PHP2Shell در PHP گزارش شدن. این مشکلات در شرایط مشخص می‌تونستن راه رو برای اجرای کد روی سرورهای آسیب‌پذیر باز کنن.
حالا یک سناریو رو تصور کن: یک نفر این ضعف رو پیدا می‌کنه، اما به‌جای گزارش کردنش، سکوت می‌کنه. ماه‌ها یا حتی سال‌ها می‌گذره و درحالی‌که میلیون‌ها نفر با خیال راحت از نرم‌افزار استفاده می‌کنن، اون شخص از چیزی خبر داره که بقیه نمی‌دونن.
عجیب به نظر می‌رسه؟ نه لزوماً. در دنیای امنیت سایبری، آسیب‌پذیری‌های ناشناخته ممکنه پیش از اعلام عمومی کشف بشن و گاهی مورد سوءاستفاده قرار بگیرن.
البته هیچ مدرکی نداریم که ثابت کنه آسیب‌پذیری‌های PHP2Shell سال‌ها مخفی نگه داشته شده بودن. اما همین احتمال یک سؤال مهم ایجاد می‌کنه: چند ضعف دیگه ممکنه وجود داشته باشه که هنوز هیچ‌کس ازشون خبر نداره؟

تئوری دوم: اگر باگ، باگ نباشه چی؟

حالا بریم سراغ قسمت تاریک‌تر داستان.
فرض کن یک نرم‌افزار پرکاربرد، راهی پنهانی برای عبور از محدودیت‌های امنیتی داشته باشه؛ راهی که کاربران عادی ازش خبر ندارن.
به چنین سازوکاری ممکنه «بک‌دور» یا درِ پشتی بگن.
اگر چنین چیزی عمداً در یک نرم‌افزار پرکاربرد قرار داده بشه، پیامدها می‌تونن بسیار جدی باشن. چون به‌جای هدف گرفتن یک سیستم، ممکنه تعداد زیادی از سیستم‌های وابسته به اون نرم‌افزار در معرض خطر قرار بگیرن.
حالا سؤال اینجاست: اگر یک ضعف امنیتی عمدی باشه، از کجا می‌فهمیم؟
اینجا دیگه صرفاً با یک باگ عجیب طرف نیستیم؛ باید شواهدی وجود داشته باشه که نشون بده مشکل عمداً ایجاد شده.
درباره PHP2Shell چنین چیزی ثابت نشده. اما فکر کردن به این سناریو یک سؤال ناخوشایند به وجود میاره: آیا اعتماد ما به سازندگان نرم‌افزارها بیشتر از چیزیه که واقعاً می‌تونیم اثباتش کنیم؟

تئوری سوم: اگر این فقط نوک کوه یخ باشه چی؟

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

تئوری چهارم: اگر ماجرا فقط PHP نباشه چی؟

پایتون، جاوا، جاوااسکریپت و ده‌ها فناوری دیگه، هرکدوم بخش بزرگی از دنیای دیجیتال رو می‌سازن.
ما روزانه از سایت‌ها و اپلیکیشن‌هایی استفاده می‌کنیم که به تعداد زیادی نرم‌افزار و کتابخانه وابسته‌ان؛ چیزهایی که حتی اسمشون رو هم نمی‌دونیم.
اگر یکی از این اجزا ضعف امنیتی داشته باشه، ممکنه سیستم‌های دیگه رو هم تحت تأثیر قرار بده.
هیچ‌کس نمی‌تونه تضمین کنه تمام آسیب‌پذیری‌های تمام نرم‌افزارهای دنیا کشف شدن. اما این هم به معنی ناامن بودن همه فناوری‌ها نیست.
نکته عجیب اینجاست که ما به سیستمی اعتماد می‌کنیم که از هزاران بخش مختلف ساخته شده، درحالی‌که شاید فقط با چندتاشون آشنا باشیم.
پس واقعاً به چی اعتماد می‌کنیم؛ به امنیتی که بررسی شده یا فقط به چیزی که تا امروز مشکلی ازش ندیدیم؟

آیا واقعاً ممکنه از این ضعف‌ها برای کنترل ما استفاده بشه؟

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

جمع‌بندی؛ اینترنت رو خاموش کنیم؟

خب، حالا باید از اینترنت بترسیم؟ گوشی‌هامون رو خاموش کنیم و برگردیم به دوران نامه و کبوتر؟
نه بابا!!! :)
ماجرای PHP2Shell ثابت نمی‌کنه که کسی عمداً درِ پشتی ساخته یا سال‌ها از این آسیب‌پذیری‌ها سوءاستفاده کرده. اما یادآوری می‌کنه که حتی نرم‌افزارهای شناخته‌شده هم ممکنه ضعف‌هایی داشته باشن که سال‌ها کشف نشن.
راه درست هم نه اعتماد کورکورانه‌ست، نه بدبین شدن به همه‌چیز. باید نرم‌افزارها رو به‌روز نگه داریم، هشدارهای امنیتی معتبر رو جدی بگیریم و بدونیم که امنیت یک فرایند مداومه.
راستی، اگر تصمیم گرفتی برای فرار از هک شدن، به‌جای گوشی از کبوتر نامه‌بر استفاده کنی، یک خبر بد دارم: هنوز کسی برای کبوترها وصله امنیتی منتشر نکرده! :)
پس نفس عمیق بکش و به زندگی دیجیتال ادامه بده. فقط دفعه بعد که شنیدی یک باگ خطرناک کشف شده، به‌جای اینکه بگی «خب، درستش می‌کنن دیگه»، یک سؤال هم بپرس: چند وقت طول کشید تا کسی متوجهش بشه؟

دکتر علی گودرزی

دکتر علی گودرزی

پژوهشگر اقتصاد دیجیتال و فناوری