OpenSSH 10.4 の新機能とセキュリティ修正 - sftp/scp の脆弱性対応と量子耐性への流れ

OpenSSH 10.4 の新機能とセキュリティ修正 - sftp/scp の脆弱性対応と量子耐性への流れ

作成日:
読了:約13分
更新日:

当サイトは Amazon.co.jp を宣伝しリンクすることで紹介料を得る手段を提供する、Amazonアソシエイト・プログラムの参加者です。価格・在庫はリンク先の最新情報をご確認ください。

サーバへのリモートログインや Git 操作、ファイル転送を支える SSH の実装として、事実上の標準になっているのが OpenSSH です。その OpenSSH が2026年7月6日にバージョン 10.4をリリースしました。今回は複数のセキュリティ修正に加えて、ポスト量子時代を見据えた新しい署名方式が実験的に追加されています。

本記事では、OpenSSH 10.4 で何が修正され何が変わったのかを一次情報で整理し、サーバを運用しているエンジニアが今すぐ確認すべきポイントまでをまとめます。

NOTE

本記事のバージョン番号・リリース日・修正内容は、OpenSSH 公式のリリースノート(www.openssh.com/txt/release-10.4 および リリースノート一覧)で2026年7月時点に確認した内容です。10.4 のリリースノートには CVE 番号の記載はありませんでした。個別脆弱性の悪用条件の細部など一次ソースで確定できない箇所は「未確認」と明示しています。

概要(まず結論)

  • 何が: OpenBSD プロジェクトが開発する SSH 実装 OpenSSH の新バージョン。
  • バージョン: OpenSSH 10.4 / 10.4p1(ポータブル版)。
  • リリース日: 2026年7月6日。
  • 主なセキュリティ修正: 悪意あるサーバによる sftp のダウンロード先すり替え、scp のリモート間コピーでの親ディレクトリ書き込み、鍵再交換時のクライアント側 use-after-free、GSSAPI 有効時のプレ認証 DoS など。
  • 目玉の新機能: ML-DSA 44 と Ed25519 を組み合わせた実験的なポスト量子署名の追加。
  • 非互換な変更: Linux の seccomp サンドボックス失敗を致命的エラー化、設定ダンプ出力の大文字小文字変更、鍵再交換中の非 KEX メッセージの厳格化。

OpenSSH は SSH プロトコルの実装で、既定ではポート22番を使い、パスワードのほか公開鍵認証でユーザーを認証します。公開鍵認証の考え方については公開鍵暗号と電子署名の解説記事もあわせてご覧ください。

セキュリティ修正の詳細

10.4 では、主にクライアント側で悪意あるサーバに対する堅牢性を高める修正が入っています。SSH では「接続先サーバは信頼できる」と暗黙に考えがちですが、踏み台や中間のサーバが乗っ取られている状況を想定した防御が強化された形です。

sftp のダウンロード先すり替え

コマンドラインで sftp host:/path . のようにファイルをダウンロードするとき、悪意あるサーバがファイルを意図しない場所に書き込ませることができた問題が修正されました。ダウンロード先はローカル側が指定しているつもりでも、サーバから返る情報次第で別の場所に落ちてしまう、という挙動です。スクリプトで自動的に多数のファイルを取得している環境では影響が出やすいため、注意が必要です。

scp のリモート間コピーでの親ディレクトリ書き込み

2つのリモート間でファイルをコピーする(リモートからリモートへ転送する)際に、悪意あるサーバが意図した宛先ディレクトリの親ディレクトリにファイルを書き込むことを許してしまう問題が修正されました。宛先として指定したディレクトリの外側に書き込まれると、想定外の場所のファイルを上書きされる恐れがあります。scp は歴史的にサーバ側の応答を信頼しすぎる設計で、過去にも同種の問題が繰り返し修正されてきた経緯があります。

internal-sftp の引数の暗黙的な切り捨て

サーバ側の内蔵 SFTP サーバ(internal-sftp)で、長いコマンドラインが9番目の引数より後で黙って切り捨てられていた問題が修正されました。切り捨てられた引数の中にセキュリティ上重要なオプションが含まれていた場合、それが破棄されてしまう可能性がありました。設定した制限が意図せず外れる、という点で見つけにくい問題です。

鍵再交換時のクライアント側 use-after-free

サーバが鍵再交換(key reexchange)の途中でホスト鍵を変更した場合に、クライアント側で use-after-free が起こり得る問題が修正されました。use-after-free は解放済みメモリを参照するメモリ安全性のバグで、条件次第でクラッシュや、より深刻な悪用につながる可能性があるクラスの不具合です。

GSSAPI 有効時のプレ認証 DoS

GSSAPIAuthentication が有効なときに、認証前のサービス拒否(DoS)につながり得る問題が回避されました。GSSAPI は Kerberos などと連携する認証方式で、有効にしている環境は限られますが、該当する場合は影響を受けます。

設定の一貫性に関する修正

このほか、DisableForwarding=yes が PermitTunnel=yes を上書きできていなかった問題や、最小認証遅延(minimum authentication delay)が一部のケースで適用されていなかった問題も修正されています。前者は転送をまとめて禁止したつもりでもトンネルが許可されたままになるという設定の抜けで、意図した防御が効いていない状態でした。

新機能・変更点

ML-DSA 44 と Ed25519 の複合ポスト量子署名(実験的)

10.4 の目玉は、ML-DSA 44 と Ed25519 を組み合わせた複合ポスト量子署名方式の実験的サポートです。次のように鍵を生成できます。

# ML-DSA 44 + Ed25519 の複合鍵を生成
ssh-keygen -t mldsa44-ed25519

ML-DSA は NIST が標準化したポスト量子の署名アルゴリズム(旧称 Dilithium )で、これを従来の Ed25519 と組み合わせることで、片方のアルゴリズムに問題が見つかっても、もう片方が守るという発想です。あくまで実験的サポートである点には注意してください。署名と公開鍵の関係については公開鍵暗号と電子署名の記事で基礎を押さえられます。

ワイルドカードマッチャの NFA 化

設定で使うワイルドカードのパターンマッチャが、NFA(非決定性有限オートマトン)ベースの実装に置き換えられました。これにより、特定のパターンで処理時間が指数的に膨れ上がる最悪ケースを避けられます。Host ブロックや Match などで複雑なパターンを多用している環境で効いてくる改善です。

非互換な変更

アップデート前に把握しておきたい非互換な変更もあります。

  • 設定ダンプモード(sshd -T など)の出力が、これまでの小文字からディレクティブ名を実際の大文字小文字を反映した表記に変わりました。出力をスクリプトでパースしている場合は影響します。
  • Linux のseccomp サンドボックスの失敗が、警告ログではなく致命的エラーとして扱われるようになりました。
  • トランスポート層の検証が厳格になり、鍵再交換中に非 KEX メッセージを送ってくるピアを切断するようになりました。

OpenSSH の量子耐性への流れ

今回のポスト量子署名の追加は、OpenSSH がここ数年進めてきた量子耐性への移行の一環です。将来、実用的な量子コンピュータが登場すると、いま広く使われている公開鍵暗号は破られる恐れがあります。特に「いま暗号化された通信を保存しておき、後で解読する」という攻撃(Harvest Now, Decrypt Later )に備えて、鍵交換の量子耐性化が先行して進められてきました。

その大きな節目が OpenSSH 10.0(2025年)で、ハイブリッドなポスト量子鍵共有アルゴリズム mlkem768x25519-sha256 が鍵合意の既定になりました。同じ 10.0 では、弱い署名アルゴリズムである DSA のサポートが削除されています。DSA は2015年に既定で無効化されて以降、段階的に廃止が進められてきたもので、10.0 でその廃止が完了しました。

こうした鍵交換の量子耐性化に続いて、10.4 で署名側にもポスト量子方式が実験的に入ってきた、という位置づけで捉えると流れが分かりやすいです。

実務で確認すべきこと

日常の運用者目線で、10.4 を受けて確認しておきたいことを整理します。

1. アップデートの適用。多くの Linux ディストリビューションでは、OpenSSH はパッケージマネージャ経由で配布されます。まずは配布元からの更新が来ているかを確認し、パッケージを更新します。ソースからビルドしている場合は、公式の配布物を確認してください。今回の修正はクライアント側のものが多いため、サーバだけでなく手元の ssh/scp/sftp クライアントの更新も忘れないようにします。

# 導入済みバージョンの確認
ssh -V

2. scp から sftp への移行を検討。scp は今回のようにサーバ応答を信頼する設計に起因する問題が繰り返し出ています。可能であれば、より堅牢な転送手段への移行を検討する価値があります。自動化スクリプトで転送している箇所は特に見直したいところです。シェルスクリプトの堅牢化についてはbash の set -euo pipefail の記事も参考になります。

3. 設定の再確認。DisableForwarding を使って転送を禁止しているつもりでも、これまでは PermitTunnel が残っていた可能性があります。転送・トンネルを禁止する意図がある環境では、更新後に設定が期待どおり効いているかを確認しましょう。

# sshd_config で転送とトンネルをまとめて禁止する例
DisableForwarding yes

4. 非互換な変更の影響確認。sshd -T の出力をパースする監視・構成管理の仕組みがある場合、出力の大文字小文字の変更に対応が必要です。また Git のリモートを SSH で運用しているなら、自前 Git サーバの比較記事のような環境でもクライアント・サーバ双方の更新を計画に入れておくとよいでしょう。

その後の動き(2026年10月時点)

10.4 の公開後も OpenSSH は短い間隔でリリースを重ねており、2026年10月7日時点の最新は OpenSSH 10.6(2026年10月6日リリース)です(リリースノート一覧)。10.6 のリリースノートでは、AI を使った脆弱性報告が増えていることを受けて、修正を次の定期リリースまで溜めずに、より頻繁にリリースしていく方針も示されています。

  • OpenSSH 10.5(2026年8月11日): ssh-agent のロックと session-bind@openssh.com 拡張の組み合わせで、ロック中のエージェントに対してローカル限定のはずの操作がリモートから行えた問題や、セッション多重化ソケット経由でリモート転送を追加した際のクライアント側 use-after-free、restrict キーワードがトンネル転送に効いていなかった問題などが修正されました(release-10.5)。
  • OpenSSH 10.6(2026年10月6日): sftp で、サーバが返すパスを使って再帰コピーの宛先ディレクトリの外へ書き込ませる余地が残っていたケースを、より厳格な検証で塞いでいます。ほかに、多重化したチャネル間で共有される圧縮辞書を悪用するサイドチャネル攻撃への対策として LZ77 辞書圧縮を無効化(Compression の効果は下がる)、コマンドラインで指定したユーザー名で $ と \ を拒否、GSSAPI 認証の資格情報の扱いの修正などが入りました(release-10.6)。
  • ML-DSA 44 + Ed25519 署名の正式化: 10.4 で実験的に入った複合署名は、10.6 で ssh-mldsa44-ed25519 として有効化されました。実験版で使っていた @openssh.com 付きの名前は使われなくなり、10.4 / 10.5 の実験的サポートで生成した鍵は再生成または削除が必要とされています。
  • scp の -R の非推奨化開始: 本記事で触れたリモート間コピーに関連して、10.6 から scp の -R(リモートホスト上で scp を実行してリモート間コピーする)オプションを使うと非推奨の警告が出るようになりました。将来のリリースではこのオプションは無視され、scp を実行しているホストを経由する既定のコピー方式になる予定です。

10.4 の修正を目的に更新を計画していた場合も、現時点では 10.6(またはディストリビューションが提供するバックポート済みのパッケージ)を対象にするのが妥当です。

まとめ

OpenSSH 10.4 は、悪意あるサーバに対するクライアント側の堅牢性を高める複数のセキュリティ修正と、ML-DSA 44 と Ed25519 を組み合わせた実験的なポスト量子署名の追加が柱です。

  • sftp のダウンロード先すり替え、scp の親ディレクトリ書き込み、鍵再交換時の use-after-free などが修正された。
  • クライアント側の修正が多いため、サーバだけでなく手元のクライアントも更新する。
  • 鍵交換の mlkem768x25519 既定化・DSA 削除に続き、署名の量子耐性化が実験的に始まった。

サーバを運用しているなら、まずは自環境の OpenSSH バージョンを確認し、更新計画に組み込むところから始めるのがよいでしょう。詳細は必ず公式のリリースノートでご確認ください。

SSH の仕組み - 鍵交換・ホスト鍵検証・公開鍵認証を一次ソースで理解する

SSH の仕組み - 鍵交換・ホスト鍵検証・公開鍵認証を一次ソースで理解する

約18分

リモートサーバー運用の土台である SSH プロトコルを、一次ソースの RFC 4251/4252/4253/4254(SSH-2 の Architecture / Authentication / Transport / Connection)を軸に整理します。TCP 接続からバージョン交換、KEXINIT による鍵交換と Diffie-Hellman、ホスト鍵の検証(known_hosts と TOFU の弱点)、公開鍵認証(authorized_keys と署名)、チャネルの多重化とポートフォワーディング(ssh -L / -R / -D)まで、その仕組みと OpenSSH での確認方法をインフラ担当者・開発者向けにまとめます。

BGP とインターネットのルーティング入門 - AS・経路選択から経路ハイジャックと RPKI まで

BGP とインターネットのルーティング入門 - AS・経路選択から経路ハイジャックと RPKI まで

約48分

ルーティングテーブルと最長一致、静的/動的ルーティング、IGP(OSPF など)と BGP の役割分担、AS と AS 番号(2バイト/4バイト、RFC 6793、プライベート AS 番号)、BGP-4(RFC 4271)の TCP 179 番セッション・4種類のメッセージ・eBGP/iBGP・パス属性とベストパス選択、トランジット/ピアリングと IX(JPIX)、2008年 YouTube ハイジャック・2017年の国内大規模障害・2019年 Verizon ルートリーク・2021年 Facebook 障害の実例、RPKI/ROV(RFC 6480・6811)と ASPA の標準化状況、traceroute・whois・RIPEstat での確認方法、AWS Direct Connect での BGP までを、一次ソースを軸に Web 開発者向けにまとめます。

DNS の仕組み入門 - 名前解決・レコード種別・TTL とキャッシュを理解する

DNS の仕組み入門 - 名前解決・レコード種別・TTL とキャッシュを理解する

約23分

DNS(ドメインネームシステム)の名前解決の仕組みを、一次ソースである RFC を軸に整理します。ルート・TLD・権威サーバーの階層、再帰リゾルバとスタブリゾルバ、A/AAAA/CNAME/MX/NS/SOA/TXT/CAA/SRV/PTR などのレコード種別、再帰と反復の解決の流れ、TTL とキャッシュ、ネガティブキャッシュ(RFC 2308)、ポート53と UDP/TCP・EDNS0(RFC 6891)、DNSSEC(RFC 4033)、DoH(RFC 8484)/DoT(RFC 7858)まで、Web 開発者・インフラ担当者向けにまとめます。

楽天市場のおすすめPR / 楽天アフィリエイト