PuTTYの秘密鍵

ほぼこもセキュリティニュース By Terilogy Worx

PuTTYは人気のあるSSHプロトコルを利用可能なリモートサーバ接続用クライントソフトです。
Windows、macOS、UNIX、Androidなどの多くのOS環境で利用することができます。

SSHでリモートのシステムに接続する際には認証を行います。
パスワードを使った認証も利用可能ですが、通常は、より安全である公開鍵認証が使用されます。
SSHで公開鍵認証を実施する場合には、あらかじめ秘密鍵を生成します。
そして、その秘密鍵と対になる公開鍵を目的のリモートのシステムに送り込み設置します。
これを使って認証し、リモートのシステムに接続できるようになります。

秘密鍵の安全が保たれている限り、この認証方式は安全です。
ここを揺るがす脆弱性が確認されています。

  • CVE-2024-31497
    CVE-2024-31497は秘密鍵を復元できてしまうという脆弱性です。
    対象となるのはP-521のECDSAのみですので、Ed25519などの他の方式の鍵のみを利用している場合は対象外となります。

     

  • 約60個の署名
    秘密鍵を復元するには材料が必要です。
    復元したい秘密鍵によって署名された情報を集めて使用することで、復元が可能となってしまいます。

     

  • 署名の収集
    署名の収集の方法はいくつかあります。
    署名の保管されている機器にアクセスして収集することができるでしょう。
    必ずしも、それを実施する必要があるということではありません。
    たとえば、Gitでcommitする際には署名が使用されますので、単にGitでcommitしている情報を集めることでも、署名の収集ができてしまいます。
    署名の収集は難しくありません。

この脆弱性は公開された情報のみを使って、本来、秘密であるはずのものを生成できてしまうというものです。
生成できてしまった秘密鍵があれば、その秘密鍵に対応する公開鍵が仕掛けられたシステムに安全に接続できるようになります。
接続したら、あとは、本来の所有者が実施可能なすべての行為がそのリモートシステムで可能です。
Gitの認証で使用されている場合、そのリポジトリの内容を変更することができる、といった具合です。

この問題への対応の難しいところは、PuTTYを更新すればよいというわけではない点です。
生成済みの秘密鍵が問題となりますので、生成して利用中である秘密鍵をすべて置き換える必要があります。
さらに、PuTTYは直接利用されているケースだけでなく、他のソフトウェアに組み込まれて利用されているケースもあります。
FileZilla、WinSCP、TortoiseGit、TortoiseSVNなどが思いつきます。
これらに含まれるPuTTY部分が十分に新しいかどうか、そして、これらのソフトウェアで生成した秘密鍵も対応すべき対象となるということになります。

鍵の総入れ替え、大変なことです。

参考記事(外部リンク):PuTTY vulnerability vuln-p521-bias
www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/vuln-p521-bias.html