web-dev-qa-db-ja.com

WordPressインストールで、インストール時にリモートで暗号シークレットを取得するのはなぜですか?

WordPress すべての暗号定数をリモートで取得 (HTTPS経由):

// setup-config.php
$secret_keys = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' );
  • ローカルでキーを生成する代わりに、これを行うことの利点はありますか?
  • これは完全に不要ですか? WordPress設定に別の攻撃ベクトルを提供するだけですか?
35
joar

同じ理由、特にクラウドまたは共有ホスティング環境で、独自のエントロピーを生成する 非常に難しい

本質的に、WordPressは、あなたよりもエントロピーが高いと言っています。おそらく正しいでしょう!それで、生成して返します。

攻撃の可能性があります。ただし、標的とされている場合、攻撃者はDNS呼び出しを適切なサーバーにリダイレクトするために、ネットワークを制御している必要があるため、その可能性は低いと思います。次に、SSL証明書を偽造する必要があります。すべてが語った、非常にありそうもない。

16
jrg

URLはhttps://api.wordpress.org/secret-key/1.1/salt/です。

したがって、SSLを使用します。攻撃者がDNSを破壊してその呼び出しをリダイレクトしたとしても、api.wordpress.orgの名前を含む有効なサーバー証明書を何らかの方法で所有する必要があります。そのため、攻撃者が偽のキー生成サーバーを実行することはおそらく困難です。

もちろん、WordPressサーバー自体は、サーバーが生成したすべてのキーを記録し、あなたを裏切ることができます。ただし、alreadyを挿入すると、彼らのソフトウェアのバックドア-あなたが使用します(彼らはバックドアを「脆弱性」と呼び、彼らが故意にそれをしなかったともっともらしいと主張するかもしれません。)その意味で、あなたはすでにWordPress人々;このサーバー側のキー生成のことで、あなたはそれらを信頼し続けます。個人的には、私はそれについてあまり心配しません(少なくとも、長い歴史のあるPHPベースのフレームワークを使用するという単なる事実よりも疑わしいセキュリティ)。

@jrgが指摘しているように、一部のクラウドベースの環境では、キーを安全に生成することが困難な場合があります。仮想マシンでは、測定する実際のハードウェアはありません。特に、一部のクラウドプロバイダーは、VMスナップショットを使用してマシンをインスタンス化します。したがって、共通のスナップショットから発行されるすべてのマシンは、特にランダムシードなど、同じ初期状態を共有します。サーバー側のキー生成を使用すると、この問題を回避できます。 。

13
Thomas Pornin