پرش به محتوای اصلی
پرش به محتوای مقاله

آسیب‌پذیری آلباین لینوکس: دور زدن SSH با رمز ۲۵۷ بایتی

·۱۶ آبان ۱۴۰۵۴ دقیقه مطالعه
لوگوی لینوکس آلپین روی پس‌زمینه آبی
لوگوی لینوکس آلپین روی پس‌زمینه آبی
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

نخستین افشای عمومی مکانیزم تک‌کاراکتری (*) در crypt() musl که از ۲۰۱۶ وجود داشته و تمام نسخه‌های آلباین را تحت تأثیر قرار داده — با پچ‌های رسمی برای تمام شاخه‌های پشتیبانی‌شده منتشر شده.

یک باگ تک‌کاراکتری در musl libc اجازه می‌دهد مهاجم‌ها احراز هویت SSH را در تمام نسخه‌های آلباین لینوکس از ۳.۱۶ به بعد دور بزنند. ارسال رمز عبوری بین ۲۵۷ تا ۱۰۲۴ بایت، حساب‌های فقط‌کلید را بدون نیاز به رمز اصلی باز می‌کند.

پنجره ترمینال SSH با رابط خط فرمان

آلباین لینوکس به دلیل حجم کوچک و پایه musl libc ستون فقرات کانتینرها و دستگاه‌های لبه است. برخلاف glibc که در دبیان، اوبونتو و فدورا استفاده می‌شود، تابع crypt() در musl وقتی رمز عبور از ۲۵۶ بایت بیشتر شود، یک ستاره (*) برمی‌گرداند — همان نشانگر ذخیره‌شده برای حساب‌های بی‌رمز. این تصادف یک دور زدن کامل احراز هویت ایجاد می‌کند. این باگ روزها بعد از رفع یک مشکل امنیتی جداگانه در گیت‌لب توسط آلباین آشکار شد.

لوگو و متن کتابخانه Musl libc

نحوه کارکرد دور زدن احراز هویت

  • OpenSSH ساخته شده بدون PAM رمزها را با هش کردن تلاش با تابع crypt() کتابخانه C بررسی می‌کند.
  • نتیجه با فیلد رمز ذخیره‌شده حساب مقایسه می‌شود.
  • وقتی رمز از ۲۵۶ بایت بیشتر باشد، crypt() در musl ستاره (*) به عنوان نشانگر خطا برمی‌گرداند.
  • همان ستاره (*) در فیلد رمز برای هر حسابی که رمز ندارد (مانند حساب‌های فقط‌کلید) ذخیره شده است.
  • «هش» تطابق می‌یابد و ورود موفق می‌شود.
  • مهندس امنیت گریگوری براینت گفت: «اکثر دور زدن‌های احراز هویت از زنجیره‌های منطقی پیچیده می‌آیند، اما آسیب‌پذیری OpenSSH آلباین (CVE-2026-123158) به یک کاراکتر واحد خلاصه می‌شود: *.»
  • گروه تحقیق sshole گزارش داد این اثر جانبی از ۲۰۱۶ پنهان مانده است.
  • در سیستم‌های glibc، crypt() در خطا NULL برمی‌گرداند که sshd از قبل رد می‌کند؛ بنابراین دبیان، اوبونتو، فدورا و دیگران تحت تأثیر نیستند.

مقایسه Inkling 2 Small با مدل‌های چینی؛ شاخص 31 AA در پیشرو

پیش‌نیازهای استثمار

  • OpenSSH ساخته شده بدون PAM (پکیج پیش‌فرض آلباین) یا openssh-server-pam با UsePAM no.
  • PasswordAuthentication روی yes (پیش‌فرض OpenSSH).
  • حداقل یک حساب با هش رمز استاندارد (نوع ۵ یا ۶) در سیستم.
  • مهاجم که نام حساب فقط‌کلید را بداند.
  • بار رمز بین ۲۵۷ و ۱۰۲۴ بایت.
  • به گفته آلباین، یک کاربر با رمز باعث می‌شود هر حساب بی‌رمزی قابل دسترس شود.
  • روت مستقیماً در معرض خطر نیست به دلیل PermitRootLogin prohibit-password (پیش‌فرض از حدود آلباین ۳.۱۶).
  • هر حسابی با دسترسی doas به روت مسیری به تسلط کامل فراهم می‌کند.

توزیع‌ها و ایمیج‌های تحت تأثیر

  • آلباین لینوکس: هر نسخه بررسی‌شده — ۳.۱۶ تا ۳.۲۰، ۳.۲۱ تا ۳.۲۴، و edge.
  • آلباین ۳.۲۱ در ۱ نوامبر به پایان پشتیبانی رسیده.
  • ایمیج‌های رسمی tiny-cloud نسخه‌های ۳.۱۸.۱۱ تا ۳.۲۴.۳ به‌ویژه آسیب‌پذیرند.
  • این‌ها با کاربر alpine که فیلد رمز * دارد و doas بی‌رمز ارسال می‌شوند.
  • در بوت اول امن‌اند اما پس از وجود هر هش نوع ۶ (ادمین رمز کنسول می‌گذارد یا داده کاربر حسابی با رمز هش‌شده اضافه می‌کند) قابل استثمار می‌شوند.
  • توزیع‌های دیگر مبتنی بر musl که بالقوه تحت تأثیرند: آدلیه لینوکس، واید لینوکس، سابوتاژ لینوکس، اوپن‌وِرت، پروژه یوکتو.
  • وایند ریور لینوکس به طور فعال تأثیر را بررسی می‌کند. یک نماینده اظهار کرد: «Wind River امنیت را جدی می‌گیرد. ما به طور فعال آسیب‌پذیری گزارش‌شده را بررسی و تأثیر بالقوه آن را ارزیابی می‌کنیم. اقدام مناسب را به میزان نیاز انجام خواهیم داد.»

مقایسه Inkling 2 Small با مدل‌های چینی؛ شاخص 31 AA در پیشرو

سیستم‌های تحت تأثیر قرار نگرفته

  • کانتینرهایی که sshd اجرا نمی‌کنند.
  • سیستمی که احراز هویت با رمز غیرفعال است.
  • سیستمی که از openssh-server-pam با UsePAM yes استفاده می‌کنند.
  • حساب‌های قفل‌شده با ! در فیلد رمز.
  • ایمیج‌های ابری پیکربندی‌شده از طریق cloud-init که PasswordAuthentication no می‌نویسد.

رفع و کاهش فوری ریسک

  • آلباین نسخه‌های پچ‌شده ۳.۲۱.۱۰، ۳.۲۲.۸، ۳.۲۳.۸، و ۳.۲۴.۴ را در پنج‌شنبه با رفع OpenSSH در میان تغییرات امنیتی منتشر کرد.
  • پکیج‌های رفع‌شده برای هر نسخه تا ۳.۱۶ منتشر شده.
  • OpenSSH 10.6p2 از منبع اصلی مشکل را رفع می‌کند.
  • شاخه‌های پایدار آلباین پچ برای همان مسئله را دارند.
  • مراحل لازم: اجرای apk upgrade -U -a سپس rc-service sshd restart.
  • تنها ارتقای پکیج دامنِ در حال اجرا را جایگزین نمی‌کند.
  • اگر نتوانید بلافاصله به‌روزرسانی کنید: PasswordAuthentication no قرار دهید و sshd را پس از تأیید کارکرد ورود با کلید راه‌اندازی مجدد کنید.

تشخیص و پاسخ به حادثه

  • در /var/log/messages به دنبال خطوط "Accepted password for" بگردید که حسابی بی‌رمز را نام می‌برند.
  • استفاده از doas را بررسی کنید.
  • کاربران، فایل‌ها و کلیدهای مجاز اخیراً ساخته‌شده را چک کنید.
  • آلباین هشدار داد: «اگر نتوانید ورود را رد کنید، ماشین را معیوب تلقی کنید.»

این آسیب‌پذیری ریسک سیستمی در پیاده‌سازی‌های libc سبک را برجسته می‌کند که اندازه را بر کدگذاری دفاعی ترجیح می‌دهند. باگ تقریبا یک دهه پنهان ماند چون مسیر خطا — برگرداندن * برای ورودی بزرگ — با یک مقدار سنتینل مشروع تصادف کرد. توزیع‌های مبتنی بر musl مانند آدلیه، واید، سابوتاژ و اوپن‌وِرت اکنون تحت فشار حسابرسی مشابه قرار دارند. برای تیم‌هایی که آلباین را در تولید اجرا می‌کنند، این حادثه تقویت می‌کند که پیکربندی‌های پیش‌فرض در ایمیج‌های مینیمال اغلب فرض‌های پنهان درباره وضعیت احراز هویت را حمل می‌کنند.

اثر درجه دوم بر امنیت زنجیره تأمین می‌تابد. ایمیج‌های tiny-cloud به طور گسترده به عنوان لایه پایه در خط لوله CI/CD و خوشه‌های کوبرنتیز استفاده می‌شوند. یک گره سازنده معیوب می‌تواند کلیدهای مجاز مخرب تزریق کند یا دروازه‌های پشتی پایدار ایجاد کند که بازسازی ایمیج هم باقی می‌مانند. سازمان‌ها باید تمام ایمیج‌های مشتق از آلباین ساخته شده از زمان باز شدن پنجره آسیب‌پذیری را حسابرسی کنند و کلیدهای SSH مستقر در آن دوره را چرخش دهند.

بلافاصله پچ کنید، راه‌اندازی مجدد دامن را تأیید کنید، و لاگ‌ها را برای پذیرش رمزهای غیرعادی اسکن کنید. گروه تحقیق sshole جزئیات فنی برای دفاع‌کننده‌هایی که نیاز به ساخت قوانین تشخیص سفارشی دارند منتشر کرده است. در روزهای آینده به دنبال تلاش‌های استثمار هماهنگ در برابر پورت‌های SSH آلباین باز بمانید — این کلاس دور زدن احراز هویت برای خودکارسازی بی‌نهایت ساده و برای بروکرهای دسترسی اولیه ارزش بالا است.

گام بعدی شما

  • بلافاصله apk upgrade -U -a و rc-service sshd restart را روی تمام گره‌های آلباین اجرا کنید.
  • اگر به‌روزرسانی فوری ممکن نیست، PasswordAuthentication no را در فایل تنظیمات sshd قرار دهید و دامن را راه‌اندازی مجدد کنید.
  • لاگ‌های /var/log/messages را برای "Accepted password for" روی حساب‌های بی‌رمز جستجو کنید و کلیدهای SSH مربوطه را لغو کنید.
چرا این موضوع مهم است؟

این آسیب‌پذیری نشان می‌دهد که انتخاب libc در توزیع‌های مینیمال می‌تواند فرضیات امنیتی کل استک را زیر سوال ببرد. سازمان‌هایی که ایمیج‌های tiny-cloud را در CI/CD و کوبرنتیز استفاده می‌کنند باید بلافاصله حسابرسی زنجیره تأمین و چرخش کلید SSH انجام دهند.

تأثیر برای ایران

تأثیر مستقیمی بر کاربران ایرانی ندارد؛ آلباین در زیرساخت‌های ابری جهانی رایج است اما دسترسی مستقیم به پچ‌ها از مخازن رسمی آلباین برای کاربران ایرانی با تحریم‌ها روبروست.

·نگاه ما
تحریریه دات‌هوش

تصادف یک کاراکتر ستاره بین مسیر خطای musl و نشانگر حساب بی‌رمز آشکار می‌کند که در کتابخانه‌های سیستمی، مقادیر سنتینل باید از فضای خروجی توابع خطا جدا بمانند — یک اصل طراحی که glibc با برگرداندن NULL رعایت کرده اما musl در آن کوتاه آمده. این باگ نه یک خطای کدنویسی ساده، بلکه یک شکست مدل‌سازی تهدید در سطح معماری است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.