সাইবার নিরাপত্তাবিষয়ক সংবাদমাধ্যম The Hacker News-এর ১২ নভেম্বর প্রকাশিত প্রতিবেদন অনুযায়ী, Apache HTTP Server-এর 2.4.55 থেকে 2.4.70 সংস্করণ পর্যন্ত এই ত্রুটির ঝুঁকিতে রয়েছে। সমস্যাটির সমাধানে Apache 2.4.71 সংস্করণ প্রকাশ করা হয়েছে।
কীভাবে কাজ করে এই নিরাপত্তা ত্রুটি?
ত্রুটিটি Apache HTTP Server-এর HTTP/2 পরিচালনার দায়িত্বে থাকা mod_http2 মডিউলের মধ্যে রয়েছে। HTTP/2 হলো ওয়েব সার্ভার ও ব্রাউজারের মধ্যে দ্রুত যোগাযোগের একটি প্রোটোকল। এই প্রোটোকলে একাধিক রিকোয়েস্ট একই সংযোগের মাধ্যমে পরিচালনা করা যায়। নিরাপত্তা গবেষকদের বিশ্লেষণ অনুযায়ী, HTTP/2 মডিউলের assign_headers() ফাংশনে সমান্তরালভাবে কাজ করার সময় একটি Race Condition তৈরি হতে পারে। এর ফলে মেমোরি ব্যবস্থাপনায় সমস্যা দেখা দেয় এবং আক্রমণকারী Heap Memory Corruption ঘটিয়ে সার্ভারে নিজের কোড চালানোর সুযোগ পেতে পারে। সবচেয়ে উদ্বেগের বিষয় হলো, এই আক্রমণের জন্য সার্ভারে কোনো ইউজার অ্যাকাউন্ট বা লগইন অনুমতির প্রয়োজন হয় না। আক্রান্ত সার্ভারে HTTP/2 চালু থাকলে এবং সেটি আক্রমণকারীর নাগালে থাকলে ঝুঁকি তৈরি হতে পারে। Red Hat এই দুর্বলতার জন্য CVSS 9.8 স্কোর দিয়েছে।
কোন সার্ভারগুলো ঝুঁকিতে?
| Apache সংস্করণ | অবস্থা |
| 2.4.54 বা তার আগের | এই নির্দিষ্ট ত্রুটিতে আক্রান্ত নয় |
| 2.4.55–2.4.70 | আক্রান্ত |
| 2.4.71 | সমাধান করা হয়েছে |
এখানে একটি গুরুত্বপূর্ণ বিষয় হলো, শুধু Apache-এর সংস্করণ দেখলেই হবে না। সার্ভারে HTTP/2 সক্রিয় আছে কি না, সেটিও যাচাই করতে হবে।
Apache-এর পাশাপাশি আলাদা mod_h2 মডিউলের 2.0.8 থেকে 2.0.42 সংস্করণও আক্রান্ত। এই স্বতন্ত্র মডিউলের জন্য এখনো কোনো সংশোধিত সংস্করণ প্রকাশের তথ্য পাওয়া যায়নি।
সার্ভার অ্যাডমিনদের এখনই যা করা উচিত
Apache 2.4.71-এ আপডেট করাই সবচেয়ে গুরুত্বপূর্ণ পদক্ষেপ। আপডেট সম্ভব না হলে সাময়িকভাবে HTTP/2 বন্ধ রাখার পরামর্শ দেওয়া হয়েছে।
-
ধাপ ১: Apache-এর বর্তমান সংস্করণ পরীক্ষা করুন
SSH দিয়ে সার্ভারে প্রবেশ করে নিচের কমান্ড এক্সিকিউট করুন।
apachectl -v
অথবা
httpd -v
আউটপুটে Apache-এর সংস্করণ দেখতে পাবেন।
-
ধাপ ২: HTTP/2 সক্রিয় আছে কি না যাচাই করুন
apachectl -M 2>/dev/null | grep -i http2
যদি নিচের মতো আউটপুট আসে, তাহলে HTTP/2 মডিউল লোড করা আছে:
http2_module (shared)
এরপর সার্ভারের কনফিগারেশনে HTTP/2 চালু আছে কি না খুঁজুন:
grep -RniE '^[[:space:]]*Protocols.*(h2|h2c)' / /etc/apache2 /etc/httpd 2>/dev/null
এখানে h2 মানে HTTPS-এর মাধ্যমে HTTP/2 এবং h2c মানে সাধারণ TCP সংযোগের মাধ্যমে HTTP/2।
-
ধাপ ৩: Apache আপডেট করুন
সুপারিশকৃত সমাধান
Ubuntu / Debian:
sudo apt update sudo apt install --only-upgrade apache2
AlmaLinux / Rocky Linux / RHEL:
sudo dnf update httpd mod_http2
এরপর আবার সংস্করণ যাচাই করুন:
apachectl -v
Apache-এর নিজস্ব রিলিজ ব্যবহার করলে লক্ষ্য হবে 2.4.71 অথবা পরবর্তী নিরাপদ সংস্করণ।
গুরুত্বপূর্ণ: Ubuntu, Debian, Red Hat বা অন্য Linux ডিস্ট্রিবিউশনে প্যাকেজের সংস্করণ নম্বর Apache-এর মূল সংস্করণের সঙ্গে সব সময় মেলে না। অনেক ক্ষেত্রে মূল সংস্করণ অপরিবর্তিত রেখেই নিরাপত্তা প্যাচ ব্যাকপোর্ট করা হয়। তাই শুধু apachectl -v দেখে সিদ্ধান্ত না নিয়ে সংশ্লিষ্ট ডিস্ট্রিবিউশনের CVE প্যাচ স্ট্যাটাসও যাচাই করতে হবে।
-
ধাপ ৪: আপডেট করা সম্ভব না হলে সাময়িকভাবে HTTP/2 বন্ধ করুন
যদি তাৎক্ষণিকভাবে Apache আপডেট করা সম্ভব না হয়, তাহলে HTTP/2 সাময়িকভাবে বন্ধ রাখতে হবে। Apache কনফিগারেশনে যেখানে HTTP/2 চালু করা হয়েছে, সেখানে
Protocols h2 h2c http/1.1
পরিবর্তন করে লিখুন:
Protocols http/1.1
এটি সার্ভারের Global Configuration এবং প্রতিটি VirtualHost-এর কনফিগারেশনে পরীক্ষা করতে হবে। এরপর কনফিগারেশন পরীক্ষা করুন:
sudo apachectl configtest
সবকিছু ঠিক থাকলে Apache Reload করুন:
sudo systemctl reload apache2
RHEL / AlmaLinux / Rocky Linux-এর ক্ষেত্রে:
sudo systemctl reload httpd
মনে রাখবেন, HTTP/2 বন্ধ করলে ওয়েবসাইট HTTP/1.1 ব্যবহার করবে। এটি সাময়িক প্রতিরোধমূলক ব্যবস্থা, স্থায়ী সমাধান নয়।
-
ধাপ ৫: আপডেটের পর HTTP/2 অবস্থা যাচাই করুন
curl -I --http2 https://yourdomain.com
HTTP/2 বন্ধ থাকলে:
curl -I --http1.1 https://yourdomain.com
এ ছাড়া পুনরায় Apache মডিউল ও কনফিগারেশন পরীক্ষা করুন:
apachectl -M 2>/dev/null | grep -i http2
-
ধাপ ৬: সার্ভারের অন্যান্য নিরাপত্তা পরীক্ষা করুন
- Apache Access ও Error Log পর্যবেক্ষণ করুন।
- অস্বাভাবিক HTTP/2 রিকোয়েস্ট এবং সার্ভার ক্র্যাশের ঘটনা পরীক্ষা করুন।
- সার্ভারে অপ্রত্যাশিত নতুন প্রসেস বা ফাইল তৈরি হয়েছে কি না দেখুন।
- PHP, CMS এবং অন্যান্য সার্ভার সফটওয়্যারের নিরাপত্তা আপডেট প্রয়োগ করুন।
- গুরুত্বপূর্ণ ফাইল ও ডেটাবেজের ব্যাকআপ নিশ্চিত করুন।
- কোনো সার্ভার আক্রান্ত হওয়ার সন্দেহ থাকলে শুধু আপডেট করেই বিষয়টি শেষ করবেন না; Incident Response ও ফরেনসিক পরীক্ষা করুন।
সার্ভার অ্যাডমিনদের জন্য বিশেষ সতর্কতা
যেসব প্রতিষ্ঠান Apache 2.4.55 থেকে 2.4.70 ব্যবহার করছে, তাদের দ্রুত সার্ভারের তালিকা তৈরি করে আপডেটের উদ্যোগ নেওয়া উচিত।
বিশেষ করে Shared Hosting, Virtualmin, cPanel, Plesk এবং একাধিক ওয়েবসাইট পরিচালনাকারী সার্ভারে Apache-এর একাধিক VirtualHost থাকতে পারে। ফলে একটি জায়গায় HTTP/2 বন্ধ করলেই সব ওয়েবসাইট সুরক্ষিত হয়েছে, এমনটা ধরে নেওয়া যাবে না।
Red Hat ইতোমধ্যে RHEL 9 ও 10-এর জন্য সংশোধিত প্যাকেজ প্রকাশ করেছে। অন্যদিকে Debian-এর কয়েকটি সংস্করণ এবং Amazon Linux-এর ক্ষেত্রে প্রতিবেদনের সময় সংশোধিত প্যাকেজের অবস্থা ভিন্ন ছিল। তাই ব্যবহৃত অপারেটিং সিস্টেম অনুযায়ী প্যাচের অবস্থা যাচাই করা জরুরি।