約10年間見逃されていたOpenSSHの脆弱性「*sshole」が発覚、257文字以上のパスワードでログイン禁止アカウントを突破可能に
ところがAlpine Linuxなどで採用されている標準Cライブラリであるmusl libcでは、パスワードのハッシュ値を計算する関数「crypt()」が処理に失敗した場合にも「*」を返す仕様になっています。特にSHA-256やSHA-512を使うハッシュ計算では、256バイトを超えるパスワードを入力するとエラーが発生し、「*」が返されます。
問題はOpenSSHが特定の条件下で、この計算結果と保存されているハッシュ値を比較して認証を行うことです。パスワード認証を禁止したアカウントに257バイト以上のパスワードでログインを試みると、計算エラーによって返された「*」と保存されている「*」が一致してしまいます。その結果、OpenSSHが計算エラーを認証成功と誤認するため、攻撃者は正しいパスワードを知らなくてもログインできてしまうというわけです。

ただし、すべてのLinux環境が影響を受けるわけではありません。攻撃が成立するには、musl libcを使用していること、OpenSSHがPAMと呼ばれる認証管理の仕組みを使用していないこと、SSHのパスワード認証が有効になっていることなどの条件があります。さらにパスワード欄が「*」になっている対象アカウントに加え、SHA-256またはSHA-512形式の有効なパスワードハッシュを持つ別のローカルアカウントが必要です。
これらの条件を満たす場合、攻撃者は対象アカウントのユーザー名さえ分かれば、257~1024バイトのパスワードを入力するだけでログインできます。Alpine Linuxの開発チームによると、攻撃は1回の接続で成功し、何度もパスワードを試す必要はありません。
Alpine Linuxの開発チームによると、攻撃が成立するにはOpenSSHのパスワード認証が有効になっていること、PAMによる認証を使用していないこと、パスワード欄に「*」が記録されたアカウントが存在することなどの条件があります。さらに、SHA-256またはSHA-512形式のパスワードハッシュを持つ別のローカルアカウントが1つでも存在すると、攻撃者は257~1024バイトのパスワードを送信するだけで、パスワード認証を禁止されたアカウントにログインできます。攻撃に必要な接続は1回だけで、パスワードを繰り返し試す必要もありません。
特に影響が大きいのがAlpine Linuxの公式クラウドイメージ「tiny-cloud」です。Alpine Linux 3.18.11~3.24.3の一部のイメージには、パスワードなしで管理者権限を取得できる「alpine」というユーザーが用意されています。初期状態では攻撃条件を満たしていませんが、管理者が別のユーザーにパスワードを設定するなどして条件がそろうと、攻撃者はalpineユーザーとしてログインし、管理者権限を取得できてしまいます。
キュルテキン氏らによるサイトでは、DebianとAlpine Linuxで同じパスワードを入力した際の認証結果を比較できるデモが公開されています。通常のパスワードや256文字のパスワードでは認証に失敗しますが、300文字のパスワードを入力するとAlpine Linux側ではハッシュ計算の結果と保存された「*」が一致し、認証に成功してしまうことが確認できます。
特に問題となるのが、Amazon Web Services(AWS)やMicrosoft Azure向けに提供されているAlpine Linuxの公式クラウドイメージです。一部のイメージにはパスワード認証を禁止した「alpine」というユーザーが用意されており、このユーザーは「doas」という仕組みを使って管理者権限を取得できます。初期状態では攻撃条件を満たさなくても、管理者が別のユーザーにパスワードを設定するなどした結果、外部から管理者権限を奪取される危険性が生じます。
なお、OpenSSHの標準設定ではrootアカウントへのパスワードログインが禁止されているため、今回の脆弱性だけで直接rootにログインできるわけではありません。また、DebianやUbuntuなどで一般的に使われるglibc環境や、PAMを使用した認証では、今回報告された問題は発生しません。
キュルテキン氏によると、脆弱性の原因となる仕様の組み合わせは2016年から存在していたとのこと。しかし、OpenSSHとmusl libcの組み合わせは通常のテストで検証されにくく、多くのLinux環境ではPAMを使った認証によって問題が回避されることなどから、約10年間発見されなかったと考えられています。キュルテキン氏はglibcやmusl libc、PAMの有無などを変えた複数のOpenSSH環境を構築し、約1万7600通りの異常なログイン操作を試すことで問題を発見したと説明しています。なお、この検証には複数のAIエージェントも活用したそうです。
OpenSSHの開発チームは2026年11月5日、脆弱性への対策を含む「OpenSSH 10.6p2」を公開しました。Alpine Linuxも各バージョン向けに修正パッケージを提供しており、利用者に速やかな更新とSSHサーバーの再起動を呼びかけています。すぐに更新できない場合はSSHの設定で「PasswordAuthentication no」を指定してパスワード認証を無効化することで、攻撃を防ぐことができます。
OpenSSHの開発チームは脆弱性の根本的な原因はOpenSSHの外部にあると説明していますが、musl libc側の開発者は呼び出し元による関数の使い方に問題があるとの立場を示しています。いずれにしても、長年にわたって使われてきた認証処理とライブラリの仕様が組み合わさり、意図しない認証の成功につながった事例となっています。
Alpine Linuxの開発チームは2026年11月5日にセキュリティ勧告を公開し、OpenSSHの更新とSSHサーバーの再起動を呼びかけました。Alpine Linux 3.21~3.24の各系列に加え、通常のサポートが終了した3.16~3.20向けにも修正パッケージが提供されています。パッケージを更新するだけでは稼働中のSSHサーバーに修正が反映されないため、再起動が必要です。すぐに更新できない場合は、SSHの設定で「PasswordAuthentication no」を指定し、パスワード認証を無効化することが推奨されています。
なお、キュルテキン氏は今回の脆弱性を悪用されたかどうかを調べる方法も紹介しています。SSHのログが保存されている「/var/log/messages」からパスワード認証の成功を示す「Accepted password」という記録を検索してパスワード情報を保存する「/etc/shadow」を確認し、ログインに成功したユーザーのパスワード欄が「*」になっていれば、本来は禁止されているパスワード認証が成功したことになり、脆弱性を悪用された可能性があります。
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.




