重複生成されるSSH Key Pair

SSHを使われている方は多いと思います。
昔はSSH利用時にパスワード認証するケースもあったことと思いますが、いまは公開鍵認証を利用することのほうが多いかもしれません。
SSHの公開鍵認証に使われる鍵は、基本的にクライアント側で生成し、その公開キー部分を接続したいサーバに設定して接続できるようにします。

利用の手順はこんな感じです。

  • SSHクライアントを用意する
  • SSHクライアントで秘密鍵を生成する
  • SSHクライアントで公開鍵を生成する(秘密鍵の生成と同時に実施されることが多いと思います。)
  • SSHサーバになんらかの手段で接続する
  • SSHサーバに新しく生成した公開鍵を追加利用できるように設定する

この手順で、SSHクライアントから秘密鍵を使ってSSHサーバに接続できるようになります。
鍵の生成時に鍵の利用時にパスフレーズが必要な状態で生成することで、鍵自体を暗号化できるので、通常これを利用します。

この仕組み、仕組みとして安全性が高い仕上がりになっていると思います。
その関係で、多くの人が上記の手順で使っているのではないでしょうか。

今回確認されているのは、SSHクライアントで使用される鍵生成機構のライブラリの問題です。
なんと、特定のライブラリのあるバージョンを使う場合、同じ鍵のペアが生成されてしまうのです。

自分が複数生成して同じものが出来上がるだけならまだしも(それも問題ですが)、同じライブラリを使って生成する他の人の環境でも同じ鍵のペアが生成されてしまうというのです。
つまり条件が重なった場合、自分の生成した鍵で、まったく別の人が設定したSSHサーバに接続できてしまうのです。
自分が他の人のサーバに接続できるのはよいとして(よくないのですが)、他の人が自分のサーバに意図せず接続できてしまうのはどうでしょうか。

SSHの公開鍵認証の設定の場面で、生成された鍵の文字列が、妥当かどうか確認する、ということはできそうにありません。
仮に取り組んだとしても、自分が生成する複数の鍵に同じものがあるのかは確認できますが、他の人が生成したものと同じになっていないかを確認することはできるはずがないからです。

ソフトウェアは非常に便利です。
これまでできなかった機能を容易に追加し、より便利に使うことができるようになります。
しかしその一方で、いつの間にか重大な問題を含む状態となってしまっている可能性もあります。
ソフトウェアの利用における更新の重要性を示す例の一つといえそうです。

参考記事(外部リンク):GitHub revokes duplicate SSH auth keys linked to library
bug

www.bleepingcomputer.com/news/security/github-revokes-duplicate-ssh-auth-keys-linked-to-library-bug/