web-dev-qa-db-ja.com

Stack Exchangeは、システムの構造をもっと曖昧にする必要がありますか?

Stack Exchangeは常にそのサーバーとシステムの詳細な構造を明らかにすることに気付きました( seetheseblogposts )。また、それらのテストの正確な結果と弱点( old および 最新のテスト結果 を参照)は、セキュリティに関するオープンソースソフトウェアの概念を知っています。どちらか一方の方が安全ですが、私は常にこれが一般的なものの場合であり、正確で詳細なシステムネットワークアーキテクチャを開示することではないと考えていました。

私はそれがとても有用で教育的であると認めます、そして私はそれを読んでそして勉強することのあらゆるビットを楽しんでいます、そしてそれは多くのことへの参照と考えられます、しかし私はその詳細の多くを開示することが攻撃者であり、明らかなセキュリティ違反ですか?

編集:Henning Klevjerが指摘したように、 データエクスプローラー は、内部データ構造とデータベースがどのように見えるかの良い情報源でもあり、特定のデータを簡単に変更または損傷するためのガイドとなる場合があります侵入が成功した場合。

それは素晴らしいことだと思います。他のサイトやシステムではもう少し開放性を奨励する必要がありますが、Stack Exchangeはそれで遠すぎませんか?誰でも、データセンターの場所、データセンターの数、使用されているサーバーのハードウェア、フルスタックスキーマ、使用されているオペレーティングシステム、ネットワークのトポロジ、正確なソフトウェアバージョン(多くの場合)を知ることができます。定期メンテナンスを知ることができます。正確に何が起こったのか、何が正しく起こったのか、何が間違って起こったのか、そしてなぜ、そして彼らがそれを正しくするために何をしているのか。すばらしいと思いますが、安全ですか?

20
amyassin

いいえ。攻撃者はすべてを知っていると常に想定する必要があります。あいまいさによるセキュリティは、ほとんどの政府以外の開発者や建築家によって悪い習慣と見なされています。それが提供する障害は最小限であり、何かが秘密にされている場合、それは欠陥を隠すためにそうかもしれません。 Kerckhoffsの原則 は重要です。

Edit:この回答では、一般的にあいまいさによるセキュリティについて説明しています。特にStackExchange用ではありません。

30
Henning Klevjer

開示には2つの側面があります。

  • おそらく、完全な開示により、善意のある個人がバグを見つけて報告する可能性が高まるため、迅速に修正できます。これが Eric S. Raymondが "Linusの法則"と呼ぶ (-"十分な眼球を与えると、すべてのバグは浅い。"と表現されます)。 ESRとLinus Torvaldsはそれを信じていますが、そこには 他の意見 があります。マイクロソフトが後援するブログが有名なLinux擁護者と矛盾しようとするのは驚くべきことではありません。ただし、どちらの記事も興味深い読み物です(読んだ内容を信じてはいけませんが、それについてはthinkです)。

  • おそらく、あいまいなため、攻撃者はバグを見つけることができません。または、少なくとも、それは彼らを遅くします。セキュリティシステムが覆い隠されていても壊れているという歴史的な例は数多くあります。コンピュータの分野では、クローズドソースソフトウェアに対する ゼロデイエクスプロイト は十分な証拠です。コンパイルされたコードをリバースエンジニアリングすることはそれほど難しくありません(プログラマーとして、ソースコードがだらしなく書かれている場合、ソースコードを検査するよりも逆アセンブルされたバイナリーで作業する方が簡単な場合があります)。さらに、システムアーキテクチャはおそらくどこかに文書化されていると考えられます。通常は、匿名の棚に紙を積み上げたり、(頻繁に)ゴミ箱に捨てたりします。このようなことは、長い間秘密にされていることはめったにありません。これは次のように要約できます。不明瞭は包括的ではなく、維持するのは困難です

実際には、避けるべき間違いは信じる完全な開示または不明瞭さのいずれかの効率にあります。完全な開示は、セキュリティの問題を検出する方法として信頼できません(すべてではなく一部を検出します)。あいまいさはセキュリティ問題を隠すのに信頼できません(すべてではなく一部の攻撃者を遅くします)。 理想的に、開示は重要ではありません(ただし、「理想的には、ソフトウェアにはバグがない」と同じです)。 実際には、すべてのシナリオで最悪の場合を想定します。すべての潜在的な攻撃者、およびそれらのみを考慮し、システムを検査し、それらについてすべて知ってください。

10
Thomas Pornin

私はたぶん応答文字列から正確なバージョン番号を隠すと言いますが、:

  1. プロトコルの実装が安定していて正しいと確信している場合にのみ(バージョンを使用している一部のソフトウェアに、不適切なプロトコルの実装の回避策を採用することを知られたくない)。
  2. これは、ぶら下がっている果物であり、侵害されたバージョンであることがわかっているサーバーを見つけようとするスクリプトキディを止めるのに十分です。とにかく自分のエクスプロイトのリストを試すスクリプトキディでさえ、止められることはありません。

最終的に、実際の攻撃者は、そのような情報を取得する方法を無数に持っています。それはソフトウェアxバージョンy、詳細を中継できる内部の誰かに特定の方法で動作します。

3
ewanm89