HTTPS証明書は、インターネットセキュリティを支える柱の1つです。しかし、完璧ではありません。Kaspersky Dailyでは以前、既存の証明書システムではWebサイトにアクセスした人のセキュリティを保証できない場合がある点を取り上げました。今回は、Webサイトの所有者に降りかかる可能性がある問題に着目します。
1つのドメインに2つの正当な証明書
ドメイン登録とHTTPS証明書が別々の組織によって管理されているのはよくあることで、ドメインと証明書の有効期間がいつも同じだとはかぎりません。このため、あるドメインに対する有効な証明書を、そのドメインの過去の所有者と現在の所有者が同時に保持している状況が生まれます。
この状況はどんな問題をはらんでいるのでしょう?また、この問題は実際にどのくらいの規模なのでしょうか?リサーチャーのイアン・フォスター(Ian Foster)氏とディラン・エリー(Dylan Ayrey)氏は、この問題に対する研究成果をDEF CON 26にて発表しました(英語記事)。それによると、問題は一見したところよりもかなり複雑で、驚くほど広範囲に影響しています。
まず思いつく問題は、中間者攻撃です。誰かがあなたのドメインの正規証明書を手に入れた場合、あなたのWebサイトを利用する人が中間者攻撃の標的になるかもしれません。
フォスター氏とエリー氏はCertificate Transparency(証明書の透明性)プロジェクトの証明書データベースを使用して、複数の組織/人が同一の証明書を所有するケースを150万件ほど特定しました(リンク先は英語)。これは、全インターネットサイトの約0.5%に相当します。このうち4分の1では古い証明書がまだ有効であり、375,000のドメインが中間者攻撃に対する脆弱性を抱えた状態となっています。
これにはまだ続きがあります。複数のドメインに対して同一の証明書が作成されることは珍しくなく、数十、数百のドメインが同じ証明書を持っている場合もあります。たとえば、フォスター氏とエリー氏は1つの証明書が同時に700ドメインに適用されている例を発見しました。その中には、非常に有名なドメインもいくつか含まれていたそうです。
この700ドメインの中には、当然ながら現在取得可能なドメインも含まれています。つまり、このうち1つのドメインを登録すればHTTPS証明書が手に入る状態なのです。さて、問題です。新たにドメインの所有者となった人には、自分のWebサイトを中間者攻撃から守るために古い証明書を失効させる権利があるでしょうか?
証明書を失効させられるか?
証明書を失効させることはできます。認証局の運用手順(英語資料)には、「証明書に不正確、または誤解を招く恐れのある情報が含まれている」場合に証明書を失効させることができるとしています。このような失効処理は、通知の受領後24時間以内に実施されなければなりません。
この手続きが現実にどう機能しているのかを確認したフォスター氏とエリー氏は、認証局によって手続きが大きく異なることに気づきました。たとえばLet’s Encrypt認証局の場合、迅速に(ほぼリアルタイムで)証明書を失効させる自動化ツールを採用しています。一方、人間と話をしなければならない認証局もあり、その場合は迅速な対応を期待できません。ときには忍耐と、規定の24時間をはるかに超える待ち時間が必要になることもありますし、最悪の場合、証明書を失効させられないこともあります。たとえば、両氏とComodo認証局とのやりとりは、「このSSLのことは忘れて新しいSSLを注文したらどうですか」という提案で終わりました。
とはいうものの、余分な証明書については、どちらかといえば失効処理をしてもらえる可能性が高そうです。これは良くもあり、悪くもあります。ドメインの新しい所有者は、余分な証明書の脆弱性を悪用した中間者攻撃から、ほとんどの場合で自分自身を守ることができるでしょう。その一方、「共有された」証明書を持つドメインのうち取得可能なドメインを誰かが購入し、証明書を失効させることで関連するWebサイトの使用に大きな問題が生じさせる可能性が否定できないということでもあります。
この問題の影響範囲はどれくらいでしょうか?実は、中間者攻撃の問題よりも広範囲にわたります。700万ものドメイン(インターネットの2%超)が、すでに登録期限の切れたドメインと証明書を共有しています。古い証明書の41%は、今でも有効です。したがって、数百万のドメインが、証明書失効による脆弱性を悪用したDoS攻撃の危機に晒されていることになります。
700ドメインが1つの証明書を共有している話に戻りましょう。問題がどのくらい差し迫っているかを立証するため、両氏はこの証明書が適用されているドメインの1つを購入しました。これで、理論上は、運用中の数百のWebサイトにDoS攻撃を仕掛けることが可能となったわけです。
保護を維持するには
余分な証明書の使用により、375,000のドメインが中間者攻撃の、さらに数百万以上のドメインがDoS攻撃の危機にさらされています。あなたのドメインもその1つかもしれません。世界最大のハッキング会議DEF CON 26で発表された今回の報告からすると、今、あなたがこの記事を読んでいるさなかにも、脆弱性のあるドメインを探し続けている人がいると考えてよさそうです。では、Webサイトを所有する人は、どうやって自分の身を守ればいいのでしょう?フォスター氏とエリー氏は以下を提案しています。
- Expect-CT HTTPヘッダーにenforceディレクティブをつけて使用する。所有するドメインは、Certificate Transparencyデータベースに載っている証明書だけを信頼するようになります。
- Certificate Transparencyデータベースを使用して、自分のドメインが以前の所有者宛てに発行された有効な証明書を持っていないかどうかを確認する。確認には、FacebookのCertificate Transparency Monitoringツールを使用できます。また、両氏は使いやすい独自設計のツール(英語サイト)を提供しています。このツールを使えば、ここまでに述べた脆弱性にさらされているドメインを誰でも検索できます。
さらに、私たちからも少々付け加えさせていただきましょう。
- あなたの会社のWebサイトをすべて調査して、ドメインに余分な証明書が残ってないかどうかを確認しましょう。1つでも見つけたら、認証局に連絡して証明書の失効処理を依頼しましょう。
- 1つの証明書を複数のドメインに適用しないようにしましょう。運用性を厳密に監視しないまま多数のWebサイトや関連ドメインを作成することが常態化している場合は、特に注意したいものです。「放棄された」ドメインの登録期限が切れ、誰かほかの人がそのドメインを引き継いだ場合、その証明書を失効させるだけであなたの会社のWebサイトがダウンしてしまいます。
- 証明書関連の問題が発覚した場合について、あらかじめ考えておきましょう。このような証明書は速やかに失効させる必要がありますが、上記の調査によると非常に対応の遅い認証局もあるそうですから、できるだけ対応の速い認証局と取引するといいでしょう。