GitHubは先頃,漏えいした,あるいは安全でないと判断されたSSHキーの無効化を開始した。この問題を明らかにした調査を行ったのは,システムエンジニアのBen Cartwright-Cox氏である。InfoQは氏に話を聞いた。
Cartwright-Cox氏は,他ユーザのSSH公開鍵を見ることのできる,“あまり知られていないGitHubの機能”を活用した。これはSSH公開鍵を共有する上では優れた方法だが,Cartwright-Cox氏によると,すべての人の公開鍵を収集するようなことも簡単にできてしまう。実際にCartwright-Cox氏自身,2015年の初めにEvent APIを通じてGitHubをスキャンして1,376,262程の鍵を収集した上で,その有効性の分析を行っている。
解析を通じて氏が収集した重要な知見には,主に次のようなものがある。
- アカウントへのSSHキーの設定なしにリポジトリにコミットしているユーザは,全体の30%に過ぎない。
- 最も多く利用されているのはRSA鍵で,全体の97%である。その他のキーは大部分がDSAで,ECDSAキーを利用するユーザは少ない。
- 因数分解が可能であると以前から判明していた,256および512ビットのみを使用しているキーが9つあった。
- 多くのキーに2008年5月のOpenSSHバグによる脆弱性が認められた。これはシステムにおいて,生成されるキーの数がセットあたり32kに制限されるものであり,ランダム性を大きく損なうことが判明している。この最後のグループのキーとしてCartwright-Cox氏が見つけたのは,SpotifyとYandexの公開リポジトリ,Cryptoライブラリ,Django,Pythonのコア,Couchbaseなどだ。氏によると,これらすべてのアカウントには,その“障壁の低さ”故の漏えいの危険性が推測される。
Cartwright-Cox氏の公表からGitHubがアクションを実施するまで,数ヶ月後を要した。最終的には5月5日にDebianの鍵が,6月1日に脆弱で低品質の鍵が,いずれも無効にされた。
InfoQはこの話題をさらに詳しく知るべく,Ben Cartwright-Cox氏と話をした。
全体的な監査所見として,どの程度の問題があったのでしょう? 最終的には,アカウントにリスクがあると実際に認められたユーザの数は,非常に少なかったように思うのですが。
今回の調査の大きな発見は,多数の大規模プロジェクトが,検出が難しくて不明確な問題を抱えている,あるいはその可能性がある,ということです。影響を受けたアカウント数に比較して,影響を受けたユーザの数が非常に多いことが特徴です。
私の知る限り,私の記事の結論に関して調査を開始した企業が,少なくとも2社あります。彼らがそこで何を発見するかによっては,私たちよりも先に誰かがこの問題を見つけていたのか,その存在が分かるはずです。
今回の話題から学んだことのひとつは,セキュリティを保証することの難しさです。この事実によって,企業がユーザに対して何らかの保護を行うことの重要性は,あなたの言葉どおり,ますます重要性を帯びてきます。これについて,詳しく説明して頂けますか?
GitHubが脆弱で小さな鍵の削除に乗り出したのは,素晴らしいことだと思います。ほとんどの企業ならば,気にも留めないでしょう。今回の教訓は,コンピュータが暗号鍵を提供するという理由だけで,それがさまざまな攻撃から自身を守るものであるとは言えない,ということです。
最終的なGitHubの対応には納得していますか?企業やその他の組織に対しては,ユーザの支援や適切なセキュリティ獲得のために,どのような役割を積極的に負担してほしいと思いますか?
彼らはもっと早く行動できたはずですし,バグ報償金のページで,私の調査が“賞”(言及してくれれば結構です,お金が欲しいのではありません)に値するものだ,と認めることもできたと思います。それ以外の点においては,彼らの応答は素晴らしいものでした。
Cartwright-Cox氏はこの記事のフォローアップ記事を発表して,GitHubのSSH鍵の品質の更なるレビューを行っている。