Alpine の openssh-server は PAM なしで組まれており、パスワード未設定のアカウント(shadow の欄が *)へ、257〜1024 バイトのパスワードでログインできる。到達可能な SSH に対し、1 接続で毎回成功する。OpenSSH は深刻度を critical とし、CVE 番号は案内の時点で未採番。glibc の Linux、PAM 経由のパスワード検査、非 Linux は対象外。
次をすべて満たすホストが対象。
- Alpine の
openssh-server(PAM なし)、またはopenssh-server-pamでUsePAM no PasswordAuthentication yes(OpenSSH の既定)- パスワード欄が
*のアカウントがある。root(PermitRootLogin prohibit-passwordの既定では root 直接は不可)、パスワードなしで作った鍵ユーザー、musl-nscd 経由のディレクトリユーザー、tiny-cloud イメージのalpineを含む - 別のローカルアカウントに
$5$または$6$のハッシュがある
コンテナ内で sshd を動かさない構成、PasswordAuthentication no、UsePAM yes、パスワード欄が ! のロック、$ 形式のハッシュが一つも無いホスト、cloud-init が PasswordAuthentication no を書いたイメージは対象外。tiny-cloud の 3.18.11 から 3.24.3 は、初回起動時は安全で、コンソールパスワードなど $6$ ハッシュができた時点で alpine と passwordless doas 経由の root に開く。
対処はパッケージ更新のあと sshd の再起動。パッケージ更新だけでは動いているデーモンは置き換わらない。
apk upgrade -U -a
rc-service sshd restart修正パッケージは 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.16 までさかのぼって修正パッケージがある。ポイントリリース 3.21.10、3.22.8、3.23.8、3.24.4 に同梱。上流の修正は OpenSSH 10.6p2。
更新できない間は、鍵ログインを確認したうえで PasswordAuthentication no を書き、sshd -t のあと再起動する。/var/log/messages に、パスワード未設定のアカウントへの Accepted password for があれば侵入を疑う。