Il commit cancellato è ancora visibile dall'interfaccia web di GitLab, esponendo dati sensibili [chiuso]

1

Alcune settimane fa ho inserito per sbaglio un file di configurazione contenente alcune password e l'ho inserito su un telecomando GitLab gestito dalla mia azienda.

Successivamente ho utilizzato BFG Repo-Cleaner per rimuovere le password dalla cronologia.

Dopo la pulizia ho eseguito:

git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push --force

Ho visto che gli hash del commit sono stati modificati e che i dati sensibili sono stati rimossi (posso vedere che entrambi utilizzano l'interfaccia web GitLab o esplorano un nuovo clone del repository).

Tuttavia, se accedo a una delle vecchie pagine chiamando direttamente l'URL ( https://<my-company>/gitlab/test-bfg/commit/<theoretically-unexisting-hash> ) posso vedere un gitdiff di un commit contenente le password! L'ho scoperto accidentalmente, navigando nella cronologia del browser.

Se provo a eseguire il checkout dello stesso hash sul repository appena clonato, ottengo questo messaggio:

fatal: reference is not a tree: d7fb999c...

Quindi, se una persona clona quel repository da GitLab I pensa non è in grado di visualizzare quel commit *, tuttavia è ancora visibile dall'interfaccia web, se si può indovinare un vecchio hash.
* In ogni caso, II mi sentirei più a mio agio leggendo did not match any file(s) known to git invece di reference is not a tree .

Non penso che questo sia un tipo di problema nella cache, perché l'ho provato di nuovo dopo alcune ore.

Quindi le domande sono:

  • Perché questo succede? Sto usando gli strumenti nel modo sbagliato?
  • Ci sono alcuni modi per vedere gli hash nascosti?
  • L'hai mai provato, magari utilizzando sistemi diversi (GitHub, BitBucket)?

Grazie mille.

    
posta xonya 08.09.2017 - 00:15
fonte

2 risposte

2

git gc influisce solo sulla tua copia locale e il seguente git push non propagherà alcuna istruzione per la garbage collection al sito remoto. Vedi anche Come posso attivare la garbage collection su un Git repository remoto? e Rimozione di dati sensibili da un repository (su github) . E mentre l'ultimo ti aiuta a rimuovere alcuni dati sensibili, contiene anche un chiaro avvertimento sui limiti di questo approccio:

Warning: Once you have pushed a commit to GitHub, you should consider any data it contains to be compromised.
... commits may still be accessible in any clones or forks of your repository, directly via their SHA-1 hashes in cached views on GitHub, and through any pull requests that reference them. You can't do anything about existing clones or forks of your repository, but you can permanently remove all of your repository's cached views and pull requests on GitHub by contacting GitHub Support.

E mentre questo è da Github è probabilmente simile su Gitlab.

    
risposta data 08.09.2017 - 07:23
fonte
2

Non ho molta familiarità con Gitlab o con quello che fa il depuratore BFG. Ma è sempre una buona idea ruotare le password quando sono state esposte in pubblico. Se si tratta di un repository pubblico, non c'è modo di sapere in modo affidabile se il vecchio git commit è stato controllato da qualcuno. Detto questo, inoltra una richiesta di supporto anche con GitLab, per ogni evenienza.

    
risposta data 08.09.2017 - 05:39
fonte

Leggi altre domande sui tag