質問

私は投票アプリとフレームワークに取り組んでいる同僚とチャットをしていました。彼は技術的な質問をしていましたが、私は彼がこの問題に興味があり、それを重くすることをいとわない開発者からより質の高い意見を得るために申請をオープンソースに提案しました。

彼には別の視点がありますが、私はまだ有効だと思うので、ここで議論するためにこの質問を開きたいと思います。彼は、ポーリングの枠組みのようなものがすべきだと信じていると言います いいえ 人々が不正行為をすることができる抜け穴を明らかにするため、セキュリティと妥当性を減らすため、オープンになります。私が完全に同意しないと言うことはできません。私はそこにやや有効なポイントを見ていますが、私は常に、人々のグループによる解決策は、その人がどれほど賢くても、少数の同僚に尋ねる一人の人が考える解決策よりもほとんど常に優れていると信じていました。繰り返しますが、多分いくつかのタイプのアプリケーションが異なるかもしれないことを喜んで受け入れます。

誰かが彼の好意に議論を持っていますか?私は彼にあなたの応答を本当に提示したいです。

役に立ちましたか?

解決

あなたはウェブサイトでの世論調査について話しているのですか? 「あなたの好きな言語、C#、Java、またはCobolはどれですか?」タイプ投票?もしそうなら、それは興味深いものです。

通常、私はサイモンの答えに同意します。ソースを開くと抜け穴が明らかになった場合、そもそも安全ではなかったということです。

でも, 、この種のアプリのために..チャンスはいいえ、それは そうではありませんでした そもそも安全で、簡単に作ることはできません。問題は、人々がちょうどウェブサイトに来て投票に投票できるようにするためにあなたが要件を持っていることを賭けていることです。登録は必要ありません。あなたも また 人々が一度だけ投票できるという互換性のない要件を持っています。

あなたが何をするにしても..抜け穴があります。 IPアドレスを確認しますか?チートしたい訪問者は、プロキシを使用することを知っています。クッキー?チートしたい訪問者は、彼のクッキーをクリアすることを知っています。ソースを開くと、チートする方法を確認することが些細なことになります。

しかし、そうは言っても..とにかく些細なことです。代替案を試して、どちらが複数の投票を許可するかを確認するのにそれほど時間がかかりません。この種の匿名の世論調査を安全にすることは不可能であるため、オープンソースをオープンソースにして、少なくとも眼球がバグを見つけることができます!

他のヒント

実際には、 オープンソースであることは、より安全になるのに役立ちます.

私は個人的に、プログラムが閉じたソースとして始まり、最初にオープンソースになったとき、それは多くの場合、ユーザーにとって(脆弱性の露出を通じて)安全性が低下し、時間の経過とともに(たとえば)、それは非常に多くの可能性がある可能性があると信じています。クローズドプログラムよりも安全です。プログラムがオープンソースソフトウェアとして開始された場合、一般の精査は、かなりの数のユーザーが使用できるようになる前にセキュリティを改善する可能性が高くなりますが、このステートメントにはいくつかの注意事項があります(鉄で覆われたルールではありません)。プログラムをオープンソースに作成するだけで、プログラムが安全になることはありません。プログラムがオープンソースであるからといって、セキュリティを保証しません。

  • まず、人々は実際にコードを確認する必要があります。これは議論の重要なポイントの1つです - 人々は実際にオープンソースプロジェクトでコードをレビューしますか?あらゆる種類の要因がレビューの量を減らすことができます:ニッチまたはめったに使用されない製品(潜在的なレビュアーがほとんどいない場合)、開発者がほとんどいないこと、めったに使用されていないコンピューター言語の使用。明らかに、単一の開発者と他の貢献者がいないプログラムには、この種のレビューがありません。一方、プライマリ著者と時折コードを調べて貢献する他の多くの人々がいるプログラムは、コードをレビューする他の人がいることを示唆しています(少なくとも貢献を作成するため)。一般に、より多くのレビュアーがいる場合、一般に、誰かが欠陥を特定する可能性が高くなります。これは「多くの眼球」理論の基礎です。たとえば、OpenBSDプロジェクトは、セキュリティの欠陥についてプログラムを継続的に検討しているため、その最も内側の部分のコンポーネントは確かに長いレビューを受けていることに注意してください。 OSS/FSの議論はしばしば公開されているため、このレベルのレビューは、潜在的なユーザーが自分で判断できるものです。
     
    レビューの可能性を特に減らすことができる要因の1つは、実際にはオープンソースではないことです。一部のベンダーは、「開示されたソース」(「ソース利用可能」と呼ばれる)プログラムをオープンソースとして姿勢することを好みますが、プログラム所有者は広範な排他的権利を持っているため、所有者の「無料で」「無料で働く」インセンティブがはるかに少なくなります。コード。異常に非対称の権利(MPLなど)を持つオープンソースライセンスでさえ、この問題があります。結局のところ、他の誰かが彼らが持っていない結果に対して権利を持っている場合、人々は自発的に参加する可能性が低くなります(ブルース・ペレンスが「他の誰かの無給の従業員になりたいのは誰ですか?」)。特に、最もインセンティブを持つレビュアーは、プログラムを変更しようとする人々である傾向があるため、この参加を妨げるこの除去は「眼球」の数を減らします。エリアス・レヴィは、オープンソースのセキュリティに関する彼の記事でこの間違いを犯しました。彼のソフトウェアの例(例えば、Tisのガントレットなど)の例は、当時、オープンソースではありませんでした。

  • 第二に、少なくともコードを開発およびレビューする人の一部は、安全なプログラムを書く方法を知っている必要があります。うまくいけば、この本の存在が役立つでしょう。明らかに、眼球が何を探すべきかわからない場合、「多くの眼球」があるかどうかは関係ありません。コードの変更方法を知っている人がいる限り、誰もが安全なプログラムを書く方法を知る必要はないことに注意してください。

  • 第三に、これらの問題を迅速に修正する必要があり、その修正が分布する必要があります。オープンソースシステムは、問題を迅速に修正する傾向がありますが、分布は常にスムーズではありません。たとえば、OpenBSD開発者は、セキュリティの欠陥についてコードをレビューするという優れた仕事をしていますが、特定された問題を元の開発者に常に報告するわけではありません。したがって、あるシステムに固定バージョンがあることはかなり可能ですが、欠陥は別のシステムに留まることができます。この問題は時間の経過とともに減少していると思います。なぜなら、誰も同じ問題を繰り返し修正することを好む人はいないからです。もちろん、セキュリティパッチが実際にエンドユーザーシステムにインストールされていることを確認することは、オープンソースとクローズドソースソフトウェアの両方にとって問題です。

オープンソースのもう1つの利点は、問題を見つけた場合、すぐに修正できることです。これには、閉じたソースには実際にはありません。

要するに、オープンソースソフトウェアのセキュリティへの影響は、セキュリティコミュニティで依然として大きな議論ですが、多くの著名な専門家は、より安全になる可能性があると考えています。

Linuxを見てください...

オープンソースは「人々が抜け穴を明らかにするにつれて、そのセキュリティと妥当性を減らす」という議論は完全に無効です。安全な製品には抜け穴があるべきではないので、それがオープンソースになった場合、明らかにする抜け穴はないはずです。

セキュリティではないオープンソースにすることで明らかにされる抜け穴がある場合、それはコンパイラの背後にセキュリティの欠如を隠しているだけです。あなたはしばらくそれを逃れるかもしれませんが、最終的に誰かがあなたのコードをリバースエンジニアリングし、それらの抜け穴の1つを見つけようとします(あなたは知らないかもしれません)

私は、閉じたソースのものを信頼するよりもはるかに多くのオープンソースセキュリティ製品を信頼します。

セキュリティの専門家ブルース・シュナイヤーはそれをうまくまとめます:

私が手紙を撮った場合、それを安全にロックして、ニューヨークのどこかに安全を隠してから、手紙を読むように言ってください、それはセキュリティではありません。それはあいまいです。一方、私が手紙を受け取って安全にそれをロックしてから、あなたと世界最高のセーフクラッカーが研究できるように、安全で100の同一のセーフの設計仕様と100の同一の金庫を提供するとロックメカニズム - それでも安全を開いて手紙を読むことはできません - それはセキュリティです。

ブルース・シュナイヤー - 適用された暗号化

読み通してください オープンソーシングスタックオーバーフローは私たちのビジネスモデルを破壊しますか? - スタックオーバーフローは投票のフレームワークと同じではありませんが、他の多くの人々の見解についてより多くの洞察を与えるはずです。

私が自分自身への答えを知らないという私に起こったいくつかの考え...

  1. 誰かがプロジェクトにコードを提出したからといって、それは十分ではない/受け入れられた/使用されていないかもしれません。オープンソースは自動的にコードを改善しません。
  2. 同様に、コードを手伝っている開発者にとって平均的な取り組みが何であるかはわかりません。ソースに貢献している開発者の大群はいないかもしれませんか? (ただし、大きな違いを生むには1つまたは2しか必要ありませんが)。
  3. また、フレームワークのオープンソーシングを妨げるものは何もないと思いますが、他の機能/セキュリティが組み込まれているビジネス向けにカスタマイズされたバージョンを実行します。
  4. あなたのビジネスは匿名のままであり、フレームワークの背後にあることを宣伝しないことができますか?そして、フレームワークがインストール/ライブのどこにあるのか - それが特定のフレームワークであることを偽装しますか? (WordPressと、「WordPressバージョン2.3」と書かれたメタタグを非表示にすることであるWordPressを考慮してください)。
  5. また、雇用契約は、職場で作成したものの知的財産が雇用主が所有しているという効果に何かを言うかもしれないので、上司/法務部門に相談する必要があり、会社に起因するいくつかのコードをオープンソーシングすることができますお湯に着く。
ライセンス: CC-BY-SA帰属
所属していません softwareengineering.stackexchange
scroll top