Кібербезпека

Уразливість «sshole» в OpenSSH: вхід у заблоковані паролем акаунти на musl‑Linux

Дослідник розкрив ваду «sshole» в OpenSSH на дистрибутивах Linux із бібліотекою musl: зловмисник може увійти в акаунти, де паролі начебто вимкнені, надіславши надто довгий пароль.

Уразливість «sshole» в OpenSSH: вхід у заблоковані паролем акаунти на musl‑Linux
Фото: BleepingComputer

У OpenSSH виявили ваду «sshole», яка дає змогу заходити на деякі musl‑базовані Linux‑системи, навіть якщо для акаунта вимкнено парольну автентифікацію. Проблема стосується, зокрема, Alpine Linux, OpenWrt, Buildroot і Yocto за певної конфігурації.

Як це працює

За даними дослідника Озґюна Кюльтекіна, баг існує з 2016 року через взаємодію OpenSSH із бібліотекою musl. Щоб замаскувати різницю в часі відповіді й не дозволити визначати наявні імена користувачів (CVE-2016-6210), у 2016 році OpenSSH почав хешувати паролі навіть для акаунтів без придатних хешів.

У Linux для блокування входу паролем у полі пароля файлу /etc/shadow часто ставлять символ *. У musl функція crypt() повертає * у разі збою хешування, зокрема коли надісланий пароль довший за 256 байтів. У підсумку OpenSSH порівнює повернене * зі збереженим *, і вхід помилково зараховується як успішний.

Вразливість не дозволяє обходити справжні паролі для акаунтів із валідними хешами.

Кому загрожує

  • Сервери OpenSSH на дистрибутивах з musl (Alpine Linux, OpenWrt, Buildroot, Yocto).
  • Вимкнено PAM (за замовчуванням у пакеті openssh-server в Alpine Linux).
  • Увімкнено автентифікацію паролем по SSH.
  • Є хоча б один акаунт із * у полі пароля в /etc/shadow.
  • Існує інший акаунт із валідним хешем пароля.

Дослідник попереджає: офіційні образи Alpine Linux для AWS і Azure містять дефолтний акаунт alpine із привілеями doas без пароля — це може відкрити зловмиснику шлях до root.

Системи на glibc (Debian, Ubuntu, Fedora) і конфігурації з PAM не вразливі.

Що робити адміністраторам

Проблему виправлено в OpenSSH 10.6p2. Користувачам Alpine Linux радять оновити пакети командою apk upgrade openssh.

Як тимчасове пом’якшення — вимкнути паролі в SSH (рядок PasswordAuthentication no у конфігурації сервера) й перезапустити службу.

Як перевірити можливу експлуатацію

Перегляньте журнали автентифікації на предмет успішних входів паролем для акаунтів, де це заборонено. В Alpine Linux це можна зробити так: grep "Accepted password" /var/log/messages.

Якщо бачите успішний вхід для акаунта alpine, перевірте, чи вимкнено в нього паролі: grep '^alpine:' /etc/shadow. Якщо в полі пароля стоїть *, але в журналах є «Accepted password», це може свідчити про використання вразливості.

Як знайшли

Кюльтекін виявив проблему за допомогою агентів на основі штучного інтелекту, які виконали близько 17 600 тестів автентифікації з різними конфігураціями OpenSSH, пошкодженими хешами та надмірно довгими паролями.

Джерела

Читайте також