
PHP2Shell: PHP এর ইতিহাসে সবচেয়ে ভয়ংকর বাগ? কি হয়েছে আর এখন কি করবেন
প্রতি বছর কেউ না কেউ ঘোষণা দেয়, PHP ইজ ডেড। আর প্রতি বছর PHP এসে প্রমান করে দেয় যে সে মরে নাই। এবার যেভাবে প্রমান করলো, সেটা অবশ্য খুব একটা সুখের না। PHP এতোটাই জিন্দা যে একটা মাত্র রিকুয়েস্ট দিয়েই আপনার সার্ভারের চাবি অন্যের হাতে তুলে দিতে পারে।
গত ২০ অক্টোবর থেকে PHP কমিউনিটিতে আগুন লেগে আছে। দুইটা ক্রিটিক্যাল বাগ, নাম দেয়া হয়েছে PHP2Shell। ফিক্স রিলিজ হওয়ার আগেই এক্সপ্লয়েটের ডেমো ভিডিও ভাইরাল, আর সিকিউরিটি রিসার্চাররা বলছেন এটা PHP এর ইতিহাসে সবচেয়ে ভয়ংকর বাগগুলির একটা।
এক যুগের বেশী সময় ধরে PHP নিয়ে কাজ করছি, ওয়ার্ডপ্রেস থেকে শুরু করে বড় বড় কাস্টম সিস্টেম। এই প্রথম এমন একটা বাগ দেখলাম যেখানে আমাদের কোডের কোন দোষই নাই, তারপরও ঝুঁকি আমাদের সবার।
PHP2Shell আসলে কি, কারা ঝুঁকিতে আছেন, আর এখনই আপনাকে কি কি করতে হবে, সেটা নিয়েই আজকের ব্লগ লিখতে বসা।
PHP2Shell কি?
PHP2Shell হলো PHP এর কোর ইঞ্জিনে পাওয়া দুইটা রিমোট কোড এক্সিকিউশন (RCE) বাগের নাম, CVE-2026-109618 আর CVE-2026-109619। PHP এর সিকিউরিটি টিম দুইটাকেই ক্রিটিক্যাল রেটিং দিয়েছে, CVSS 9.2 (কিছু রিপোর্টে 10.0 ও বলা হচ্ছে)।
সহজ কথায় বললে, দুইটা বাগই PHP এর মেমোরি হ্যান্ডলিং এর ভুল।
- CVE-2026-109618: মেমোরি শেষ হয়ে গেলে (আউট অফ মেমোরি) PHP একটা রিকুয়েস্টের ডাটা অর্ধেক সেটাপ করে থেমে যেতে পারে। পরে ক্লিনআপ করার সময় সেই অর্ধেক বানানো ডাটাকে ঠিক ডাটা মনে করে কাজ করে ফেলে। আর এই ফাঁক দিয়েই হ্যাকার ঢুকে পরে।
- CVE-2026-109619: একটা রিকুয়েস্ট শেষ হওয়ার পরও তার কিছু ডাটা মেমোরিতে রয়ে যায়, যদিও সেই মেমোরি অলরেডি ফ্রি করা হয়ে গেছে। একই ওয়ার্কারে পরের রিকুয়েস্ট এসে সেই বাসি ডাটা ব্যবহার করে ফেলতে পারে।
অনেকটা হোটেলের রুমের মতো ব্যাপার। আগের গেস্ট চেকআউট করে চলে গেছে, কিন্তু রিসেপশন তার কাছ থেকে চাবিটা ফেরত নেয় নি। এখন আপনি সেই রুমে উঠলেন, আর আগের গেস্ট যখন খুশি ঢুকতে পারে। এখানে আগের গেস্ট হলো হ্যাকার, আর রিসেপশন হলো PHP।
সবচেয়ে ভয়ের কথা হলো, একটা ওয়ার্কিং এক্সপ্লয়েট দেখিয়েছে যে, কোন লগিন ছাড়াই মাত্র একটা রিকুয়েস্ট পাঠিয়ে অ্যাটাক করা যায়। আর অ্যাটাক হয় আপনার অ্যাপ্লিকেশনের কোড রান হওয়ারও আগে। সো, আপনি যত সুন্দর করে স্যানিটাইজেশন, ভেলিডেশন, CSRF টোকেন লিখে রাখুন না কেনো, কোন কাজে আসবে না। আপনার কোড পর্যন্ত ঘটনা গড়ায়ই না।
কারা ঝুঁকিতে আছেন?
এক কথায় উত্তর, প্রায় সবাই। যেকোন সার্ভারে PHP দিয়ে ওয়েব রিকুয়েস্ট সার্ভ করা হলেই আপনি এই লিস্টে আছেন।
- সব সার্ভার সেটাপঃ PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, LiteSpeed, সবগুলিই আক্রান্ত। এর মধ্যে mod_php সেটাপগুলি সবচেয়ে বেশী ঝুঁকিতে।
- পুরান ভার্শনওঃ CERT-EU এর মতে PHP 5 থেকে শুরু করে সব ভার্শনই আক্রান্ত হতে পারে। মানে বাগটা অনেক বছর ধরে চুপচাপ বসে ছিলো।
- সব জনপ্রিয় সিএমএসঃ ওয়ার্ডপ্রেস, ড্রুপাল, জুমলা, ম্যাজেন্টো, সবই PHP এর উপর চলে। লারাভেল, সিমফনি, কোডইগনিটার বা ফ্রেমওয়ার্ক যাই হোক, নিচে PHP আছে মানেই ঝুঁকি আছে।
- সংখ্যাটাও কম নাঃ W3Techs এর হিসাবে যেসব ওয়েবসাইটের সার্ভার-সাইড ল্যাঙ্গুয়েজ জানা যায়, তার ৬৯.৩% ই PHP। ইন্টারনেটে সরাসরি এক্সপোজড PHP হোস্ট রয়েছে ১৩ থেকে ১৯ লাখের মতো।
আরেকটা কথা ক্লিয়ার করে দেই। ওয়ার্ডপ্রেস আপডেট বা প্লাগিন আপডেট দিলে এই বাগ ঠিক হবে না। বাগটা ওয়ার্ডপ্রেসে না, PHP এর নিজের ঘরে। সো, সার্ভারের PHP ই আপডেট করতে হবে।
ঘটনা কিভাবে ঘটলো?
সাধারনত বড় কোন বাগ পাওয়া গেলে সেটা চুপিচুপি ডেভেলপার টিমকে জানানো হয়। তারা গোপনে ফিক্স বানায়, তারপর ফিক্স আর ঘোষণা একসাথে আসে, যাতে সবাই সাথে সাথে আপডেট দিতে পারে। এইটাকে বলে এমবারগো। এবার এই এমবারগো টিকে নাই।
- ২০ অক্টোবরঃ PHP টিম আগাম নোটিশ দেয় যে ২১ অক্টোবর একটা ক্রিটিক্যাল সিকিউরিটি রিলিজ আসছে। সেইদিনই CVE নাম্বারগুলি হ্যাকার নিউজ আর সোশ্যাল মিডিয়ায় ছড়িয়ে পরে, আর একজন রিসার্চার এক্সপ্লয়েট কাজ করছে এমন একটা ডেমো ভিডিও পোস্ট করেন। ফিক্স তখনো আসে নি।
- ২১ অক্টোবর, সন্ধ্যা ৮টা (বাংলাদেশ সময়)ঃ PHP অফিসিয়ালি প্যাচ রিলিজ করে। অরিজিনাল এমবারগো ছিলো ২২ অক্টোবর পর্যন্ত, ফাঁস হওয়ায় একদিন আগেই ছাড়তে হয়েছে।
- একই সময়েঃ ক্লাউডফ্লেয়ারের সিটিও জানান, তারা অলরেডি অ্যাটাক শুরু হতে দেখছেন। নেদারল্যান্ডসে অনেক ওয়েবসাইট প্যাচ দিতে গিয়ে কিছুক্ষনের জন্য অফলাইন হয়ে গেছে।
মানে প্রায় একদিন ধরে হ্যাকাররা জানতো যে একটা বিশাল ফাঁক আছে, আর আমাদের হাতে প্যাচ ছিলো না। তালা বদলানোর আগেই চোরের হাতে চাবির ডিজাইন চলে গেছে।
যারা এমবারগো কি জানেন না তাদের জন্য, এমবারগো হলো একটা নির্দিষ্ট সময় পর্যন্ত কোন তথ্য পাবলিক না করার চুক্তি। বাগ ঠিক হওয়ার আগে যাতে হ্যাকাররা জানতে না পারে, সেজন্যই এই সিস্টেম।
এখন কি করবেন?
ভয় পাওয়ার কিছু নাই, ফিক্স অলরেডি চলে এসেছে। শুধু ফেলে রাখা যাবে না। নিচের স্টেপগুলি ফলো করুন।
১. আগে ভার্শন চেক করুনঃ
সার্ভারে এসএসএইচ করে নিচের কমান্ড দিন।
php -vএখানে একটা কথা মনে রাখবেন, কমান্ডলাইনের PHP আর ওয়েবসাইটের PHP সবসময় এক হয় না। শিউর হতে চাইলে ওয়েবসাইটের অ্যাডমিন প্যানেল বা phpinfo() থেকে ভার্শনটা দেখে নিন। (দেখা শেষ হলে phpinfo() ফাইলটা মুছে দিতে ভুলবেন না।)
২. প্যাচড ভার্শনে আপডেট করুনঃ
প্যাচড ভার্শনগুলি হলোঃ
- PHP 8.5ঃ 8.5.12
- PHP 8.4ঃ 8.4.27
- PHP 8.3ঃ 8.3.36
- PHP 8.2ঃ 8.2.35
উবুন্টু, ডেবিয়ান, রেডহ্যাট সহ বড় লিনাক্স ডিস্ট্রিবিউশনগুলি পাবলিক রিলিজের আগেই প্যাচ পেয়ে গেছে। সো, আপনার ডিস্ট্রোর প্যাকেজ আপডেট দিলেই হবে। আপডেটের পর PHP-FPM বা অ্যাপাচি রিস্টার্ট দিতে ভুলবেন না, নাহলে পুরান প্রসেসই চলতে থাকবে।
নোটঃ যারা rpms.remirepo.net রিপো ইউজ করেন, সেখানে এখনো আপডেট আসে নি। ডিস্ট্রিবিউশনের নিজের প্যাকেজে সুইচ করুন, অথবা সোর্স থেকে বিল্ড করুন।
৩. পুরান ভার্শন হলে আপগ্রেড করুনঃ
PHP 8.1 বা তার আগের ভার্শন অফিসিয়ালি আর সাপোর্টেড না, অফিসিয়াল প্যাচও আসবে না। PHP 7.4, 8.0 আর 8.1 এর জন্য শুধু ছোট একটা সোর্স ব্যাকপোর্ট দেয়া হয়েছে, যেটা নিজে বিল্ড করতে হবে। আমি সাজেস্ট করবো, এই সুযোগে সাপোর্টেড ভার্শনে আপগ্রেড করেই ফেলুন। আর যাদের সার্ভারে এখনো PHP 5.6 চলছে, আপনারা আসলে সার্ভার চালান না, জাদুঘর চালান।
৪. শেয়ার্ড হোস্টিং হলে হোস্টিং কোম্পানিকে নক দিনঃ
শেয়ার্ড হোস্টিং এ PHP আপডেট করার দায়িত্ব হোস্টিং কোম্পানির। সাপোর্টে টিকেট করে জিজ্ঞেস করুন তারা প্যাচ করেছে কিনা। হোস্টিং এর cPanel/DirectAdmin এ সবচেয়ে নতুন PHP ভার্শনটা সিলেক্ট করে দিন।
৫. শর্টকাট খুজবেন নাঃ
- আইএনআই সেটিংস বদলে কোন লাভ নাই। PHP এর কোর ডেভেলপাররা নিজেরাই বলেছেন, কনফিগারেশন চেঞ্জ করে এটা আটকানো যাবে না। প্যাচই একমাত্র সমাধান।
- ক্লাউডফ্লেয়ার ইউজ করলে কিছুটা সুবিধা আছে। ক্লাউডফ্লেয়ার ফ্রি প্ল্যান সহ সবার জন্য ওয়াফ রুল ছেড়েছে। বাট এটা শুধু জানা অ্যাটাক আটকায়, আর শুধু ক্লাউডফ্লেয়ার দিয়ে আসা ট্রাফিকে। ক্লাউডফ্লেয়ার নিজেও এটাকে টেম্পোরারি সমাধান বলছে।
- এখনই প্যাচ দিতে না পারলে সাইট অফলাইন করুন। যুক্তরাজ্যের NCSC এইটাই সাজেস্ট করছে। কয়েক ঘন্টা সাইট ডাউন থাকা, হ্যাক হওয়ার চেয়ে অনেক বেটার।
৬. ক্লায়েন্টদের জানানঃ
যারা ফ্রিল্যান্সিং করেন, আপনার পুরান ক্লায়েন্টদের একটা মেসেজ দিয়ে রাখুন। অনেক ক্লায়েন্টের সাইট বছরের পর বছর কেউ খেয়াল করে না। একটা মেসেজে আপনি তাদের বড় ক্ষতি থেকে বাচাতে পারেন, সাথে হয়তো একটা ছোট প্রজেক্টও পেয়ে যেতে পারেন।
উপসংহারঃ
একটা কথা ক্লিয়ার করে দেই, এই ঘটনার পরও PHP মরে যাবে না। ইন্টারনেটের বেশীরভাগ ওয়েবসাইট এখনো PHP তেই চলে, আর আগামী কয়েক বছরও চলবে। বাগ সব ল্যাঙ্গুয়েজেই আসে, নোডজেএস এও আসে, পাইথনেও আসে। তবে হ্যা, এবারেরটা অনেক বড় ছিলো, আর ফাঁসও হয়েছে ভুল সময়ে।
বাগটা ঠিক কতদিন ধরে PHP এ ছিলো, আর কেউ আগে থেকেই এটা ইউজ করছিলো কিনা, শতভাগ নিশ্চয়তা দিয়ে এখনো কিছুই বলা যাচ্ছে না। নেদারল্যান্ডসের NCSC বলেছে আরো একটা প্যাচ আসতে পারে, সো আগামী কয়েকদিন PHP এর অফিসিয়াল অ্যাডভাইজরিতে চোখ রাখবেন।
মোদ্দা কথা, আজকে রাতে ঘুমানোর আগে সার্ভারগুলি আপডেট দিয়ে ফেলুন। আপডেট দিতে ১০ মিনিট লাগবে, হ্যাক হওয়া সাইট রিকভার করতে লাগবে সপ্তাহ।
কোন প্রশ্ন থাকলে বা আপডেট করতে গিয়ে কোথাও আটকে গেলে কমেন্টে জানান, যতটুকু পারি সাহায্য করার চেষ্টা করবো। সবাই সেফ থাকুন।



এখনও কোনো মন্তব্য নেই। প্রথম মন্তব্যটি আপনার হোক!