2016年2月18日
Fastly は、トランスポートレイヤーセキュリティ (TLS) のデフォルト設定における、お客様のオリジンサーバーに接続する際に証明書が正しく検証されない問題を修正しました。2015年9月6日以降に作成されたサービスは影響を受けていません。このアドバイザリでは、この問題について説明し、リスクにさらされる可能性、弊社が実行した修正、および実行中のその他の改善策をお客様にお知らせします。
この脆弱性には、Fastly セキュリティの重大度「高」が割り当てられています。
Fastly カスタマーエンジニアリングから直接連絡を受けていない場合、アクションは必要なく、ご利用中のサービスは保護されています。
証明書を検証しない TLS 接続は、中間者 (MITM) 攻撃に対して脆弱です。この動作は、Fastly とお客様のオリジンサーバー間の HTTPS を介した接続に切り分けられました。
Fastly は、主要なインターネットピアリングサイトに配信拠点 (POP) を構築し、インターネットバックボーンに可能な限り近いプロバイダーネットワークを介してオリジンサーバーからコンテンツを取得します。これによって MITM 攻撃はより困難になりますが、不可能にはなりません。これらのネットワーク上で BGP ハイジャック、DNS キャッシュポイズニング、および悪意のあるトラフィックインジェクション攻撃が依然として発生する可能性があるため、証明書の認証が引き続き重要な防御技術となります。Fastly は、証明書の検証がサポートされている TLS オリジンサーバーをお持ちのすべてのお客様に対して、証明書の検証を有効にしています。誤設定が原因で検証がサポートされていないオリジンサーバーをお持ちのすべてのお客様には直接ご連絡し、弊社のエンジニアリングチームがサポートして誤設定を修正した後で、検証を有効にしました。
Fastly は、オリジンサーバーの TLS 設定にホスト名のアンマッチなどの誤りがあったお客様に積極的に働きかけました。現在ではそれらのお客様の大部分が脆弱な設定への対応を完了しているため、より幅広いセキュリティアドバイザリを公開します。
Fastly は、リバースキャッシングプロキシとして機能します。HTTPS 接続について議論する際には考慮すべき部分が2つあります。1つは、コンテンツをリクエストするための、クライアントブラウザから Fastly ネットワークへの (クライアントからエッジへの) 接続です。もう1つは、コンテンツがキャッシュされていない場合の、お客様のオリジンサーバーへの (エッジからオリジンへの) リクエストです。
Fastly はクライアントからエッジへの接続に対して TLS をサポートしており、ベストプラクティスに合わせ、また公表される 脆弱性よりも常に先行できるように、定期的に設定を調整しています。クライアントからエッジへの接続に加えて、Fastly はエッジからオリジンへの接続に対しても TLS をサポートしています。証明書が正しく検証されていなかったのは、このエッジからオリジンへの接続でした。
TLS は、機密性に加えて認証を提供します。TLS ハンドシェイクの一環として、リモ ートサーバーは公開鍵を ID (最も重要なのはドメイン名) と関連付ける X509 証明書を提供します。しかしこれだけでは、接続を認証するには十分ではありません。誰でも ID を偽装して、独自の公開鍵を提供することができるからです。証明書は、主張された ID が正当であることを検証する、信頼できる認証局 (CA) から発行されている必要があります。
Fastly がエッジからオリジンへの TLS の設定を見直したところ、TLS のサポートを Varnish に追加する際のミスにより、証明書の検証がデフォルトで有効になっていなかったことが判明しました。これは、証明書のホスト名を検証していなかった、または、証明書が信頼できる CA から発行されたことを確認していなかったことを意味します。証明書を検証しない TLS 接続は、中間者 (MITM) 攻撃に対して脆弱です。
問題の発見後、Fastly は直ちにトリアージと修正計画のプロセスを開始しました。残念なことに、この証明書検証により、誤ったオリジンサーバー設定が機能しているように見えていたことから、修正は複雑でした。これらのサービスに対して厳密な検証を有効にすると、停止が発生する可能性がありました。停止を回避しながら検証の動作を修正する必要に対処することは、非常に困難であることがわかりました。
問題を定量化するために、Fastly はすべてのオリジンサーバーに対して TLS 設定の包括的なスキャンを実行して、検証を有効にすると機能しなくなるサービスを検出しました。このスキャン結果を使用して、正しい設定のリストと誤った設定のリストを作成しました。すべての新しいサービスと、正しい設定のリストに含まれているサービスに関しては、現在デフォルトで TLS の検証が有効になっています。誤った設定のリストに含まれているサービスをご利用中のすべてのお客様には、カスタマーサポートチームからご連絡しました。これらのお客様が検証のサポートを受けるためには、オリジンの設定を変更する必要があります。お客様に必要な変更をスムーズに行っていただくために、TLS オリジンの一般的な問題とそのトラブルシューティング方法について詳しく説明したドキュメントを追加しました。Fastly は、証明書の検証に加えて、これを TLS のサポートをアップグレードする機会と捉えました。
Fastly は、この脆弱性の修正に加えて、RC4 暗号スイートを廃止し、エッジからオリジンへの TLS 接続に対する制御を強化しました。また、これ以上の問題をプロアクティブに防止するために、素晴らしい TLS-O-Matic プロジェクトによって提供されている TLS のコーナーケースを使用して TLS 設定の厳格なテストも実施しました。このようなテストスイートの必要性は、TLS の複雑さと、クライアントソフトウェアがプロトコルを安全に処理することの困難さを浮き彫りにしています。証明書の検証をデフォルトのオプションにして以来、Fastly の TLS スタックは関連するすべての TLS-O-Matic テストケースに合格するようになりました。
ご不明な点やご質問がある場合、またはご利用中のオリジンシステムが可能な限り安全に設定されていることを確認されたい場合は、support@fastly.com までお問い合わせください。脆弱性レポートとお客様以外からのお問い合わせについては、security@fastly.com までご連絡ください。