Scansiona il codice base per le password del nome utente

2

Quale sarebbe il modo migliore per eseguire la scansione di un codebase per garantire che non vi siano credenziali a livello di produzione incluse nella codebase? Abbiamo provato a fare scansioni statiche tramite alcuni strumenti importanti, ma vedo ancora alcune credenziali che sono ancora presenti e forse anche di più.

Quale sarebbe il modo migliore per farlo?

    
posta pal4life 15.10.2016 - 01:08
fonte

5 risposte

3

Sto andando fuori tangente qui e rispondi al vero problema piuttosto che al tuo soluzione presupposta .

Il modo per impedire che le credenziali di produzione vengano archiviate nell'archivio del codice è di non consentire agli sviluppatori di avere credenziali di produzione in primo luogo durante lo sviluppo. Hanno separato le credenziali di sviluppo e produzione e possibilmente un team separato di sviluppo e operazioni. Gli sviluppatori hanno la possibilità di controllare il codice ma non hanno accesso all'ambiente di produzione e non conoscono le credenziali di produzione; le operazioni hanno accesso all'ambiente di produzione e alle credenziali di produzione, ma solo l'accesso in lettura al repository del codice. Le poche persone che devono agire sia come sviluppatori che come operazioni devono essere adeguatamente addestrate per separare il ruolo di sviluppo e operazioni.

Per semplificare questa separazione, non dovresti mai controllare il file di configurazione nel repository del codice. Invece di un esempio di configurazione e quando si esegue la distribuzione in un nuovo ambiente, le operazioni dovrebbero copiare questo file e modificarlo. Gli sviluppatori devono essere addestrati per copiare le modifiche di configurazione (ad esempio nuove voci di configurazione) alla configurazione di esempio per fare un esempio nella configurazione di esempio.

    
risposta data 15.10.2016 - 05:27
fonte
2

Per essere onesti, se permetti agli sviluppatori di un progetto di dimensioni significative di accedere alle credenziali dell'hardcode e spingere quel codice in un repository di sviluppo, allora hai un serio problema di qualità del codice e probabilmente il tuo codice sarà bisogno di completare, manuale, revisione prima che possa andare in produzione.

In ogni caso, usa semplicemente tutte le credenziali potenziali e grep per loro. Trova il posto in cui vengono utilizzati. Avere un discorso severo con chiunque li abbia codificati in codice sorgente in primo luogo. Questo è davvero un tutorial per il primo giorno.

    
risposta data 15.10.2016 - 03:12
fonte
0

L'approccio più comune è fare in modo che il codice base cerchi quando vengono assegnati i segreti. Ad esempio, la regex seguente corrisponderà a una verità di codice che potrebbe contenere valori interessanti:

egrep "(secret|password|hmac|access.*key)\s*[:=>]" -iRn .

Quanto sopra grep troverà i comuni segreti hardcoded nei file di configurazione o altrove nel codice, ad esempio:

aws_secret_key = "..."

<mysqlPassword>...</mysqlPassword>

L'unico prodotto commerciale in grado di trovare segreti codificati è Checksmarx. Questo è uno strumento per l'analisi del codice sorgente con molte opzioni e tonnellate di regole personalizzate per abbinare il cattivo comportamento.

    
risposta data 15.10.2016 - 01:58
fonte
0

Dovresti considerare di controllare nel modo più difficile. Vai nel codice e grep per l'interfaccia utilizzata per inviare credenziali per l'autorizzazione. Esamina ogni istanza che trovi. Cammina indietro da ciascuno, cercando le variabili che contengono i parametri delle credenziali. Grep per ciascuno di questi nomi di variabili e ogni luogo a cui si accede.

Assicurati che non ci siano percorsi nascosti o nascosti, come buffer costruiti in modo strano che vengono inseriti nell'API. Assicurati che questo codice non stia usando globali o statici che potrebbero essere iniettati (o rimossi) da altre parti del programma.

Poiché si tratta di credenziali, il codice che le trasporta deve essere molto semplice in modo da poterlo rivedere facilmente. Qualsiasi codice complesso che li circonda dovrebbe essere refactored e semplificato finché non è trasparente e leggibile.

    
risposta data 15.10.2016 - 04:48
fonte
0

Poiché è possibile utilizzare una varietà di nomi di variabili per memorizzare il valore della chiave, diventa difficile verificare automaticamente le credenziali.

Una cosa che puoi provare è eseguire il comando linux stringhe per stampare tutte le stringhe memorizzate nei file . Quindi puoi verificare se qualcuna di queste sono le tue credenziali

    
risposta data 15.10.2016 - 06:02
fonte

Leggi altre domande sui tag