
Alpine Linuxを含むmusl libcベースのLinux環境で、OpenSSHとmusl libcの組み合わせに起因する深刻な認証回避の脆弱性が発見されました。影響を受ける環境では、本来ログインできないはずのアカウントに対して、257文字以上の任意のパスワードを入力するだけでSSHログインに成功する可能性があります。
今回の問題は単独のソフトウェアの欠陥ではなく、OpenSSHの認証処理とmusl libcのパスワードハッシュ処理が予期せぬ形で組み合わさったことで発生しています。セキュリティ研究者によって報告され、OpenSSHは緊急修正版となる「10.6p2」を公開しました。
256文字超のパスワードで認証回避
脆弱性が成立する環境では、攻撃者は正しいパスワードを知らなくてもSSH経由でログインできる可能性があります。
攻撃に必要なのは、対象サーバーへネットワーク経由でアクセスできることと、ログイン対象となるアカウント名を知っていることです。この場合、257~1024文字程度の長いパスワードを送信するだけで認証を突破できるケースがあります。Alpine Linux公式のアドバイザリによると、この攻撃は一度の接続で成功し、総当たり攻撃のような繰り返し試行を必要としないとのこと。
影響を受ける可能性があるディストリビューションにはAlpine Linuxのほか、Buildroot、Yocto、Void Linuxなどが含まれます。特にAlpine LinuxはDockerコンテナやKubernetes環境、クラウドVM、組み込み機器などで広く利用されているため、影響範囲は非常に大きいと考えられています。
ただし、Alpine Linuxを使っているだけで直ちに危険というわけではありません。コンテナ内でSSHサーバーを動作させていない場合は影響を受けません。
脆弱性が成立する条件
攻撃が成立するにはいくつかの条件が重なる必要があります。
影響を受けるのは、musl libc環境でOpenSSHがPAMを利用せず動作しており、さらにパスワード認証が有効になっている場合です。また、パスワード未設定を示す「*」が設定されたアカウントと、SHA-256またはSHA-512形式のパスワードハッシュを持つ別ユーザーが同一システム内に存在する必要があります。
これらの条件が揃うと、長いパスワードによって認証エラーが発生した際の戻り値が、本来ログイン不可のアカウントに設定されている「*」と一致してしまい、認証成功と誤判定される可能性があります。
今すぐ実施したい対策
OpenSSHプロジェクトおよびAlpine Linuxプロジェクトは、修正版への更新を最優先で推奨しています。OpenSSH 10.6p2へのアップデート後は、SSHデーモンの再起動も必要です。
すぐにアップデートできない場合の暫定対策としては、SSH設定でパスワード認証を無効化(/etc/ssh/sshd_configでPasswordAuthentication no)し、sshdを再起動することが推奨されています。
まとめ
今回の脆弱性は、OpenSSHとmusl libcの特殊な組み合わせによって発生した認証回避問題です。特にAlpine Linuxでは初期設定との相性から影響を受けやすく、SSHを公開している環境では早急な対応が求められます。
該当する環境が存在する場合、まずバージョン確認を行い、修正版への更新またはパスワード認証の無効化を速やかに実施することが重要です。
[via Tom's Hardware]
