"so openssh on musl linux (alpine, openwrt, buildroot, yocto, and a lot of the docker images" "accounts that should never take a password at all (root, your key-only deploy user, ldap users, the default user on alpine's aws and azure images) take any password longer than 256 characters"
*sshole · sshhole.com
glibc使ってるLinuxなら関係ないのか
ケツの穴ドットコムか……
“musl Linux (alpine、openwrt、buildroot、yocto、およびプルした多くの Docker イメージ) 上の openssh には、2016 年以降、少し問題があります。”
*=aとする
マ?
ありそうやりそうのオンパレードでしんどい。暗黙の了解だったりセオリーだったりを選びがちなことで、いつの間にかおかしな穴が空いている問題は、IT業界以外でもいろんなシーンにありそう。
muslの失敗値「*」が、パスワードなしアカウントの保存値「*」と一致して認証を通す。鍵専用のつもりでも実効設定は別だ。PAM不使用などの条件を確認し、OpenSSHの修正適用を版名だけで判断しない。
"so openssh on musl linux (alpine, openwrt, buildroot, yocto, and a lot of the docker images" "accounts that should never take a password at all (root, your key-only deploy user, ldap users, the default user on alpine's aws and azure images) take any password longer than 256 characters"
ビルジョイがpassword無しを表すのに`*`を使ったのと、muslやopensshの良かれと思って実施した修正が偶然組み合わさって、10年ぐらいpassword設定なしアカウントに長い文字列渡すだけでログインできる穴が開いてたというお話
Alpineはコンテナで使っていると普通はsshd立てないし、OpenWrtはデフォルトのssh実装がdropbearだし、思ったより影響範囲は小さそう。
crypt失敗時の戻り値をNULLから*に変えたの流石に*ssholeだろ
このアスタリスクは狙ってるやろ。fcukみたいなやつ。
んほぉ
*asshole
alpine などの musl な sshd でパスワードの無しのアカウントに対して適当な 257 文字以上のパスワードを入れると通ってしまう・・ さすがにこの影響ある条件はなかなか踏まないとは思うけれども
きたねえな
cryptがNULLを返すのが正解っぽいように見えるけどNULLチェックのない古いプログラムがクラッシュしないようにこういう挙動になってるぽい、libxcryptだとエラー時の戻り値がハッシュの値に一致しないよう対策してる
musl使ってる環境ってどちらかといえばLinux組み込み系にありそうという印象。そう考えると影響はここで例示されている以外のところに出ていそう(ただあくまで想像)
sshという字面、*というマジックワード、そしてセキュリティ上空いた穴という、美しくなさすぎる流れでけつあな確定してしまった事案
セキュリティにも穴はあるんだよな…ゴクリ
これはヤバいなぁ…組込系Linuxでよく見るから、なんか大規模IoT botの種が出来てしまったのでは。そしてこういう問題を持つ機器を導入してる組織に限ってその存在が認知出来ないのでは…
まず、名前がひどい(