OpenSSH に、通称 “SSH hole”(#sshhole) と呼ばれる認証バイパス脆弱性 CVE-2026-123158(GHSA-4fcc-vm97-gx3x・High・CVSS 8.1・2026-11-05 公開)が見つかり、OpenSSH 10.6p2 で修正された。条件はかなり限定的だが、はまると重い——Linux で musl libc(例: Alpine Linux)を PAM なしで使い、SSH パスワード認証が有効な構成では、256〜1024 文字のパスワードが一部のアカウント構成で通ってしまい、研究者の PoC では root(uid=0)取得が示された、と報じられている。しかもこの不具合は2016年から約10年潜んでいたとされる(発見 Pierre Arlais・bearstech 経由で紹介)。まずは関連ポストを置く。

まず確かめること(30秒・2026-11-06)

  • ・musl libc(Alpine等)+PAM不使用+パスワード認証が揃う OpenSSH <10.6p2 が対象
  • ・256〜1024文字のパスワードで一部アカウントの認証が成立(root 到達も報告)
  • ・対処:OpenSSH 10.6p2/配布パッチへ更新(Alpine は apk upgrade openssh)。無理ならパスワード認証を無効化
  • ・glibc+PAM+鍵認証が既定の主要クラウドAMIは、既定では条件を満たしにくい

TIMELINE時系列

2026-11-05 公開・修正 → 条件が揃う環境は急ぎ対応

  1. 2026-11-05 公開

    CVE-2026-123158 / GHSA-4fcc-vm97-gx3x 公開。Alpine が同日告知。OpenSSH 10.6p2 で修正

  2. 何が可能か

    一部のアカウント構成で、256〜1024文字のパスワードが通り、本来パスワード不可の口に入れてしまう

  3. 急ぎ対応

    10.6p2/配布パッチへ更新。無理ならパスワード認証を無効化し、鍵認証へ寄せる

出典: GitHub Advisory GHSA-4fcc-vm97-gx3x(CVE-2026-123158・High・CVSS 8.1・2026-11-05 確認)

土台の考え方は サプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説、直近の更新喚起は APT の深刻な脆弱性 CVE-2026-109518、AIアプリ側の話は ChatGPT ロックダウンモード回避 も参照。以下は GitHub Advisory(GHSA-4fcc-vm97-gx3x)を一次とした整理だ(解説サイト sshhole.com もある)。攻撃の再現手順・PoC は扱わない(防御が目的)。

何が起きたのか——パスワードが“ハッシュと誤解釈”される

GHSA の原文はこうだ——「10.6p2 より前の OpenSSH の sshd は、Linux で musl libc を PAM なしで使う場合、パスワード認証バイパスへの回避策を欠く(ある文字列がパスワードハッシュとして意図されているか否かの誤解釈に関連)。一部のアカウント構成では、256〜1024 文字のどのパスワードでも成功する。musl libc を PAM なしで使うプラットフォームの例が Alpine Linux」。

噛み砕くと、sshd がパスワードの正否を確かめる過程で、異常に長い入力文字列を「平文パスワード」ではなく別のもの(ハッシュ等)として扱ってしまう余地があり、その誤解釈により一部アカウント構成の判定がすり抜ける、ということだ。glibc や PAM を使う環境では回避策が効くが、musl + PAM なしの組み合わせでその回避策が欠けていた。正規ユーザーが 256 文字のパスワードを打つ話ではなく、攻撃者が任意に長い文字列を送れる前提で読むべき脆弱性だ。ツイートでは PoC で root セッション取得(uid=0)が示されたと報じられているが、本記事では手口は扱わない。

補足:原因の表現は GHSA の「パスワードハッシュか否かの誤解釈」に留める。巷で語られる「crypt() が長いパスワードで NULL を返す」といった具体機序は、本記事の一次資料(GHSA)には明記がないため断定しない。正確な内部挙動は OpenSSH 10.6p2 のリリースノートや修正コミットで確認してほしい。

なぜ PAM の有無で差が出るのか。PAM を使う構成では、認証は PAM モジュールに委ねられ、sshd 自身が生のパスワードハッシュ照合を主導しない。PAM を使わない構成では、sshd が libc の仕組みでパスワードを検証する。glibc と musl でその境界の扱いが異なり、musl + PAM なしの経路で“回避策が欠けていた”——というのが今回の構図だ。だからこそ、同じ OpenSSH でも glibc や PAM 経由なら影響を外れる。なお「256〜1024」という範囲の理由は GHSA 本文に詳細がないが、要は通常ありえない長さの入力が引き金になる、ということだ。逆に言えば正規運用でこの範囲のパスワードを使うことはまずなく、検知の観点では“極端に長い認証試行”は疑わしい兆候になりうる。

影響する条件(と、しない構成)

「自分が対象か」は、次の4つが揃うかで切り分けられる。どれか欠ければ、原則この脆弱性の対象ではない。

WHEN AFFECTEDこの4つが揃うと影響

musl × 非PAM × パスワード認証が鍵

  1. 1.OpenSSH が 10.6p2 より前

    sshd のバージョンが修正前(ssh -V で確認)

  2. 2.musl libc(例: Alpine Linux)

    glibc ではなく musl。ツイートでは OpenWrt 等も挙げられる(GHSA の明記は Alpine)

  3. 3.PAM を使っていない

    PAM 経由の認証でない構成(musl + PAM 無し)

  4. 4.パスワード認証が有効

    PasswordAuthentication yes。256〜1024文字で、一部アカウント構成の認証が成立(root の例も報告)

出典: GHSA-4fcc-vm97-gx3x 原文「before 10.6p2 on Linux, when musl libc is used without PAM…any password between 256 and 1024 characters succeeds」
条件 対象 非対象(これなら原則安全)
OpenSSH 版 10.6p2 より前 10.6p2 以降/修正済みパッケージ
libc musl(Alpine 等) glibc
PAM 使っていない PAM 経由(UsePAM yes)
パスワード認証 有効 無効(鍵認証のみ)

まとめると、影響を受けるのは「OpenSSH 10.6p2 より前・musl libc・PAM 不使用・パスワード認証が有効」の4条件がそろう Linux(Alpine が代表例)だ。影響を受けるバージョンは「10.6p2 より前」で、修正は 10.6p2 以降(および各ディストロの配布パッケージ)に入る。

GHSA が明示するのは Alpine Linux(musl + PAM なしの例)だ。GHSA が曖昧に書く「一部のアカウント構成(some configurations of accounts)」の正体は、研究者の告知(sshhole.com/*sshole、発見は Pierre Arlais・bearstech 経由)でより具体的だ——そもそもパスワードでログインできないはずのアカウント、すなわち root、鍵のみのデプロイユーザー、LDAP ユーザー、そして Alpine の AWS/Azure クラウドイメージの既定ユーザーなどが、256文字を超えるどんなパスワードでも受け入れてしまう、という。パスワードを設定していない(ロックされた)口ほど逆に通ってしまう点が不気味だ。対象は Alpine だけでなく、OpenWrt・buildroot・yocto、そして普段 pull している多くの Docker イメージに及ぶとされる。いずれにせよ、条件を厳密に詰めるより先に更新するのが安全側だ。

AWS/クラウドへの影響

結論から言うと、主要クラウドの既定構成では影響しにくい。だが「クラウドだから安全」ではなく、土台イメージ次第だ。

CLOUD IMPACTAWS/クラウドでの影響

既定AMIは影響しにくい/Alpineコンテナ等が危険

既定では影響しにくい

  • Amazon Linux 2/2023・Ubuntu 等の主要AMI=glibc
  • sshd は PAM 経由(UsePAM yes)が既定
  • EC2 既定はパスワード認証オフ=鍵認証
  • → 既定構成の多くは条件を満たさない

危険になりうる

  • Alpine ベースの自作イメージ/コンテナで sshd
  • パスワード認証を有効化している
  • 非PAM(musl + PAM 無し)構成
  • OpenWrt 等の musl 機器・踏み台・CIランナー
出典: 影響条件は GHSA(musl/非PAM/password auth)。AWS 既定の glibc・PAM・鍵認証は一般に知られた構成(2026-11-06 整理)
  • 既定では影響しにくい:Amazon Linux 2/2023・Ubuntu などの主要 AMI は glibc を使い、sshd は PAM 経由(UsePAM yes)が既定、EC2 は既定でパスワード認証オフ=鍵認証。この3点のどれもが本脆弱性の条件を外すので、既定の EC2 の多くは対象外になりやすい。
  • 危険になりうる:Alpine ベースの自作イメージ/コンテナで sshd を動かし、パスワード認証を有効化している場合。コンテナは通常 sshd を持たないが、踏み台(bastion)・CI ランナー・アプライアンスを Alpine で作って sshd を入れているケースは実在する。OpenWrt 等の musl 機器も同様だ。ECS/EKS/Fargate でも、動かしているコンテナが上記に当てはまれば対象になりうる。とりわけ研究者の告知では、Alpine の AWS/Azure 公式イメージの“既定ユーザー”が名指しで挙げられている。クラウドで Alpine イメージをそのまま使っているなら、既定ユーザーのパスワード経路が開いていないかを特に確認したい(本来は鍵のみのはずのユーザーでも、256文字超のパスワードで通りうるのが怖い点だ)。

要は、「クラウドの既定 AMI」か「自分で組んだ Alpine/musl イメージ」かで明暗が分かれる。後者を使っているなら、イメージの OpenSSH 版・libc・PAM・パスワード認証設定を確認してほしい。コンテナで確かめるなら中身を見るのが早い——docker run --rm <image> sh -lc 'ldd --version 2>&1 | head -1; command -v sshd && apk info -v 2>/dev/null | grep -i openssh' のように、libc が musl か・sshd が入っているか・OpenSSH パッケージの版はいくつか、を一度に確認できる。そもそも本番コンテナに sshd を同梱しない設計(入っているのは例外)なら、この脆弱性の面はほぼ閉じる。なお本節の AWS 既定(glibc・PAM・鍵認証)は一般に知られた構成に基づく整理で、ベンダーの公式見解そのものではない。

対策と、自分のサーバーの確認

対処は「更新」が本筋。更新できないときの緩和として「パスワード認証の無効化」がある。

WHAT TO DO確認と対処

確認 → 更新 → 無理なら無効化 → 鍵認証

  1. 1

    確認

    版はパッケージ照会(apk/dpkg/rpm)、ldd --version で musl か、sshd -T で UsePAM / PasswordAuthentication の実効値を確認

  2. 2

    更新

    OpenSSH 10.6p2 か配布パッチへ(Alpine は apk update && apk upgrade openssh)

  3. 3

    更新できないなら緩和

    PasswordAuthentication no にしてパスワード認証を無効化(更新の代替であって根本対処ではない)

  4. 4

    鍵認証へ寄せる

    公開鍵認証に統一。root の直接ログインは PermitRootLogin も見直す

出典: 対処は GHSA の方針(10.6p2 へ更新、無理ならパスワード認証無効化)と一般的な SSH 運用(2026-11-06)

まず、自分の環境が条件に当てはまるかを確認する。

# OpenSSH の版(10.6p2 より前か)
#   狙いは sshd(サーバ)側。ssh -V はクライアント版だが、ssh と sshd は
#   通常同じパッケージ=同じ版。確実なのはパッケージ照会。配布版はバックポート
#   修正で版番号が据え置きのことがあるので、番号だけで安全とは判断しない。
ssh -V
apk info -v 2>/dev/null | grep -i openssh      # Alpine
# dpkg-query -W openssh-server                  # Debian / Ubuntu
# rpm -q openssh-server                          # RHEL系 / Amazon Linux

# libc が musl か glibc か("musl" と出れば該当 libc)
ldd --version 2>&1 | head -1

# PAM とパスワード認証の「実効」設定
#   sshd_config を直接 grep すると Include・Match・既定値を取りこぼすので、
#   sshd -T で実際に効いている値を見る。
sudo sshd -T 2>/dev/null | grep -Ei 'usepam|passwordauthentication|permitrootlogin'

更新・緩和はこうだ。

# Alpine なら更新(修正を含むパッケージへ)
apk update && apk upgrade openssh

# すぐ更新できないときの暫定緩和:パスワード認証を無効化
#   /etc/ssh/sshd_config に PasswordAuthentication no を設定し、sshd を再起動
#   (これは更新の代替であって根本対処ではない)

ただし、この結果だけでは安全とは言えない。表示される版や設定は「条件に当てはまりうるか」を示すだけで、すでに攻撃を受けたかどうかを判定するものではないし、修正が効いているかは更新の結果で別途確かめる必要がある。迷うなら、条件の精査より先に更新を当て、鍵認証へ寄せるのが安全側である。

根本的には、パスワード認証そのものをやめて公開鍵認証に一本化するのが最も強い。今回のように「パスワード検証のどこかにバグ」があっても、パスワードの口が閉じていれば入口から断てる。PasswordAuthentication no、PermitRootLogin prohibit-password(または no)、公開鍵のみ——これを既定にしておけば、この種の“パスワード経路の脆弱性”全般に強くなる。root の直接ログインを許していないかも、この機会に見直したい。

まとめ

  • ・CVE-2026-123158(SSH hole・High・CVSS 8.1):musl libc+PAM不使用+パスワード認証の OpenSSH <10.6p2 で、256〜1024文字のパスワードが一部アカウントで通る。
  • ・対処:10.6p2/配布パッチへ更新(Alpine は apk upgrade openssh)。無理ならパスワード認証を無効化し鍵認証へ。
  • ・AWS/クラウド:主要AMIは glibc+PAM+鍵認証が既定で影響しにくい。Alpine/musl の自作イメージ・踏み台・CIランナーが要注意。
  • ・根因は「パスワードをハッシュと誤解釈」(GHSA 表現)。crypt の具体機序は断定しない。PoC は非掲載。

参照ソース