web-dev-qa-db-ja.com

.gitディレクトリをWebサーバーで読み取り可能のままにしましたが、どのようなリスクがありますか?

私のWebアプリケーションの1つで、過去数週間、誤って.gitディレクトリをWebサーバーで読み取り可能のままにしてしまいました。インデックスリストが無効になりました。 website.com/.git URLにアクセスすると、他の404エラーと区別できない404エラーが発生しますが、たとえば、website.com/.git/configにアクセスするとファイルがダウンロードされます。

私のアプリケーションにはどのようなリスクがありますか?誰かがアプリケーションのソースコード全体をダウンロードするのに十分な情報が公開されている可能性はありますか?

7
Thomas Hunter

はい、リポジトリのコンテンツ全体(履歴を含む)をダウンロードすることは可能です–単純なgit cloneでダウンロードできます。ただし、これは誰かがその.gitディレクトリの存在について知っているであることを前提としています...誰もそれに気づいていない可能性が高いです。 Webサーバーのログをいつでも確認できます。

4
user1686

ドキュメントルートの単純なgit cloneは完全に正確ではありません。サーバーでgit update-server-infoが実行されない限り、HTTPを介した.gitの偶発的な公開など、公開されたGITリポジトリのクローンを作成することは " dumb "サーバーでは不可能です。一部のメタデータは利用可能ですが、.git/objectsディレクトリのコンテンツ(別名、ジューシーなもの)を取得できるとは限りません。 packed ではない objects を回復することは可能です。本番サーバー上の作業コピー/リポジトリには当てはまらないはずです。

これは、リモートにプッシュされないコミットされた変更を伴う開発マシンにとっては別の話です。この場合、git gcを呼び出さない限り、ガベージコレクターは通常呼び出されません。したがって、ファイルはまだpackfilesの一部ではありません。最後のプッシュ以降にコミットされたファイルをHTTP経由で回復できます。

pdate-server-info 基本的に、参照(.git/info/refs)とパックファイル(.git/objects/info/packs)のマップを作成します。 .git/ packed-refs を使用して最初の置換を行うことができますが、ディレクトリインデックスを有効にするか、実際にブルートフォースSHA-1を使用しないと、パックファイルを取得できません(これは悪い考えです。開始)。

2
SaltwaterC