ফাহিমুন তাসিনEnglish
☕ কাজটাকে সাপোর্ট করুন

২৫৭ বাইটের একটা পাসওয়ার্ডে খুলে যাচ্ছে কিছু Alpine সার্ভার। দুই মিনিটে নিজেরটা দেখে নিন।

OpenSSH 10.6p2 এমন একটা বাগ ঠিক করেছে, যাতে Alpine আর musl সিস্টেমে শুধু key দিয়ে ঢোকার অ্যাকাউন্টে খুব লম্বা পাসওয়ার্ডে লগইন হয়ে যায়। কারা ঝুঁকিতে, দুই মিনিটের চেক, আর সমাধান।

আপনার কোনো VPS, ক্লাউড সার্ভার বা Docker ইমেজ যদি Alpine-এ চলে আর তাতে SSH খোলা থাকে, তাহলে আজকের কাজ শেষ করার আগে এটা পড়ে নিন।

৫ নভেম্বর OpenSSH ভার্সন 10.6p2 ছেড়েছে। রিলিজ নোটে বলা আছে, এটা একটা জরুরি ফিক্স, সেইসব Linux সিস্টেমের জন্য যেগুলো musl লাইব্রেরি ব্যবহার করে আর PAM ছাড়া চলে। Alpine-এর ডিফল্ট openssh-server প্যাকেজ ঠিক এভাবেই বানানো। বাগটার নম্বর CVE-2026-123158, কেউ কেউ নাম দিয়েছে “sshole”। রিলিজ নোট অনুযায়ী এটা খুঁজে পেয়েছেন Wakefield-এর Özgün Kültekin।

লম্বা পাসওয়ার্ডে দরজা খোলে কীভাবে

কোড না পড়েও বোঝা যায়। চারটা ছোট ব্যাপার পরপর মিলে যায়:

  • যে অ্যাকাউন্ট আপনি বন্ধ রাখতে চেয়েছেন, যেমন নতুন Alpine-এর root, বা যে ইউজার শুধু key দিয়ে ঢোকে, /etc/shadow-এ তার পাসওয়ার্ডের জায়গায় থাকে শুধু একটা *।
  • PAM বন্ধ থাকলে sshd নিজেই crypt() দিয়ে পাসওয়ার্ড মেলায়।
  • musl-এর crypt() ২৫৬ বাইটের বেশি লম্বা SHA-256 বা SHA-512 পাসওয়ার্ড নেয় না। না নিলে সে ফেরত দেয় *।
  • sshd সেই *-কে মেলায় শ্যাডো ফাইলের *-এর সাথে। দুটো এক, তাই লগইন সফল।

মানে ভুল পাসওয়ার্ড বলতে এখানে শুধু একটা খুব লম্বা পাসওয়ার্ড। OpenSSH বলছে আসল কারণ sshd-এর বাইরে, আর musl-এর রক্ষণাবেক্ষণকারী বলছেন ভুলটা যে প্রোগ্রাম ডাকছে তার। কে ঠিক, তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। 10.6p2 sshd-এর ভেতরেই এটা আটকে দেয়।

আপনি কি ঝুঁকিতে?

নিচের চারটাই সত্যি হতে হবে:

  1. musl লাইব্রেরি। Alpine, আর অনেক এমবেডেড বা নিজে বানানো সিস্টেম। Debian, Ubuntu, RHEL-এর মতো glibc সিস্টেম নিরাপদ।
  2. PAM ছাড়া OpenSSH। Alpine-এর ডিফল্ট openssh-server। openssh-server-pam প্যাকেজ আর UsePAM yes থাকলে সমস্যা নেই।
  3. পাসওয়ার্ড লগইন চালু। PasswordAuthentication yes ডিফল্টই থাকে।
  4. অন্তত একটা অ্যাকাউন্টের পাসওয়ার্ডের জায়গায় *। Alpine-এ নতুন ভার্সনের root, আর অফিশিয়াল ক্লাউড ইমেজের alpine ইউজার। OX Security বলছে, এই ইউজার পাসওয়ার্ড ছাড়া doas দিয়ে root হতে পারে।

রাউটারে যে Dropbear চলে, সেটা আলাদা প্রোগ্রাম। তার এই সমস্যা নেই।

দুটো বড় রিপোর্ট কিছু জায়গায় একমত না। OX Security বলছে root দিয়েও ঢোকা যায়। TuxCare তাদের ল্যাবে দেখেছে, ডিফল্ট PermitRootLogin সেটিং root-কে আটকে দিয়েছে। একবারের চেষ্টায় হয় নাকি দুবার লাগে, তা নিয়েও মতভেদ আছে। ভালোটা ধরে নিয়ে বসে থাকবেন না। চারটা শর্ত মিলে গেলে ধরে নিন দরজা খোলা।

দুই মিনিটের চেক

Alpine মেশিনে root হয়ে চালান:

apk info -v openssh-server                          # কোন ভার্সন
ldd /usr/sbin/sshd | grep musl                      # লাইন এলে musl
sshd -T | grep -iE 'passwordauthentication|usepam'  # yes না no
awk -F: '$2=="*"{print $1}' /etc/shadow             # কোন অ্যাকাউন্টে *

এবার Alpine ট্র্যাকারের ঠিক করা ভার্সনের সাথে মেলান: edge-এ 10.6_p2-r0, 3.24-এ 10.3_p1-r2, 3.23-এ 10.2_p1-r1, 3.22-এ 10.0_p1-r11, 3.21-এ 9.9_p2-r1, 3.20-এ 9.7_p1-r6, 3.19-এ 9.6_p1-r3। OX Security আর TuxCare 3.18-এর জন্য 9.3_p2-r4 লিখেছে।

ঠিক করুন

apk upgrade -U
rc-service sshd restart

রিস্টার্টটা জরুরি। না দিলে পুরোনো sshd চলতেই থাকবে।

আজ আপডেট করতে না পারলে পাসওয়ার্ড লগইন বন্ধ করে দিন। /etc/ssh/sshd_config-এ PasswordAuthentication no লিখুন, sshd রিস্টার্ট দিন, তারপর sshd -T দিয়ে দেখে নিন। Alpine 3.19 বা নতুন হলে /etc/ssh/sshd_config.d/ ফোল্ডারে আলাদা ফাইলেও কাজ হয়। TuxCare বলছে 3.18 বা পুরোনো ভার্সন এই ফোল্ডার পড়ে না, তাই সেখানে মূল ফাইলটাই এডিট করুন।

Docker-এ Alpine ব্যবহার করলে ইমেজগুলো নতুন বেস থেকে আবার বিল্ড করুন। গত সপ্তাহে বানানো ইমেজে পুরোনো প্যাকেজই রয়ে গেছে, আবার বিল্ড না করা পর্যন্ত থাকবে।

কেউ কি আগেই ঢুকে পড়েছে?

আমি যে সোর্সগুলো পড়েছি, তার কোনোটাতেই আজ পর্যন্ত বাস্তবে হামলার খবর নেই। বাগ প্রকাশ্যে আসার পর অবশ্য তা দ্রুত বদলায়। তাই একবার দেখে নিন:

grep 'Accepted password for' /var/log/messages

যে সার্ভারে সবাই key দিয়ে ঢোকে, সেখানে কিছুই আসার কথা না। এমন কোনো লাইন দেখলে যার ব্যাখ্যা আপনার কাছে নেই, ধরে নিন মেশিন বেহাত হয়েছে। নেটওয়ার্ক থেকে সরান, key বদলান, নতুন করে বানান।

যে অভ্যাসটা রেখে দেওয়ার মতো

“লক করা” তখনই লক, যখন প্রতিটা স্তর একই মানে বোঝে। এখানে তিনটা সফটওয়্যার আলাদা আলাদা যুক্তিসংগত সিদ্ধান্ত নিয়েছিল, আর তিনটা মিলে একটা দরজা খুলে গেছে।

আপনি যদি সবসময় key দিয়েই ঢোকেন, সেটা কনফিগে লিখে রাখুন। PasswordAuthentication no মাত্র এক লাইন। এটা এই পুরো ধরনের বাগ বন্ধ করে দেয়, পরেরটাও।

এরপর পড়ুন

নিউজলেটার

দিনের সেরা দুটো আইডিয়া ইমেইলে নিন. স্প্যাম নেই। এক ক্লিকে বের হওয়া যায়।