GitHubでコードを公開することに関するセキュリティの問題


8

大きなコミュニティ/フォーラムのWebサイトを開発しています。コードをGitHubにアップロードして、少なくとも何らかのバージョン管理を行いたいと思っています(バックアップとして.rarファイルしかなく、SVNもないためです) )、他の人がプロジェクトに貢献できるようにし、おそらく将来の雇用主に私のコードの一部をある種のカリキュラムと見なさせるためにそれを使用することもできます。

しかし、私が今疑問に思っているのは、私がこれまでに誰もそれについて言及しているのを見たことがないことに驚いていることです。セキュリティの側面です。ウェブサイトのコードを公開することは巨大なセキュリティホールではありませんか?重要なファイル(データベースのパスワード、認証スクリプトなど)がアップロードされていないことを考慮しても、潜在的なハッカーや潜在的なエクスプロイトを見つけたい人に与えるようなものです。

もちろん、GitHubには何百万ものプロジェクトがアップロードされており、「偶然」に誰も私のプロジェクトを見つけることはできません。しかし、彼らがそれを探すならば、それは確かにそこにあるでしょう。

結論:私の問題は著作権やライセンスに関するものではなく、私のWebサイトでエクスプロイトを見つける人たちです。

ここで何か不足していますか?


4
あいまいなセキュリティは、これまでのほとんどのソフトウェアではうまく機能していません。ソースコードはパズルのほんの一部です!
Martijn Pieters、2012年

2
代わりにBitBucketを使用してください。gitもサポートしています。
仕事

それで、人々が見つけられるようにあなたのウェブサイトに明らかなエクスプロイトを持ちませんか?たとえば、SQLインジェクションの脆弱性がどこにあるかを人々がソースコードから知ることができれば、そうすることができます。
user16764 2012年

@delnanが以下に指摘するように、GitHubを使用すると、価格でプライベートリポジトリをホストできます。実際に見ることができる数百万のパブリック(オープンソース)プロジェクトを除いて、GitHubにはプロジェクトの所有者/共同編集者以外の誰も見ることができない数百万のプライベートプロジェクトがあるでしょう。
スマン

1
他にローカルgitリポジトリを作成しない場合。そうすれば、ミスをしたときに少なくともロールバックできます。
Zachary K

回答:


24

ここで何か不足していますか?

はい。ソースコードを知らない人に依存して、その中のセキュリティエクスプロイトを見つけられないようにすることは、あいまいさによるセキュリティと呼ばれます。

問題:動作しません。熟練したハッカー、脆弱性を見つけて悪用するためにソースコードを必要とません。問題を引き起こす入力を見つけるためにファジングを行い、基礎となるOS /言語/フレームワークがどのように機能するかについての知識を利用して脆弱性を特定します。

ソースコードを公開すると、善意の人々が脆弱性を見つけて修正できるようになるか、少なくとも開発者に脆弱性を知らせることができるため、セキュリティが向上することは広く認められています。これが機能する理由は2つあります。

  • 一般的に悪意のある人よりも意味のある人がいます
  • 善意のある人物が見つけた脆弱性はすべての人に対して修正されます。ハッカーが協力する可能性ははるかに低い

もちろん、アクティブユーザーが少ないペットプロジェクトでは機能しませんが、ハッカーのターゲットになる可能性は非常に低いです。


1
私が賛成または反対するわけではありませんが、誰が「広く合意」しますか?これは実際に聞いた感情ではありません。
Steven Evers

迅速な対応をしてくれてありがとう!そして、私が考えると、それは理にかなっています。それは、熟練したハッカーがすでに見つけたはずの何かを共有することと、善意のプログラマーから適切な入力を取得することのトレードオフです。明らかに私はそれについてこのように考えていませんでした...もう一度ありがとう!
federico-t

@SnOrfus:Linusの法則とKerckhoffsの原理を参照してください。確かに、「広く合意されている」というのは少し大げさかもしれませんが、経験豊富なプログラマーの大多数が同意することを期待しています。
Michael Borgwardt

@MichaelBorgwardt、私は経験豊富なプログラマーの大多数が反対することに賭けます。いわゆる「眼球が多い=脆弱性少ない」は、実際の適切な調査に基づくものではありません。ハートブリードは最初ではなく、最後ではありません。また、blog.codinghorror.com / given
Pacerier

@Pacerier:私はいつでもその賭けにあなたを連れて行きます。声明は、オープンソースセキュリティを高めるということであり、完全なセキュリティをもたらすということではないことに注意してください。牛が家に帰るまでOSSのバグの例を引用できますが、それが何の反対にもなりません。実際適切な調査があります:archive.wired.com/software/coolapps/news/2004/12/66022はい、それは10年以上前のものですが、反対の結果を伴う具体的なものが見つかるまでは、それは事実です。
Michael Borgwardt 2015年

6

まず、リポジトリを公開しなくても(分散)バージョン管理を使用できます。ローカルコンピューターにリポジトリを作成し、他のコンピューターにプッシュしたり、他のコンピューターからプルしたりできます。公開することなく、リポジトリをアップロードすることもできます(バックアップを増やし、コラボレーションを容易にします)。GitHubはプライベートリポジトリを有料で提供します。Bitbucketも同じことを行い、小規模(5人程度)のプライベートリポジトリを無料にします。もちろん、あなたが言及した他の利点は得られません。

セキュリティの側面はかなり小さいです。(サーバー側の)ソースコードを調べなくても簡単にテストできる、価値のある攻撃ベクトルがたくさんあります(GETおよびPOSTパラメータに注意を払い、Cookieとセッション処理をチェックし、エスケープしてチェックする必要がある入力を追加するなど)。ある場合など)。それらのいずれかに対して脆弱である場合、断固とした攻撃者は、ソースコードを確認せずにそれらをかなり迅速に悪用する可能性があります。あいまいで悪用しにくいエラーは、(おそらく)ソースコード内で見つけるのが難しいので、多くを失うことはありません。

一方、それを公開して寄付を受け入れると、悪意のないエクスプロイトを見つけ、それについてあなたに伝える(または自分で修正する)ことができる人々を引き付ける可能性があります。これは、本当に人気があるが、セキュリティの専門家ではない場合は2倍になります(違反はありませんが、そのようには聞こえません。たとえば、あいまいさによってセキュリティについて言及しなかった場合や、懸念がそのケースに当てはまらない場合)。 。


私が@Michael Borgwardtに言ったように、これは完全に理にかなっています。より多くの人々がプロジェクトについて知っていて、エクスプロイトを修正するための貢献を提供するとき、コードを公開することの利点はさらに大きいと思います。そして、それが人気がなかった場合、潜在的なハッカーもそれについて十分に気にしないでしょう。答えてくれてありがとう!
federico-t

私の知る限り、githubは無料のプライベートリポジトリを提供していません(ちょっとした修正であり、nictickではありません)。
scrwtp

@scrwtp:「有料」は無料と同じではありません。
Martijn Pieters、2012年

ああ、本当です。
scrwtp 2012年

3

BitBucketには無料のプライベートリポジトリがあり、gitとmercurialの両方をサポートしています。


2

セキュリティの問題を別にして、コードを公開することでセキュリティが強化されるかどうかにかかわらず、自分でマシンにソース管理システムを設定できます。gitの場合は簡単です。ローカルリポジトリを初期化するだけで完了ですが、SVNの設定も困難な作業ではありません。SVNのセットアップ方法に関する予備知識がほとんどない場合は、チュートリアルに従って1〜2時間かかるかもしれません。

したがって、最終的にオンラインサービスを使用するかどうかに関係なく、ソース管理のメリットを享受できます。


0

ほとんどの悪意のあるハッキングは匿名で行われます。ホストをスキャンして開いているポートや何を持っているかをスキャンするスクリプトを実行しているロシアの人。ハッキングして危害を加える方法を見つけるためだけに、コードを明示的に注いだりする人はいません。あなたが本当に誰かを怒らせない限りは。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.