Problemi di sicurezza con l'archiviazione della password in Scripting Languages (VBA)

2

Il team con cui lavoro gestisce una grande quantità di sondaggi tra i consumatori e i dati delle metriche interne dell'azienda. In primo luogo i dati sono memorizzati in un database e utilizziamo varie piattaforme e per lavorare con tali dati, incluso MS Excel.

Il mio peer ha sviluppato una suite di file Excel / VBA per prendere i dati grezzi che riceviamo e caricarli in un database. Sfortunatamente, dopo una revisione del codice, abbiamo identificato che la password del database era visualizzata nel codice VBA, in testo semplice, in diverse posizioni per file. Essendo in una grande organizzazione aziendale abbiamo avuto una serie di dubbi sul fatto che quei file siano disponibili a qualcosa di più del nostro team e che la password del database sia stata compromessa.

Il problema è che ritengo che la soluzione sia altrettanto grave, se non peggiore del problema originale. Le password in chiaro sono state rimosse dal codice di tutti i file VBA e è stato creato un file ausiliario di supporto che richiede all'utente di autenticarsi tramite il sistema LDAP delle organizzazioni prima di accedere alla password del database. Essendo un linguaggio di scripting (ed essendo Excel), ritengo che non ci siano in realtà precauzioni adeguate per proteggere la password degli utenti nel file helper. Sento che ora invece di compromettere l'accesso a un singolo database, stiamo potenzialmente compromettendo l'accesso agli accessi di chiunque usi questi file.

Per essere onesti, il mio peer ha implementato una serie di tecniche di sicurezza per la protezione dei dati nel file di supporto. Sento che ognuno può essere facilmente aggirato:

  • blocco del codice VBA [ ricerca google per il ripristino della password vba ]
  • utilizzando una casella di immissione della password "mascherata" personalizzata [la casella della password potrebbe essere mascherata, ma è ancora passata fuori dalla scatola in testo semplice]
  • in realtà non memorizza la password dell'utente nel file stesso (la trasmette direttamente alla chiamata LDAP) [un'istruzione break point o stop può rivelare facilmente il contenuto di ciò che è stato passato]
  • impostazione dei fogli su VeryHidden per impedire l'accesso diretto [aggiungi .zip al nome file e TUTTI i dati in TUTTI i fogli di lavoro sono accessibili]

Poiché non sono uno che si lamenta senza una soluzione in mente, la nostra organizzazione utilizza già Active Directory / LDAP per l'autenticazione nelle nostre singole macchine. Il mio pensiero è che controllare l'utente che ha effettuato l'accesso (non un utente completo / password, solo l'utente) contro una lista bianca di utenti sul database dovrebbe essere un'alternativa sufficiente per l'autenticazione.

Quindi la mia domanda ...
Sono troppo paranoico per questo? C'è un'altra soluzione più appropriata? Sto respingendo abbastanza duramente questa correzione e volevo solo un controllo di sanità mentale prima di iniziare a coinvolgere gli altri in un'altra soluzione.

    
posta Hari Seldon 04.05.2012 - 15:00
fonte

4 risposte

3

Sei un po 'paranoico, ogni soluzione per nascondere una password non funzionerà contro qualcuno che la vuole davvero, ma ci sono modi migliori per risolvere questo problema quindi è giustificato un po' di preoccupazione. La tua idea è molto peggiore della situazione attuale, con la tua idea che chiunque abbia accesso al database che può utilizzare gli script, ognuno di essi potrebbe facilmente fare cose cattive al tuo database, e nessuno deve passare attraverso il problema di capire il account utilizzato per accedere al database.

La soluzione migliore sarebbe quella di creare una piccola app desktop o un'app Web che possa essere utilizzata per caricare file Excel o comunque i dati, quindi crittografare la stringa di connessione.

    
risposta data 04.05.2012 - 15:26
fonte
1

Non puoi fermare ogni possibile tecnica di intercettazione della password. Quindi devi solo pensare a ciascuna tecnica che può essere utilizzata e a quanto è probabile che sia utilizzata. Se è facile, e molto probabilmente da usare, allora è qualcosa che probabilmente non dovresti usare. Se è difficile da fare, però, e improbabile che qualcuno lo faccia, allora potrebbe essere OK. Alcuni esperti di sicurezza probabilmente non sono d'accordo, ma la realtà è che non sempre puoi fortificare tutto, sempre.

Detto ciò, l'idea di caricare il file Excel in un'app Web o in un'app desktop che carica il database è buona. In questo modo memorizzi la password in un unico posto.

    
risposta data 04.05.2012 - 16:47
fonte
0

Non ti definirei paranoico. Sei consapevole della sicurezza che i passaggi intrapresi dal tuo pari aiutano un po 'ma sono lontani dall'essere sufficienti . Si può ancora fare un caso sulla quantità di sicurezza di cui hai bisogno.

C'è un detto in Sicurezza in IT. "Dato un tempo sufficiente per la caduta di un sistema". È solo una questione di equilibrio, quanto ti importa di quel database delle password e di quanto è sufficiente la sicurezza (che tende anche a diventare un peso per l'utente e lo sviluppatore).

Dirò che le tecniche che menzioni sono piuttosto deboli. Se riesci a vedere la password in testo semplice, probabilmente potrebbe essere annusato . Il codice di blocco sembra anche molto debole, difficile devo ammettere che ne so poco di questo.

Ancora una volta la sicurezza è una questione di equilibrio. Cosa potrebbe accadere se la password db fosse compromessa? Bilancia questo con il prezzo di un controllo di sicurezza per la tua soluzione o assumi uno sviluppatore attento alla sicurezza che abbia qualche esperienza in materia.

    
risposta data 06.08.2013 - 06:08
fonte
0

Una possibilità potrebbe essere quella di utilizzare INTEGRATED SECURITY=sspi nella stringa di connessione, in questo modo non è necessario specificare utente / password e l'accesso verrà gestito tramite le autorizzazioni di accesso e DB di Active Directory (sarà necessario impostare l'accesso DB per gli utenti autorizzati a farlo funzionare).

Ho trovato anche questo altro article on Stack Overflow dove spiegano come creare una DLL esterna che può essere utilizzata per recuperare l'oggetto di connessione che oscura tutti i dettagli in quella libreria compilata.

    
risposta data 23.07.2014 - 17:33
fonte

Leggi altre domande sui tag