GitHubからのSSH脆弱性メールにどのように対応すればいいのか?

  • 2012/3/8 3:28に、GitHubから一通のメールが届いた。
  • タイトルは「Action Required - SSH Key Vulnerability
  • 自分なりに適当に訳すと「行動を求めます - SSHキーの脆弱性
  • 何だか結構重要なことが書いてあるようなことは分かる。
  • しかし、内容が全部英語なので、ネイティブジャパニーズな自分には正確に意味がとらえられず、不安が...。
A security vulnerability was recently discovered that made it possible for an attacker to add new SSH keys to arbitrary GitHub user accounts. 
最近、セキュリティ上の脆弱性が発見されました。それは、攻撃者が任意のGitHubユーザーアカウントに新規のSSHキーを追加可能というものです。

This would have provided an attacker with clone/pull access to repositories with read permissions, and clone/pull/push access to repositories with write permissions. 
この脆弱性は、読み取り可能な権限のリポジトリではclone/pullアクセスを、書き込み可能な権限のリポジトリではclone/pull/pushアクセスを、攻撃者に許してしまいます。

As of 5:53 PM UTC on Sunday, March 4th the vulnerability no longer exists.
3/4(日)午後5:53 UTC現在、もうこの脆弱性はなくなっています。

While no known malicious activity has been reported, we are taking additional precautions by forcing an audit of all existing SSH keys.
悪意のある行為は報告されていませんが、存在するすべてのSSHキーを検査してもらう、という特別な予防措置を講じています。

# Required Action
行動を求めます。

Since you have one or more SSH keys associated with your GitHub account you must visit https://github.com/settings/ssh/audit to approve each valid SSH key.
自分のGitHubアカウントに一つ以上のSSHキーを持っているなら、https://github.com/settings/ssh/audit を開いて、正当なSSHであるかを承認してください。

Until you have approved your SSH keys, you will be unable to clone/pull/push your repositories over SSH.
SSHキーを承認するまで、SSH経由でリポジトリへのclone/pull/pushができなくなります。

# Status
状況

We take security seriously and recognize this never should have happened.
GitHub Teamは、セキュリティーを真剣に考え、これは決して起きてはならないことだと思っています。

 In addition to a full code audit, we have taken the following measures to enhance the security of your account:
すべてのコードの精査に加え、セキュリティー向上のために次の対策をとりました。

 - We are forcing an audit of all existing SSH keys
存在するすべてのSSHキーを承認してもらいます。
 - Adding a new SSH key will now prompt for your password
現在は、新規のSSHキーを追加する時、パスワードの入力を促します。
 - We will now email you any time a new SSH key is added to your account
現在は、新規のSSHキーが追加されるといつでも、そのアカウント宛にメールを送信します。
 - You now have access to a log of account changes in your Account Settings page
現在は、アカウントの設定ページで、複数のアカウントの変更アカウントの変更履歴にアクセスできます。
Sincerely, The GitHub Team

やるべきこと

  • メール中のリンク https://github.com/settings/ssh/audit をクリックして、SSHキーの承認ページを開く。
  • 表示されたSSHキーに対して、
    • 正しいSSHキーなら緑色の[Approve]ボタンを押す。
    • 身に覚えのないSSHキーなら赤字の[Reject]ボタンを押す。

そのSSHキーが正しいかどうか?

  • そんなこと急に言われても、遥か昔に登録したSSHキーのことなんて、すっかり忘れてしまった...。
  • 正しいのか、不正なのか、どうやって見分けるのか?分からん!
  • とりあえず、~/.ssh に移動してlsしてみる。
$ ls
id_rsa       id_rsa.pub   known_hosts
  • その中身を見てみる。
$ cat id_rsa.pub
ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX== zari@zari-MacBook.local

$ cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,XXXXXXXXXXXXXXXX

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----
  • しかし、GitHubの確認ページに表示されるコロン区切りの文字列は、どこにも見当たらない...。

ダメだ、こりゃ...。

フィンガープリントだった

  • 表示されているのは、どうやらフィンガープリントらしい。
  • でも、フィンガープリントって、どうやってみるの?
$ ssh-keygen -l
Enter file in which the key is (/Users/zari/.ssh/id_rsa): #()内のパスでOKなので、何も入力せずreturnキーを押した
2048 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX /Users/zari/.ssh/id_rsa.pub (RSA)
  • あるいは...
$ ssh-add -l
2048 XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX /Users/zari/.ssh/id_rsa (RSA)

全桁を確認するのが面倒

  • 桁数が多いので、確認するのが結構たいへん...
  • XX:XX:...の部分をコピーして、SSHキーの承認ページで、Safariのページ内検索してみた。
  • 一致しているキーだったら、必ずヒットするはず!
  • ヒットしたので、気持ち良く緑色の[Approve]ボタンを押した。

これでSSHアクセスできるようになった!

参考ページ

素晴らしい情報に感謝です!

流石です!