サーバーを遠隔で操作するためのソフト「OpenSSH」に、パスワードを知らなくてもログインできてしまう欠陥(CVE-2026-123158)が見つかった。開発元は11月5日に修正版の10.6p2を公開した。影響を受けるのは、標準Cライブラリに「musl libc」を使い、認証の仕組み「PAM」を無効にしたLinuxで、軽量なLinuxとして機器やクラウドで使われる「Alpine Linux」が代表例だ。米セキュリティ企業GreyNoiseは7日、この欠陥を使った侵入の成功を観測した。JPCERTコーディネーションセンター(JPCERT/CC)は9日、国内でAlpine Linuxを基にした商用製品が使われていることを確認しているとして、対策の適用と侵入の有無の調査を呼びかけた。

長いパスワードを送るとログインが通る

OpenSSHは、離れた場所にあるサーバーへ暗号化した通信で接続し、操作するためのソフトだ。Linuxなどのサーバーの管理で標準的に使われている。

Alpine Linuxの開発チームが5日に出した勧告によると、攻撃者はSSHの接続口に届きさえすれば、1回の接続で、やり直しなしにログインできる。条件は二つある。一つは、パスワードが設定されていない「*」のアカウントがあり、その名前を攻撃者が知っていること。鍵だけでログインさせる運用のアカウントは、通常この状態になっている。もう一つは、同じ機械に「$5$」か「$6$」の形式でパスワードを設定したアカウントが少なくとも1つあることだ。この状態で257〜1024バイトの長いパスワードを送ると、パスワードの無いアカウントにログインできる。

原因は、PAMを使わないときのパスワードの照合方法にある。勧告によると、この場合のsshdは、入力されたパスワードをC言語の関数crypt()で変換し、保存されている値と比べる。保存値が短すぎるアカウントでは、他のアカウントの値の一部を借りて変換する。ところがmusl libcのcrypt()は、256バイトを超える入力を受けると、失敗の印として「」という文字列を返す。パスワードの無いアカウントの保存値も「」なので、両者が一致し、ログインが成立する。

OpenSSHの開発チームはリリースノートで、根本の原因はsshdの外にあると考えているが、sshdを通じて悪用でき、sshdの側で防げるとして修正した。CVEの記録では、深刻度を示すCVSS 3.1の基本値は8.1で、評価は「High」となっている。

影響を受ける環境

JPCERT/CCは、OpenSSH 10.6p2より前の版で、次の条件をすべて満たす環境が影響を受ける可能性があるとしている。musl libcを使うLinuxであること、PAMによる認証が無効であること、OpenSSHのパスワード認証が有効であること、パスワード欄が「*」のアカウントなどがあること、別のアカウントに「$5$」か「$6$」形式のパスワードが設定されていること、の5つだ。

Alpine Linuxの勧告は、具体的な当てはまり方を挙げている。PAMを組み込まない標準のopenssh-serverパッケージを使う場合が該当し、PAM版でも「UsePAM no」の設定なら該当する。パスワード認証はOpenSSHの初期設定で有効になっている。管理者アカウントのrootは、Alpine 3.16前後から初期状態でパスワード欄が「*」になっている。OpenSSHの初期設定はrootへのパスワードでのログインを認めていないが、別のアカウントに入られ、そこから管理者権限を得られる構成なら防げないという。

公式のクラウド用イメージにも注意が要る。3.18.11から3.24.3までのイメージには、パスワード欄が「*」で、パスワード無しで管理者権限を得られる「alpine」というアカウントが入っている。起動した直後は安全だが、管理者がコンソール用のパスワードを設定するなどして「$6$」形式の値が1つでもできると、侵入できる状態になる。勧告が確認した範囲では、3.21〜3.24と開発版、定期の更新が終わった3.16〜3.20のすべてに欠陥があった。

一方、コンテナの中でsshdを動かしていない利用者、パスワード認証を無効にしている環境、「$」で始まる形式のパスワードが1つも無い環境は影響を受けない。cloud-initで設定したクラウドのイメージは、パスワード認証が無効になる。

修正版への更新と、すぐできる対策

OpenSSHは修正版の10.6p2を公開した。Alpine Linuxは、各リリース向けに修正済みのパッケージを出している。サポートが11月1日に終わった3.21を含め、3.16までさかのぼって用意した。

Alpineの版 修正済みのopensshパッケージ
開発版(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.20 9.7_p1-r6
3.19 9.6_p1-r3
3.18 9.3_p2-r4
3.17 9.1_p1-r7
3.16 9.0_p1-r6
Alpine Linuxの版ごとの修正済みパッケージ出典: Alpine Linux Development Team「Security advisory: openssh-server password authentication bypass」

勧告は、パッケージを更新しただけでは動いているsshdは入れ替わらないとして、更新後にsshdを再起動するよう求めている。すぐに更新できない場合は、設定で「PasswordAuthentication no」としてパスワード認証を無効にし、sshdを再起動する。どちらか一方で侵入の経路はふさがるという。作業の前に鍵でのログインができることを確かめ、新しいログインを試すまで今の接続を切らないよう注意も添えた。

JPCERT/CCは、Linuxの配布元によっては修正を旧版に移植して提供しているため、各製品の対策は開発元の情報を確かめるよう求めた。侵入の有無の調べ方としては、/var/log/messagesなどのSSHの認証記録に、パスワードでログインできないはずのアカウントへの「Accepted password for」の記録が無いか、管理者権限を得るdoasの使用履歴、不審なアカウントの追加やSSHの公開鍵の変更、不審なファイルや外部への通信が無いかを挙げた。Alpineの勧告は、ログインがなかったと言い切れなければ、その機械は侵入されたものとして扱うよう求めている。

公開から約40時間で侵入、米政府も悪用を認定

GreyNoiseは、インターネット上に置いた観測用の機器(同社は「グリッドポイント」と呼ぶ)で、この欠陥への攻撃を追っている。同社のまとめによると、修正版の公開は日本時間の5日午後6時1分で、約4時間15分後には攻撃用のコードがGitHubに公開された。CVEの番号が割り当てられる約2時間半前だった。

最初の侵入の成功を観測したのは日本時間の7日午前9時46分で、修正版の公開から約40時間後にあたる。同社は、観測用の機器に侵入した攻撃者が、遠隔操作用のプログラムを置いて外部の指令サーバーに登録しようとした例を公表している。14日時点の集計では、攻撃者のIPアドレス10件から、侵入後の操作を42件確認した。攻撃者のサーバーで見つかった痕跡から推定した侵入先には、日本の7件も含まれている。同社はこの推定の確度を「中」としている。

米サイバーセキュリティー・インフラセキュリティー庁(CISA)は9日、悪用が確認された脆弱性の一覧(KEV)にこの欠陥を加え、対応の期限を12日とした。JPCERT/CCは、悪用を試みる攻撃や侵入の成功が報告されている一方、現時点で組織の被害事例は確認できていないとしている。

KEVには今月、ほかにも悪用の確認された欠陥が加わっている。CISAは10日、マイクロソフトのOutlookの欠陥も一覧に加えた(Outlookの欠陥、すでに悪用 マイクロソフト11月更新 IPAが「緊急」で適用促す)。

AIによる発見と、修正版の出し方

OpenSSHの開発チームは10.6p2のリリースノートの冒頭で、最近、多数の脆弱性の報告を受けており、その多くがAIのモデルによる発見か、AIの助けを借りたものだと明らかにした。AIの道具が見つけた欠陥が、別の研究者によって独立に見つかる例を何度も見てきたとし、開発元に報告しない攻撃者も同じ欠陥を見つけられる可能性が高いと指摘した。このため当面は、修正を次の定期版までまとめて待たせず、より頻繁に版を出す方針だという。

今回の欠陥では、修正版の公開と同じ日に攻撃用のコードが出回り、2日たたないうちに侵入が観測された。CVEの番号が付く前に攻撃用のコードが出ていたため、番号で脆弱性を管理する仕組みだけでは、気づくのが遅れる。

利用者の側で確かめることは二つある。自分の機器がmusl libcとPAM無しのOpenSSHを使っているか、パスワード認証が有効になっていないかだ。JPCERT/CCが指摘するとおり、Alpine Linuxは国内の商用製品の中でも動いている。機器の開発元が修正版を出しているかどうかも、あわせて確かめる必要がある。