Deixei meu diretório .git legível pelo servidor web, que riscos eu tenho?

7

Em um de meus aplicativos da web, deixei acidentalmente o diretório .git legível pelo servidor da web nas últimas semanas. A listagem do índice foi desativada. Visitar o URL website.com/.git resultaria em um erro 404 que era indistinguível de qualquer outro erro 404, mas a navegação para website.com/.git/config, por exemplo, faria o download do arquivo.

Que tipo de riscos existem com meus aplicativos? É possível que informações suficientes sejam expostas a alguém que poderia ter baixado o código-fonte do aplicativo inteiro?

    
por Thomas Hunter 24.08.2011 / 16:17

2 respostas

4

Sim, é possível fazer o download de todo o conteúdo do repositório (incluindo o histórico) - um simples git clone faria isso. No entanto, isso pressupõe que alguém sabia sobre a existência desse diretório .git ... é mais provável que ninguém tenha percebido isso. Você sempre pode verificar os registros do seu servidor da web para ter certeza.

    
por 24.08.2011 / 16:27
2

Um git clone simples na raiz do documento não é totalmente preciso. Clonar um repositório GIT exposto não é possível com " mudo " servidores, como uma exposição acidental de .git via HTTP, a menos que git update-server-info seja executado no servidor. Enquanto alguns dos metadados estão disponíveis, obter o conteúdo do diretório .git/objects (também conhecido como o material suculento) nem sempre é possível. É possível recuperar objetos que não são packed . Não deve ser o caso com uma cópia / repositório de trabalho em um servidor de produção.

É uma história diferente para uma máquina de desenvolvimento com alterações confirmadas que não são enviadas para um controle remoto. Nesse caso, o coletor de lixo geralmente não é chamado, a menos que você invoque git gc , portanto, os arquivos ainda não fazem parte dos arquivos de pacote. Você pode recuperar via HTTP os arquivos que estão comprometidos desde o último envio.

update-server-info basicamente cria um mapa dos refs (.git / info / refs) e dos arquivos de pacotes (.git / objects / info / packs). Enquanto .git / refs-embalados pode ser usado para substituir o primeiro, obter os arquivos de pacotes não é possível sem ter o índice do diretório ativado ou realmente forçando o SHA-1 (o que é uma má idéia desde o início).

    
por 26.03.2014 / 11:28