Handing holding a key

PuTTY 0.68 から 0.80 に CVE-2024-31497 として追跡されている脆弱性があり、60 個の暗号署名にアクセスできる攻撃者が、その生成に使用された秘密鍵を復元できる可能性がある。

PuTTYは、SSH(Secure Shell)、Telnet、SCP(Secure Copy Protocol)、SFTP(SSH File Transfer Protocol)をサポートする、人気のあるオープンソースのターミナルエミュレータ、シリアルコンソール、ネットワークファイル転送アプリケーションです。

システム管理者や開発者は、主にこのソフトウェアを使用して、WindowsベースのクライアントからSSH経由でサーバーやその他のネットワークデバイスにリモートアクセスし、管理します。

CVE-2024-31497として追跡されている脆弱性は、ルール大学ボーフムのFabian Bäumer氏とMarcus Brinkmann氏によって発見されたもので、PuTTYがSSH認証に使用されるNIST P-521曲線用のECDSA nonces(一時的な一意の暗号番号)を生成する方法に起因している。

具体的には、PuTTYが特定のWindowsバージョンに強固な暗号乱数生成器がないことを補うために、これらの数字を生成する決定論的な方法を使用していることによる偏りがある。

“PuTTYのテクニックは、SHA-512ハッシュを作成し、それをmod q(qはDSAシステムで使用されるグループの次数)に縮小することで機能した。整数DSA(PuTTYの技法が最初に開発された)の場合、qは約160ビットで、楕円曲線DSA(後に登場)の場合、曲線モジュラスとほぼ同じビット数なので、NIST曲線では256、384、521ビットとなる。

“P521を除くすべてのケースでは、512ビットの数をmod qで減らすことによってもたらされるバイアスは無視できるものです。しかしP521の場合、qが521ビット(つまり512ビットより多い)であるため、512ビットの数値mod qを減らしても全く効果がありません。– PuTTYセキュリティ勧告

秘密鍵を回復することの主な反響は、SSH サーバーへの不正アクセスや開発者としてのコミットへの署名が可能になることであり、影響を受けるソフトウェア・プロジェクトに対するサプライ・チェーン攻撃を実現する可能性さえあります。

CVE-2024-31497の悪用

デジタル署名は、ユーザーの秘密鍵を使って作成され、サーバー上の対応する公開鍵によって検証される。

Brinkmann氏はXで、攻撃者はターゲットの秘密鍵を計算するために58の署名を必要とし、それは彼らがコントロールする、あるいは侵害されたSSHサーバーへのログインから集めるか、署名されたGitコミットから獲得することができると説明している。

Tweet

SSHサーバーからシグネチャを収集することは、サーバー自体がすでに侵害されていることを意味するため、それほど重要ではない。

しかしBäumer氏は、公開コミットから署名を採取する2番目の方法の方が、攻撃者にとってははるかに現実的だと語った。

事前にサーバーを危険にさらすことなく、この脆弱性を悪用できるケースがある。

そのひとつが、Gitコミットの署名にSSH鍵を使うケースだ。一般的な設定としては、PuTTYのsshエージェントであるPageantをローカルで使い、そのエージェントを開発用ホストに転送する。

ここで、Git が OpenSSH を使って Pageant が提供する SSH 鍵で Git コミットに署名するように設定します。署名はPageantによって生成されるので、秘密鍵のリカバリーの影響を受けやすくなります。

たとえばコミットが GitHub の公開リポジトリにプッシュされた場合などです。

❖ Fabian Bäumer

欠陥は修正されたが、他のソフトウェアに影響

開発者はPuTTYバージョン0.81でこの脆弱性を修正し、以前のk生成方法をやめ、すべてのDSAおよびECDSA鍵のRFC 6979技法に切り替えた。

しかし、脆弱なバージョンのツールを使って生成されたP521秘密鍵はすべて安全でないとみなし、新しい安全な鍵に置き換える必要がある。

脆弱性のある PuTTY を使用する以下のソフトウェアが影響を受けることが確認されている:

  • FileZilla 3.24.1 – 3.66.5 (3.67.0 で修正)
  • WinSCP 5.9.5 – 6.3.2 (6.3.3 で修正)
  • TortoiseGit 2.4.0.2 – 2.15.0 (2.15.0.1 で修正)
  • TortoiseSVN 1.10.0 – 1.14.6 (最新の PuTTY 0.81 リリースから Plink を使用するように TortoiseSVN を設定することで緩和できます)

CVE-2024-31497の影響を受けるソフトウェアツールは、組み込まれているPuTTYのバージョンによって、さらに多く存在する可能性があります。そのため、ユーザーは自分のツールを確認し、必要に応じて予防措置を講じることをお勧めします。