SSHサーバー「OpenSSH」の脆弱性CVE-2026-123158が、2026年11月9日にCISA(米国のサイバーセキュリティ機関)の「KEV」に追加されました。KEVは、実際に悪用された脆弱性のカタログです。NVDの説明によると、musl libc(軽量なCライブラリ)を使い、PAM(Linuxの認証部品)なしで動くLinuxのsshdでは、256〜1024文字の長いパスワードで、一部の設定のアカウントにログインされる恐れがあります。例として挙がっているのが、DockerのベースイメージでおなじみのAlpine Linuxです。
自分のサーバーが対象かどうかは、まず「sshdを動かしているか」「Alpine Linuxか」を確認してください。Alpine Linuxの告知によると、Dockerなどのコンテナの利用者のうち、コンテナの中でsshdを動かしていない場合は、対象ではありません。サーバー本体や仮想マシンでsshdを動かしている場合は、この除外に当たらないので、下の条件で判断してください。Ubuntu・Debian・RHEL系のようにglibcを使うLinuxは、NVDの説明の条件(musl libc)に入りません。ただし、当サイトでは各ディストリビューションの個別の見解までは確認していません。修正版はOpenSSH 10.6p2(11月5日公開)です。
スコアの出どころ:8.1(CVSS v3.1)は、NVDに載っているCVE登録側(CNA、cve@mitre.org)の評価です。ベクターは「ネットワークから・攻撃の複雑さ高・権限不要・利用者の操作不要・影響範囲は変わらない・機密性/完全性/可用性への影響がいずれも高」です。11月10日の取得時点で、NVDにあったCVSSはこの1件だけでした(NIST自身のスコアは見当たりませんでした)。CISAのSSVC評価では、悪用は「active(実際に起きている)」、自動化は「no」、技術的影響は「total(全面的)」です。
何が起きているのか(公表されている範囲)
- ▸CVE-2026-123158:OpenSSHの10.6p2より前のsshdが、Linux上でmusl libcを使い、PAMなしで動いているときの、パスワード認証の回避です。NVDの説明では、パスワードの長さが256〜1024文字だと、一部の設定のアカウントでログインに成功します。弱点の種類はCWE-394(予期しない戻り値の扱い)です
- ▸仕組み(Alpine Linuxの説明):PAMなしのsshdは、入力されたパスワードをcrypt()で変換して、保存されている値と比べます。musl libcのcrypt()は、パスワードが256バイトを超えると、エラーの印として「*」を返します。パスワードを持たないアカウントの保存値も「*」なので、一致したことになってログインできてしまいます
- ▸攻撃に必要な条件(Alpine Linuxの説明):①sshdにネットワークから届く、②PasswordAuthenticationが有効(既定値は有効)、③パスワード欄が「*」のアカウントがある(rootや、鍵だけで使うユーザーなど)、④別のアカウントに、$5$か$6$で始まるパスワードのハッシュがある。1回の接続で、毎回成功すると書かれています。rootは、PermitRootLoginの既定値(prohibit-password)で守られますが、ログインできる別のアカウントからdoasなどでrootになれると意味がありません
- ▸CISAのKEV:11月9日に追加され、対応期限は11月12日です(米国の連邦機関向けの期限)。ランサムウェア攻撃での利用は「不明」と記載されています
- ▸公式の対応:OpenSSHは、10.6p2のリリースノートで「Linuxのmusl libc・PAMなしで悪用できるパスワード認証の回避を避けた。原因はsshdの外にあると考えるが、sshd側で防げる」と説明しています。Alpine Linuxは、3.21.10・3.22.8・3.23.8・3.24.4で修正版のパッケージを出し、3.16まで遡って修正版を出したと書いています
今日やること(Alpine Linuxでsshdを動かしている場合)
- ✓★sshdを動かしているか確認する。サーバー本体、仮想マシン、クラウドのイメージ、ルーターなどの小型機器が対象になり得ます。コンテナの中でsshdを動かしていない場合に限り、Alpine Linuxの告知では対象外です(サーバー本体や仮想マシンでsshdを動かしているなら、対象外ではありません)
- ✓★パッケージを更新して、sshdを再起動する。下のコマンドのとおり、更新だけでは動いているsshdは入れ替わりません。再起動までが対策です(Alpine Linuxの告知)
- ✓更新できないときは、パスワード認証を止める。sshd_configの「PasswordAuthentication」の行をすべて「no」にして(Matchブロックの中の行も含めます)、再起動します。先に、鍵でのログインが通ることを確かめ、今のログインは閉じずに試してください(Alpine Linuxの告知の手順です)
- ✓設定を確認する。下のコマンドで「passwordauthentication no」と出ても、それは基本の設定の表示です。Matchブロック(特定のユーザーや接続元だけに別の設定をする書き方)の中に「PasswordAuthentication yes」が残っていると、その条件の接続ではパスワード認証が有効なままです。sshd_configの「PasswordAuthentication」の行をすべて見てください(Alpine Linuxの告知の手順は、Matchブロックの中も含めて「yes」を「no」に直します)
- ✓ログを確認する。/var/log/messagesに、パスワードを持たないアカウント(alpine、root、鍵だけのユーザー)の「Accepted password」がないかを見ます。ログインを否定できなければ、そのマシンは侵害された前提で扱うとAlpine Linuxは書いています
- ✓Alpine Linuxのクラウドイメージ(tiny-cloud)を使っているか確認する。3.18.11〜3.24.3のイメージには、パスワードを持たないalpineユーザーと、パスワードなしのdoasが入っています。初回起動は安全ですが、管理者がコンソール用のパスワードを設定するなど、$6$のハッシュが1つできた時点で悪用できるとAlpine Linuxは説明しています
apk upgrade -U -a
rc-service sshd restartgrep -in PasswordAuthentication /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*
sshd -T | grep -i passwordauthenticationgrep "Accepted password" /var/log/messages上のコマンドはAlpine Linuxの手順です。Alpine Linux以外(Yoctoなどの組み込み向けLinuxを含む)は、パッケージの管理方法が違います。oss-securityには、Yoctoの標準イメージでも再現できたという第三者の投稿がありますが、OpenSSHやYoctoの公式の告知ではないため、当サイトでは確認できていません。自分の環境でmusl libcを使っているかは、ディストリビューションの案内で確認してください。
確認できなかったこと
- ▸Alpine Linux以外の、musl libcを使うLinuxの修正状況。OpenSSHの10.6p2が修正版であることは確認できましたが、各ディストリビューションが更新を出したかは、個別には見ていません
- ▸攻撃の規模・攻撃者。KEVへの追加は、悪用が確認されたことを示しますが、件数や攻撃者の情報は確認できた資料にありませんでした
- ▸日本国内の被害。この記事では示せません
- ▸NISTによるスコア。11月10日の取得時点のNVDには、CVE登録側(CNA)の8.1だけがありました
- ▸NVDの「256〜1024文字」とAlpine Linuxの「257〜1024バイト」の差。境界の数え方の違いだと思われますが、当サイトでは確かめていません。256より長ければ危険、と覚えておくと安全です
共有するならこの3行
- ▸OpenSSHのCVE-2026-123158が、11月9日にCISAの「悪用確認」カタログ(KEV)に追加された。musl libc・PAMなしのLinux(Alpine Linuxなど)で、長いパスワードにより、パスワードを持たないアカウントにログインされる恐れがある
- ▸★Alpine Linuxでsshdを動かしているなら、更新してsshdを再起動する。更新できなければ、鍵でのログインを確認してからPasswordAuthenticationをnoにする(Dockerなどのコンテナの利用者で、コンテナの中でsshdを動かしていなければ対象外。サーバー本体や仮想マシンのsshdは対象になり得る)
- ▸修正版はOpenSSH 10.6p2。/var/log/messagesで、パスワードのないアカウントの「Accepted password」も確認する
