⚠️ BREAKING SECURITY ALERT: PHP2Shell Explained! PHP Backend-এর Critical RCE Vulnerability, CVE-2026-109618 ও CVE-2026-109619 — Termux & Kali Linux দিয়ে Advanced Security Lab Tutorial
PHP2Shell আসলে কী? কেন পুরো PHP Ecosystem-এর জন্য এটি বড় সতর্কবার্তা?
Web Security দুনিয়ায় PHP অত্যন্ত গুরুত্বপূর্ণ একটি Technology। WordPress, Joomla, Drupal-সহ অসংখ্য Web Application-এর Backend-এ PHP ব্যবহার করা হয়। তাই PHP Core-এর কোনো গুরুতর Vulnerability প্রকাশিত হলে তার প্রভাব শুধু একটি Website-এ সীমাবদ্ধ থাকে না; একই PHP Runtime ব্যবহার করা অনেক ধরনের Application ঝুঁকিতে পড়তে পারে।
২০২৬ সালের ২১ অক্টোবর PHP Core-এ দুটি Critical Remote Code Execution (RCE) Vulnerability-এর Security Fix প্রকাশিত হয়। Security Research Community-তে এই Vulnerability-গুলোকে একত্রে PHP2Shell নামে আলোচনা করা হচ্ছে।
দুটি প্রধান CVE:
-
CVE-2026-109618— Out-of-Memory Handling-সংক্রান্ত Memory Corruption। -
CVE-2026-109619— Stale Global State এবং Use-After-Free-সংক্রান্ত সমস্যা।
দুটি Vulnerability-এর CVSS v4.0 Severity 9.2 বলে CERT-EU-এর Advisory-তে উল্লেখ করা হয়েছে। PHP-এর Official Security Release-এও এগুলোকে Critical Unauthenticated RCE হিসেবে চিহ্নিত করা হয়েছে। <Cite refs={[“turn467295view0″,”turn467295view1”]}/>
এর অর্থ, নির্দিষ্ট Vulnerable Configuration-এ কোনো Authentication ছাড়াই Remote Request-এর মাধ্যমে PHP Process-এর Memory Safety দুর্বলতাকে কাজে লাগিয়ে Code Execution সম্ভব হতে পারে।
সবচেয়ে গুরুত্বপূর্ণ বিষয় হলো, এই Vulnerability PHP Runtime-এর Core Level-এ। তাই শুধু WordPress বা Joomla-এর Plugin Update করলেই সমস্যার সমাধান হবে না। PHP Runtime এবং Server Environment-ও যাচাই করতে হবে।
PHP2Shell-এর দুটি প্রধান Vulnerability
1. CVE-2026-109618: Out-of-Memory Corruption
এই Vulnerability-এর মূল সমস্যা PHP-এর Memory Management এবং Request Cleanup Process-এর সঙ্গে সম্পর্কিত।
PHP-তে memory_limit নামে একটি Configuration রয়েছে। এটি একটি Request কতটা Memory ব্যবহার করতে পারবে, তার সীমা নির্ধারণ করে।
কোনো Request Processing-এর সময় Memory Limit অতিক্রম করলে PHP একটি Out-of-Memory (OOM) Condition তৈরি করতে পারে।
সমস্যাটি তৈরি হয় যখন PHP Request Processing-এর মাঝখানে Internal Data Structure সম্পূর্ণ Initialize হওয়ার আগেই OOM Condition তৈরি হয়। এরপর Cleanup Process অসম্পূর্ণ বা Invalid Internal State নিয়ে কাজ করতে পারে।
এতে Memory Corruption-এর ঝুঁকি তৈরি হয়।
সহজ উদাহরণ:
ধরা যাক, একটি PHP Application একটি File Upload Request Process করছে।
এই Processing-এর সময়:
-
PHP Request-এর Internal Structure প্রস্তুত করছে।
-
Request-এর কিছু Data Initialize হয়েছে।
-
Memory Allocation ব্যর্থ হয়েছে।
-
Request স্বাভাবিকভাবে শেষ হওয়ার আগেই Error Handling শুরু হয়েছে।
-
Cleanup Process অসম্পূর্ণ Internal Data ব্যবহার করতে পারে।
এ ধরনের Memory Safety Failure নির্দিষ্ট পরিস্থিতিতে গুরুতর Security Impact তৈরি করতে পারে।
Wiz Research-এর বিশ্লেষণে এই Vulnerability-এর সঙ্গে Upload Progress Unserializer এবং Use-After-Free সম্পর্কিত আচরণের কথা উল্লেখ করা হয়েছে। <Cite refs={[“turn467295view3″,”turn467295view1”]}/>
2. CVE-2026-109619: Stale Global State
দ্বিতীয় Vulnerability-এর মূল বিষয় হলো Stale State এবং Use-After-Free।
সহজভাবে, কোনো Request শেষ হওয়ার সময় তার ব্যবহৃত Memory Release করা হলেও সংশ্লিষ্ট Internal State-এর একটি Reference বা Pointer ভুলবশত থেকে যেতে পারে।
পরবর্তীতে একই PHP Worker অন্য Request Process করলে পুরোনো State ব্যবহারের ঝুঁকি তৈরি হতে পারে।
এটি কেন বিপজ্জনক?
কারণ একটি PHP Worker একাধিক Request Process করতে পারে। যদি আগের Request-এর Internal State সঠিকভাবে Reset না হয়, তাহলে পরবর্তী Request-এর সময় অপ্রত্যাশিত Memory Behavior দেখা দিতে পারে।
Wiz Research-এর Technical Analysis-এ Fatal-error Backtrace এবং OPcache-সংক্রান্ত Memory Safety Issue-এর কথা উল্লেখ রয়েছে। <Cite refs={[“turn467295view3″,”turn467295view1”]}/>
3. CVE-2026-115560: নতুন Configuration-dependent RCE Risk
২৩ অক্টোবর PHP Team আরও একটি Informational Advisory প্রকাশ করে।
এর সঙ্গে সম্পর্কিত CVE হলো:
CVE-2026-115560
এই Vulnerability আগের দুটি PHP2Shell Vulnerability-এর মতো সাধারণ Configuration-এ একইভাবে প্রযোজ্য নয়। PHP Team জানিয়েছে, এটি একটি নির্দিষ্ট ও অস্বাভাবিক Configuration এবং Application Code-এর সমন্বয়ের ওপর নির্ভরশীল।
প্রয়োজনীয় Condition-গুলোর মধ্যে রয়েছে:
-
session.serialize_handlerপ্রথমেphp_binaryঅথবাphp_serializeথাকা। -
Application Runtime-এ
ini_set()দিয়ে সেটিকেphp-তে পরিবর্তন করা। -
এরপর
session_start()ব্যবহার করা। -
Session Upload Progress Feature সক্রিয় থাকা।
PHP Team-এর পরামর্শ হলো, পরবর্তী Regular Bugfix Release পর্যন্ত session.upload_progress.enabled=0 রাখা।
গুরুত্বপূর্ণ: ২১ অক্টোবরের PHP2Shell Patch ইনস্টল করলেই CVE-2026-115560-এর এই বিশেষ Configuration Risk স্বয়ংক্রিয়ভাবে দূর হয়েছে—এমন ধরে নেওয়া যাবে না। <Cite refs={[“turn467295view0″,”turn728289news12”]}/>
PHP2Shell কোন PHP Environment-এ প্রভাব ফেলতে পারে?
PHP-এর Official Advisory অনুযায়ী, Web Request Serve করে এমন একাধিক PHP Deployment Model ঝুঁকির মধ্যে ছিল।
Deployment Assessment Apache mod_php বিশেষভাবে উচ্চ ঝুঁকির Configuration PHP-FPM Vulnerable Version হলে ঝুঁকি php-cgi Vulnerable Version হলে ঝুঁকি FrankenPHP Vulnerable Version হলে ঝুঁকি LiteSpeed Vulnerable Version হলে ঝুঁকি
PHP Team বিশেষভাবে mod_php-কে উচ্চ ঝুঁকির Deployment হিসেবে উল্লেখ করেছে। <Cite refs={[“turn467295view0”]}/>
এখানে একটি ভুল ধারণা দূর করা প্রয়োজন: শুধু PHP Framework পরিবর্তন করলে এই সমস্যা সমাধান হয় না। Laravel, WordPress বা অন্য Application Vulnerable PHP Runtime-এর ওপর চললে Runtime-level Risk থেকেই যেতে পারে।
Affected Version ও Fixed Version
২১ অক্টোবর ২০২৬-এর Official PHP Security Release অনুযায়ী:
PHP Branch Fixed Release PHP 8.5 8.5.12 PHP 8.4 8.4.27 PHP 8.3 8.3.36 PHP 8.2 8.2.35
এই Fixed Version-এর আগের সংশ্লিষ্ট Branch-এর Build-গুলো Vulnerable ছিল।
PHP 8.1 এবং তার আগের End-of-Life Branch ব্যবহারকারীদের বিশেষ সতর্ক থাকতে হবে। কিছু Linux Distribution বা Long-Term Support Vendor Backported Security Fix দিতে পারে। তাই শুধু Version Number দেখে চূড়ান্ত সিদ্ধান্ত নেওয়া যাবে না; Vendor Security Advisory-ও যাচাই করতে হবে। <Cite refs={[“turn467295view0″,”turn467295view1”]}/>
৮ নভেম্বর ২০২৬-এর গুরুত্বপূর্ণ অবস্থা: PHP-এর Official Website-এ 8.5.12, 8.4.27, 8.3.36 এবং 8.2.35 Security Release হিসেবে তালিকাভুক্ত। PHP 8.6.0 RC5-কে Testing Release বলা হয়েছে, Production-এর জন্য নয়। <Cite refs={[“turn467295view0”]}/>
Advanced Lab Methodology: Termux দিয়ে PHP Security Audit
এবার Practical অংশ।
Termux ব্যবহার করে নিজের Android Device-এ PHP CLI Environment পরীক্ষা করা যাবে। মনে রাখতে হবে, Termux-এর CLI PHP এবং Internet-facing PHP-FPM/Apache Server এক জিনিস নয়।
Step 1: Termux Environment Update
Termux খুলে Package List Update করুন:
pkg update && pkg upgrade
এরপর PHP Install করুন:
pkg install php
Step 2: PHP Version Check
PHP Version দেখুন:
php -v
এই Command PHP-এর Installed Version প্রদর্শন করবে।
কিন্তু শুধু Version দেখেই Vulnerability Status নির্ধারণ করবেন না। Distribution-এর Backport এবং Build Information যাচাই করতে হবে।
Step 3: PHP Configuration Location
কোন Configuration File ব্যবহার হচ্ছে তা দেখুন:
php --ini
এতে Loaded Configuration File এবং অতিরিক্ত INI Directory সম্পর্কে তথ্য পাওয়া যাবে।
Step 4: Security-related Configuration Review
নিজের Local PHP Configuration থেকে নিচের Setting-গুলো পরীক্ষা করুন:
php -i | grep -E "memory_limit|post_max_size|upload_max_filesize|session.upload_progress.enabled|session.serialize_handler"
এখানে যেসব বিষয় দেখবেন:
-
memory_limit -
post_max_size -
upload_max_filesize -
session.upload_progress.enabled -
session.serialize_handler
এগুলো PHP Request Processing, File Upload এবং Session Handling-এর সঙ্গে সম্পর্কিত।
Step 5: Session Upload Progress Configuration
PHP2Shell-এর সঙ্গে সম্পর্কিত Session Upload Progress Configuration দেখতে:
php -i | grep "session.upload_progress.enabled"
CVE-2026-109619 এবং CVE-2026-115560-এর জন্য PHP Team-এর নির্দিষ্ট Mitigation হলো:
session.upload_progress.enabled=0
এই Setting-টি Server-এর কার্যকর PHP Configuration-এ প্রয়োগ করতে হবে। PHP-FPM বা অন্য Persistent Worker ব্যবহার করলে Worker Restart না করা পর্যন্ত পুরোনো Configuration কার্যকর থাকতে পারে।
শুধু CLI-তে Setting পরিবর্তন করলেই Web Server-এর PHP Configuration পরিবর্তিত হয় না।
Step 6: Local PHP Configuration Verification
নিচের Command দিয়ে নির্দিষ্ট Configuration Value যাচাই করতে পারেন:
php -r 'echo ini_get("session.upload_progress.enabled"), PHP_EOL;'
এটি CLI PHP-এর বর্তমান Setting দেখাবে।
সতর্কতা: CLI Output এবং Web Server-এর PHP Runtime Configuration আলাদা হতে পারে। Web Server Environment আলাদাভাবে যাচাই করুন।
Kali Linux দিয়ে Advanced PHP Backend Audit
Kali Linux ব্যবহার করে নিজের Lab অথবা অনুমোদিত Server-এর PHP Environment যাচাই করা যায়।
Step 1: System Update
sudo apt update
sudo apt upgrade
Step 2: PHP CLI Install
sudo apt install php-cli
Apache বা PHP-FPM Environment যাচাই করতে হলে সংশ্লিষ্ট Package ও Service-এর Configuration পর্যালোচনা করতে হবে।
Step 3: Installed PHP Version
php -v
Step 4: Loaded Configuration
php --ini
Step 5: Installed PHP Packages
dpkg -l | grep php
এতে Debian Package Manager-এর মাধ্যমে ইনস্টল করা PHP-related Package-এর তালিকা পাওয়া যাবে।
Step 6: Available Package Security Update
apt-cache policy php-cli
এখানে Installed Version এবং Repository-তে Available Candidate Version দেখা যাবে।
Kali বা Debian-based Distribution-এর ক্ষেত্রে Vendor Backport থাকতে পারে। তাই Upstream PHP Version-এর সঙ্গে Package Version সরাসরি তুলনা করে Vulnerability Status নির্ধারণ করবেন না।
Step 7: PHP Runtime Configuration Audit
php -i | grep -E "memory_limit|post_max_size|upload_max_filesize|session.upload_progress.enabled|session.serialize_handler"
এটি Local Runtime Configuration Review-এর একটি সহজ পদ্ধতি।
Advanced Defensive Verification: নিজের PHP Server পরীক্ষা
একজন System Administrator হিসেবে শুধু CLI Version Check করাই যথেষ্ট নয়।
নিচের Audit Checklist অনুসরণ করুন।
A. PHP Runtime Inventory
-
কোন কোন Server-এ PHP চলছে?
-
PHP Version কোনটি?
-
PHP-FPM, Apache mod_php নাকি CGI ব্যবহৃত হচ্ছে?
-
PHP কোন User Permission নিয়ে চলছে?
-
একই Host-এ একাধিক PHP Runtime রয়েছে কি না?
B. Configuration Audit
-
session.upload_progress.enabledসক্রিয় কি না? -
session.serialize_handlerকী? -
Application Runtime-এ
ini_set()ব্যবহার করে Session Handler পরিবর্তন করে কি না? -
File Upload Configuration যথাযথ কি না?
-
Memory ও Request Size Limit যথাযথ কি না?
C. Application Audit
-
WordPress, Drupal বা Joomla-এর কোন Version চলছে?
-
Third-party Plugin বা Module PHP Runtime Bundle করে কি না?
-
Upload ও Import Processing-এ অপ্রয়োজনীয় Error তৈরি হচ্ছে কি না?
-
PHP Worker-এর Permission প্রয়োজনের চেয়ে বেশি কি না?
D. Patch Verification
-
PHP Security Release ইনস্টল হয়েছে কি?
-
PHP-FPM Worker Restart করা হয়েছে কি?
-
Apache বা সংশ্লিষ্ট Service Reload/Restart করা হয়েছে কি?
-
Web Runtime-এর Version ও CLI Runtime-এর Version একই কি?
Third-party Vendor Patch পাওয়া গেছে কি?
Vulnerability Fix করার Advanced Methodology
এবার সবচেয়ে গুরুত্বপূর্ণ অংশ—নিজের Server নিরাপদ করার পদ্ধতি।
1. PHP Runtime Update করুন
PHP Official Security Release অনুযায়ী সংশ্লিষ্ট Branch-এর Fixed Version-এ Upgrade করুন।
শুধু Application Update নয়, PHP Runtime Update-কে অগ্রাধিকার দিন।
2. CVE-2026-115560-এর জন্য Session Upload Progress Disable করুন
কার্যকর PHP Server Configuration-এ:
session.upload_progress.enabled=0
এই Configuration PHP Team-এর Informational Advisory অনুযায়ী পরবর্তী Bugfix Release পর্যন্ত একটি গুরুত্বপূর্ণ Mitigation।
3. Request Size ও Upload Limit নিয়ন্ত্রণ করুন
PHP-এর:
post_max_size
upload_max_filesize
এগুলো Application-এর প্রয়োজন অনুযায়ী নির্ধারণ করুন।
CERT-EU-এর Mitigation Guidance-এ File Upload প্রয়োজন না হলে post_max_size কম রাখার এবং প্রয়োজন হলে নিয়ন্ত্রিত Limit ব্যবহারের কথা বলা হয়েছে।
4. PHP Worker Restart করুন
Configuration পরিবর্তনের পর সংশ্লিষ্ট PHP-FPM Worker অথবা Web Server Restart/Reload করুন।
শুধু Configuration File পরিবর্তন করলেই পুরোনো Worker-এর Configuration বদলে যাবে না।
5. Least Privilege প্রয়োগ করুন
PHP Worker-কে প্রয়োজনের বেশি File System বা System Permission দেবেন না।
যদি PHP Application-এর কাজ শুধু নির্দিষ্ট Directory-তে File Read ও Write করা হয়, তাহলে পুরো System-এর Access দেওয়ার প্রয়োজন নেই।
6. Incident Review করুন
যদি Server Vulnerable অবস্থায় Internet-facing হয়ে থাকে, শুধু Patch করেই কাজ শেষ করবেন না।
নিচের বিষয়গুলো পরীক্ষা করুন:
-
Unexpected PHP Process
-
অস্বাভাবিক Child Process
-
অজানা PHP File
-
Webroot-এ নতুন বা পরিবর্তিত File
-
অস্বাভাবিক Access Log
-
সন্দেহজনক Authentication Activity
-
অপ্রত্যাশিত Outbound Network Connection
-
Credential বা API Token Exposure
যদি Compromise-এর প্রমাণ পাওয়া যায়, Incident Response Process অনুসরণ করুন। প্রয়োজন হলে Credential Rotate করুন এবং Clean Backup থেকে Recovery বিবেচনা করুন।
PHP2Shell Detection: Defender-দের কী দেখা উচিত?
PHP2Shell-এর মতো Runtime-level RCE Vulnerability শনাক্ত করতে একাধিক Log Source একসঙ্গে বিশ্লেষণ করা প্রয়োজন।
Web Server Log
অস্বাভাবিক Request Pattern, অপ্রত্যাশিত Upload Activity এবং অস্বাভাবিক Error Rate খুঁজুন।
PHP-FPM Log
Worker Crash, Fatal Error, Memory-related Error এবং Unexpected Restart পর্যবেক্ষণ করুন।
Endpoint Monitoring
PHP Worker থেকে অপ্রত্যাশিত Child Process তৈরি হচ্ছে কি না, তা পর্যবেক্ষণ করুন।
Network Monitoring
PHP Server থেকে অস্বাভাবিক Outbound Connection হচ্ছে কি না, তা বিশ্লেষণ করুন।
File Integrity Monitoring
Webroot এবং গুরুত্বপূর্ণ Application Directory-তে অনাকাঙ্ক্ষিত File Change হচ্ছে কি না, তা পরীক্ষা করুন।
একটি নির্দিষ্ট Log Entry-কে PHP2Shell Exploitation-এর নিশ্চিত প্রমাণ ধরে নেওয়া যাবে না। একাধিক Evidence মিলিয়ে Investigation করতে হবে।
PHP2Shell Exploit সম্পর্কে গুরুত্বপূর্ণ সীমাবদ্ধতা
PHP2Shell-এর Public Research-এ Memory Corruption ও Remote Code Execution-এর বিষয় দেখানো হয়েছে। Wiz Research জানিয়েছে, তাদের Demonstration-এ WordPress, Drupal এবং Joomla-এর কিছু Deployment-এ Pre-authentication RCE দেখানো হয়েছিল।
তবে কোনো একটি PoC সফল হয়েছে বলেই প্রতিটি PHP Server একইভাবে Exploitable হবে, এমন নয়। Runtime Version, Build, Deployment Model এবং Memory State-এর মতো বিষয় গুরুত্বপূর্ণ।
এই Article-এ Exploit Payload, Reverse Shell, Remote Command Execution Chain বা Third-party Server Compromise করার ধাপ দেওয়া হয়নি। তার পরিবর্তে Lab Audit, Configuration Verification, Patch Management এবং Defensive Detection-এর Methodology দেওয়া হয়েছে। <Cite refs={[“turn467295view3″,”turn467295view1”]}/>
PHP2Shell থেকে নিজের Backend সুরক্ষিত রাখার Final Checklist
-
[ ] PHP Runtime Version Inventory তৈরি করুন।
-
[ ] Fixed Security Release ইনস্টল করুন।
-
[ ] PHP-FPM ও Apache Deployment আলাদাভাবে পরীক্ষা করুন।
-
[ ]
session.upload_progress.enabledযাচাই করুন। -
[ ] CVE-2026-115560-এর জন্য প্রয়োজনীয় Mitigation প্রয়োগ করুন।
-
[ ] Upload ও POST Size Limit Review করুন।
-
[ ] PHP Worker Permission সীমিত করুন।
-
[ ] Webroot File Integrity Monitoring চালু রাখুন।
-
[ ] PHP ও Web Server Log নিয়মিত পরীক্ষা করুন।
-
[ ] Compromise সন্দেহ হলে Incident Response শুরু করুন।
Final Verdict
PHP2Shell দেখিয়েছে, Web Application-এর নিজস্ব Code নিরাপদ হলেও তার নিচের Runtime বা Core Engine-এর Memory Safety Bug পুরো Backend-কে ঝুঁকিতে ফেলতে পারে।
এ কারণে PHP Developer, WordPress Administrator, Hosting Provider, System Administrator এবং Cybersecurity Researcher—সবারই PHP Runtime Security সম্পর্কে সচেতন থাকা প্রয়োজন।
Termux দিয়ে Local PHP Configuration শেখা যায়, আর Kali Linux দিয়ে নিজের Lab-এর Security Audit আরও সংগঠিতভাবে করা যায়। তবে বাস্তব PHP Backend-এর নিরাপত্তা নিশ্চিত করতে Runtime Patch, Server Configuration, Worker Management এবং Continuous Monitoring—সবকিছু একসঙ্গে প্রয়োজন।
মনে রাখবেন: Vulnerability জানা একজন Researcher-এর দক্ষতা; সেটি দায়িত্বশীলভাবে যাচাই ও Fix করতে পারাই একজন Security Professional-এর প্রকৃত কাজ।
Stay Updated. Patch Fast. Defend Smart. 🛡️

