注意:HSTS

HabréのHSTSについてはすでに書いています 、このメカニズムは、MozillaのWebサーバーの構成ジェネレーターに含まれています。 私はこの投稿を1日で書くことにしました。HSTSのために2つの大きなサイトに一度にアクセスできないことに直面しました。



TL; DR
HSTSを有効にする前にTLSのサイトを慎重に確認してください。特に、多数のサブドメインを持ち、さまざまな人によって管理されている大規模なポータルの場合はそうです。


HSTSとは何ですか?



HSTS(HTTP Strict Transport Security)は、TLSのダウングレード攻撃に対する保護メカニズムであり、関連するポリシーを持つサイトに対して常にTLSを使用するようにブラウザーに指示します。 標準はRFC6797で説明されており 、2種類のポリシーがあります。



ダイナミック



ポリシーは、最初にHTTPS経由でサイトにアクセスするときにStrict-Transport-Security HTTPヘッダーから適用され、有効期限とサブドメインへの適用可能性を示します。



Strict-Transport-Security: max-age=15768000; includeSubDomains;
      
      





静的



静的ポリシーはブラウザにハードコーディングされており、一部のサイトでは、証明書を発行した上位CA(例:google.com、paypal.com、torproject.org)へのバインドが含まれています。 さらに、TLS経由でサイトが開いている場合にのみ機能し、安全でない接続を許可しますが、証明書のなりすましでMitMをブロックします。



Chromium のリストは、すべての一般的なブラウザー(Firefox、Safari、およびIE 11 + Edge)で使用され、WebサーバーがStrict-Transport-Securityヘッダーを2年間の有効期間と最後にpreloadキーワードを付けて与えると、 誰でもサイト追加できます:



 Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
      
      





足で自分を撃つ方法は?



最近、同僚が1Cサイトの一部のセクション(dist.1c.ruおよびpartweb.1c.ru)にアクセスできないことについて不満を述べました。 サポートにより、すべてが機能し、問題が再現せず、同僚のサイトでさえ、メインのChromeを除くすべてのブラウザーから開かれていることが保証されました。 彼は20秒後にERR_CONNECTION_TIMED_OUTを発行し、何らかの理由で、アドレスが完全にHTTPで記述されていても、URLのHTTPSを永続的に置き換えました。



このソリューションは、HSTS 最近企業MitMのコンテキストで言及されたため、ほぼすぐに実現しました。 最初のリンクを持つキーワードのグーグル検索では、 chromeでポリシーキャッシュを表示できることが示唆されました:// net-internals /#hstsで、推測が確認されました:



dynamic_sts_domain:1c.ru
見つかった

static_sts_domain:

static_upgrade_mode:不明

static_sts_include_subdomains:

static_sts_observed:

static_pkp_domain:

static_pkp_include_subdomains:

static_pkp_ob​​served:

static_spki_hashes:

dynamic_sts_domain:1c.ru

dynamic_upgrade_mode:STRICT

dynamic_sts_include_subdomains:true

dynamic_sts_observed:1485244696.197302

dynamic_pkp_domain:

dynamic_pkp_include_subdomains:

dynamic_pkp_ob​​served:

dynamic_spki_hashes:



ポリシーにはすべてのサブドメインが含まれていましたが、それらの多くはTLSなしのポート80でのみ利用可能でした。

削除後、必要なセクションが開き始め、受け取った日付(Unix時間形式)までに、ブラウザーの履歴で誤った設定のページを見つけ、バグレポートを1Cに送信しました。



2番目のサイトはask.mcdonalds.ruでしたが、これは初めてオープンしましたが、Chromeはおなじみの4文字の略語で通常のProceed to(安全でない)ボタンなしで警告を表示し続けました。



ER_CERT_COMMON




このエラーは、証明書名の不一致、有効期限または失効を示し、サイトを開くボタンを表示することはRFCで明示的に禁止されています。 同時に、mcdonalds.ruのポリシーは静的であることが判明しました。これはChromeから削除できません:// net-internals /#hsts。



thisisunsafe (前の魔法の言葉はbadideaで危険になる前)と入力するか、キー--ignore-certificate-errorsを使用してブラウザーを起動することで、Chromeでこのスタブを回避できます



Firefoxで、履歴のサイトの前にある「このサイトについて偽造」をクリックし、about:configを開いて、「test.currentTimeOffsetSeconds」という名前と値11491200の新しい整数を作成し、新しいタブでサイトを開きます。



結論



潜在的に危険な機能を、それらがどのように機能するか理解せずに有効にしないでください。 テストでは、HSTSを使用しないSSL Labsから「A」 マークを取得します。TLSを使用してすべての機能を確認した後、有効にすることができます。 ブラウザで静的なシートを使用して元に戻すことはできないため、ワイルドカードを使用して証明書をすぐに購入することをお勧めします。



PS



ChromeおよびFirefoxは、追加の保護メカニズムをサポートしますHTTP Public Key Pinning(HPKP)これにより 、ブラウザーが異なるハッシュを持つドメインのパブリックCAからの証明書に遭遇した場合に、証明書ハッシュバインドし、所有者に通知を送信できます 。 彼は、パブリックCAでのいくつかのインシデントの解決を支援しましたが、エラーのコストが高いため、実際にはほとんど使用されません



PPS



Chromiumのハードコーディングされたポリシーの構成は興味深いものです。ファーストフードチェーン、いくつかのMail.ruおよびYandexドメインに加えて、ロシアの銀行のTOP-15の UniCreditのみがあります。 ファッショナブルなTKSはなく、QiwiもWebMoneyもありません。動的なポリシーは、QiwiおよびBinbank、ICD、Discovery、Raiffeisen、RSHBのインターネットバンキングアドレスのみに含まれていました。



テレグラムはまだありませんが、Whatsappがあり、変更ログには、誤って含まれているサイトを削除する要求があります。!しばらくの間、ヘッダーにプリロードがありました。



All Articles