security testing
Come testare la sicurezza delle applicazioni - Tecniche di test della sicurezza delle applicazioni Web e desktop
La necessità di test di sicurezza?
L'industria del software ha ottenuto un solido riconoscimento in questa epoca. Negli ultimi dieci anni, tuttavia, il mondo cibernetico sembra essere ancora più dominante e forza trainante che sta dando forma alle nuove forme di quasi tutte le attività. I sistemi ERP basati sul Web utilizzati oggi sono la migliore prova che l'IT ha rivoluzionato il nostro amato villaggio globale.
In questi giorni, i siti Web non sono pensati solo per la pubblicità o il marketing, ma questi sono stati evoluti in strumenti più forti per soddisfare le esigenze aziendali complete.
Sistemi di gestione stipendi basati sul web, centri commerciali, banche, applicazioni per il commercio di azioni non solo vengono utilizzati dalle organizzazioni, ma vengono anche venduti come prodotti oggi.
Ciò significa che le applicazioni online hanno guadagnato la fiducia di clienti e utenti per quanto riguarda la loro caratteristica fondamentale denominata SICUREZZA.
Senza dubbio, il fattore di sicurezza è di primaria importanza anche per le applicazioni desktop.
Tuttavia, quando si parla di web, l'importanza della sicurezza aumenta in modo esponenziale. Se un sistema online non è in grado di proteggere i dati della transazione, nessuno penserà mai di usarlo. La sicurezza non è ancora una parola alla ricerca della sua definizione, né è un concetto sottile. Tuttavia, vorrei elencare alcuni complimenti sulla sicurezza.
programmi che utilizzano c ++
Esempi di difetti di sicurezza in un'applicazione
- Un sistema di gestione degli studenti non è sicuro se il ramo 'Ammissione' può modificare i dati del ramo 'Esame'
- Un sistema ERP non è sicuro se DEO (operatore di immissione dati) può generare 'Report'
- Un centro commerciale online non è protetto se i dettagli della carta di credito del cliente non sono crittografati
- Un software personalizzato possiede una sicurezza inadeguata se una query SQL recupera le password effettive dei suoi utenti
Sicurezza
Ora, vi presento la definizione più semplice di sicurezza con parole mie.
'Sicurezza significa che l'accesso autorizzato è concesso ai dati protetti e l'accesso non autorizzato è limitato' .
Quindi, ha due aspetti principali; il primo è la protezione dei dati e il secondo è l'accesso a tali dati. Inoltre, sia che l'applicazione sia desktop o basata sul web, la sicurezza ruota attorno ai due aspetti sopra menzionati.
Vediamo una panoramica degli aspetti di sicurezza sia per le applicazioni software desktop che per quelle basate sul web.
Cosa imparerai:
- Test di sicurezza per desktop e web
- Elenco delle 8 principali tecniche di test di sicurezza
- # 1) Accesso all'applicazione
- # 2) Protezione dei dati
- # 3) Attacco a forza bruta
- # 4) SQL Injection e XSS (Cross-Site Scripting)
- # 5) Punti di accesso ai servizi (sigillati e aperti in modo sicuro)
- # 6) Gestione delle sessioni
- # 7) Gestione degli errori
- # 8) Funzionalità rischiose specifiche
- Lettura consigliata
Test di sicurezza per desktop e web
Un'applicazione desktop dovrebbe essere sicura non solo per quanto riguarda il suo accesso ma anche per quanto riguarda l'organizzazione e l'archiviazione dei suoi dati.
Allo stesso modo, l'applicazione web richiede, ancora di più, sicurezza per quanto riguarda il suo accesso, insieme alla protezione dei dati. Uno sviluppatore web dovrebbe rendere l'applicazione immune a SQL Injections, Brute Force Attacks e XSS (cross-site scripting). Allo stesso modo, se l'applicazione web facilita i punti di accesso remoti, anche questi devono essere protetti.
Inoltre, tieni presente che Brute Force Attack non è solo correlato alle applicazioni web, anche il software desktop è vulnerabile a questo.
Spero che questa prefazione sia sufficiente e ora vengo al dunque. Accetta gentilmente le mie scuse se finora hai pensato di leggere sull'argomento di questo articolo. Sebbene abbia spiegato brevemente la sicurezza del software e le sue principali preoccupazioni, il mio argomento è 'Test di sicurezza'.
Lettura consigliata => Test di sicurezza delle applicazioni web
Spiegherò ora come le funzionalità di sicurezza sono implementate nell'applicazione software e come dovrebbero essere testate. Il mio focus sarà su come e come fare i test di sicurezza, non sulla sicurezza.
Strumenti di test di sicurezza consigliati
# 1) Net parker
Netsparker è una soluzione di test della sicurezza delle applicazioni Web con funzionalità di scansione e scansione automatiche per tutti i tipi di applicazioni Web legacy e moderne come HTML5, Web 2.0 e applicazioni a pagina singola. Utilizza la tecnologia di scansione basata su prove e agenti di scansione scalabili.
Ti offre una visibilità completa anche se hai un gran numero di risorse da gestire. Ha molte più funzionalità come la gestione del team e la gestione delle vulnerabilità. Può essere integrato nelle piattaforme CI / CD come Jenkins, TeamCity o Bamboo.
=> Prova il miglior strumento di test di sicurezza Netsparker#Due) Kiuwan
Trova e correggi le vulnerabilità nel tuo codice in ogni fase dell'SDLC.
Kiuwan è conforme ai più severi standard di sicurezza tra cui OWASP, CWE, SANS 25, HIPPA e altri. Integra Kiuwan nel tuo IDE per un feedback immediato durante lo sviluppo. Kiuwan supporta tutti i principali linguaggi di programmazione e si integra con i principali strumenti DevOps.
=> Scansiona il tuo codice gratuitamente# 3) Indusface era un controllo malware gratuito del sito web
Indusface ERA fornisce sia test di penetrazione manuali in bundle con il proprio scanner di vulnerabilità delle applicazioni Web automatizzato che rileva e segnala le vulnerabilità in base alla top 10 di OWASP e include anche un controllo della reputazione del sito Web di collegamenti, malware e controlli di danneggiamento del sito Web in ogni scansione
=> Esegui una scansione rapida del sito web gratuitamente
=> Contattaci per suggerire un elenco qui.
Elenco delle 8 principali tecniche di test di sicurezza
# 1) Accesso all'applicazione
Che si tratti di un'applicazione desktop o di un sito Web, la sicurezza dell'accesso è implementata da 'Gestione dei ruoli e dei diritti'. Viene spesso fatto implicitamente mentre si copre la funzionalità,
Per esempio, in un sistema di gestione ospedaliera, un receptionist è meno preoccupato per i test di laboratorio poiché il suo compito è semplicemente registrare i pazienti e programmare i loro appuntamenti con i medici.
Pertanto, tutti i menu, i moduli e le schermate relativi ai test di laboratorio non saranno disponibili per il ruolo di 'Receptionist'. Pertanto, la corretta attuazione di ruoli e diritti garantirà la sicurezza dell'accesso.
Come testare: Per verificarlo, è necessario eseguire test approfonditi di tutti i ruoli e diritti.
Il tester dovrebbe creare diversi account utente con ruoli diversi e multipli. Quindi dovrebbe usare l'applicazione con l'aiuto di questi account e dovrebbe verificare che ogni ruolo abbia accesso solo ai propri moduli, schermate, moduli e menu. Se il tester rileva un conflitto, deve registrare un problema di sicurezza in totale sicurezza.
Questo può anche essere inteso come test di autenticazione e autorizzazione che è molto ben rappresentato nell'immagine sottostante:
miglior firewall gratuito per Windows 10
Quindi, fondamentalmente, devi testare 'chi sei' e 'cosa puoi fare' per utenti distinti.
Alcuni dei test di autenticazione includono un test per le regole di qualità della password, test per gli accessi predefiniti, test per il ripristino della password, test captcha, test per la funzionalità di logout, test per la modifica della password, test per la domanda / risposta di sicurezza, ecc.
Allo stesso modo, alcuni dei test di autorizzazione includono un test per attraversamento del percorso, test per mancata autorizzazione, test per problemi di controllo dell'accesso orizzontale, ecc.
# 2) Protezione dei dati
Ci sono tre aspetti della sicurezza dei dati. Il primo è quello un utente può visualizzare o utilizzare solo i dati che dovrebbe utilizzare . Ciò è garantito anche da ruoli e diritti
Per esempio, Il TSR (rappresentante delle televendite) di un'azienda può visualizzare i dati delle scorte disponibili, ma non può vedere la quantità di materia prima acquistata per la produzione.
Quindi, questo aspetto dei test di sicurezza è già stato spiegato sopra. Il secondo aspetto della protezione dei dati è correlato a come tali dati vengono memorizzati nel DB .
Ulteriore lettura = >> Che cos'è il test di sicurezza del database
Tutti i dati sensibili devono essere crittografati per renderli sicuri. La crittografia dovrebbe essere forte, soprattutto per i dati sensibili come password di account utente, numeri di carte di credito o altre informazioni fondamentali per l'azienda.
Il terzo e ultimo aspetto è un'estensione di questo secondo aspetto. Quando si verifica il flusso di dati sensibili o business-critical, è necessario adottare adeguate misure di sicurezza. Indipendentemente dal fatto che questi dati fluttuino tra diversi moduli della stessa applicazione o siano trasmessi ad applicazioni diverse, devono essere crittografati per mantenerli al sicuro.
Come testare la protezione dei dati: Il tester dovrebbe interrogare il database per le 'password' dell'account utente, le informazioni di fatturazione dei clienti, altri dati sensibili e critici per l'azienda e dovrebbe verificare che tutti questi dati siano salvati in forma crittografata nel DB.
Allo stesso modo, deve verificare che i dati vengano trasmessi tra diverse forme o schermate solo dopo la corretta crittografia. Inoltre, il tester dovrebbe assicurarsi che i dati crittografati siano correttamente decrittografati nella destinazione. Particolare attenzione dovrebbe essere prestata alle diverse azioni di 'invio'.
Il tester deve verificare che quando le informazioni vengono trasmesse tra il client e il server, non vengono visualizzate nella barra degli indirizzi di un browser web in un formato comprensibile. Se una di queste verifiche non riesce, l'applicazione presenta sicuramente un difetto di sicurezza.
Il tester dovrebbe anche verificare il corretto utilizzo del salting (aggiungendo un valore segreto extra all'input finale come la password e quindi rendendolo più forte e più difficile da decifrare).
Anche la casualità insicura dovrebbe essere testata in quanto è una sorta di vulnerabilità. Un altro modo per testare la protezione dei dati è controllare l'utilizzo debole dell'algoritmo.
Per esempio, poiché HTTP è un protocollo di testo in chiaro, se i dati sensibili come le credenziali dell'utente vengono trasmessi tramite HTTP, rappresenta una minaccia per la sicurezza dell'applicazione. Invece di HTTP, i dati sensibili dovrebbero essere trasferiti tramite HTTPS (protetti tramite SSL, tunnel TLS).
Tuttavia, HTTPS aumenta la superficie di attacco e quindi è necessario verificare che le configurazioni del server siano corrette e che sia garantita la validità del certificato.
# 3) Attacco a forza bruta
Brute Force Attack viene eseguito principalmente da alcuni strumenti software. Il concetto è che utilizzando un ID utente valido, s oftware tenta di indovinare la password associata provando ad accedere ancora e ancora.
Un semplice esempio di sicurezza contro un simile attacco è la sospensione dell'account per un breve periodo di tempo, come fanno tutte le applicazioni di posta come 'Yahoo', 'Gmail' e 'Hotmail'. Se un numero specifico di tentativi consecutivi (principalmente 3) non riesce ad accedere correttamente, l'account viene bloccato per un po 'di tempo (da 30 minuti a 24 ore).
Come testare Brute-Force Attack: Il tester deve verificare che un meccanismo di sospensione dell'account sia disponibile e funzioni correttamente. (S) In alternativa, deve tentare di accedere con ID utente e password non validi per assicurarsi che l'applicazione software blocchi gli account se vengono effettuati continui tentativi di accesso con credenziali non valide.
Se l'applicazione lo fa, è protetta contro gli attacchi di forza bruta. In caso contrario, questa vulnerabilità di sicurezza deve essere segnalata dal tester.
Il test per la forza bruta può anche essere diviso in due parti: test della scatola nera e test della scatola grigia.
In Black box testing, il metodo di autenticazione utilizzato dall'applicazione viene scoperto e testato. Inoltre, il test della scatola grigia si basa sulla conoscenza parziale di password e dettagli dell'account e sugli attacchi di compromesso della memoria.
Clic Qui per esplorare i test di forza bruta scatola nera e scatola grigia insieme ad esempi.
I tre aspetti di sicurezza di cui sopra dovrebbero essere presi in considerazione sia per le applicazioni web che per desktop, mentre i seguenti punti sono relativi solo alle applicazioni web.
# 4) SQL Injection e XSS (Cross-Site Scripting)
Concettualmente parlando, il tema di entrambi questi tentativi di hacking è simile, quindi vengono discussi insieme. In questo approccio, il script dannosi vengono utilizzati dagli hacker per manipolare un sito Web .
Esistono diversi modi per immunizzarsi da tali tentativi. Per tutti i campi di input del sito Web, le lunghezze dei campi devono essere definite sufficientemente piccole da limitare l'input di qualsiasi script
quello che vedi è quello che ottieni web builder
Per esempio, Il cognome dovrebbe avere una lunghezza di campo 30 anziché 255. Potrebbero esserci alcuni campi di input in cui è necessario un input di dati di grandi dimensioni, per tali campi deve essere eseguita una corretta convalida dell'input prima di salvare i dati nell'applicazione.
Inoltre, in tali campi, qualsiasi tag HTML o input di tag script deve essere vietato. Per provocare attacchi XSS, l'applicazione deve eliminare i reindirizzamenti di script da applicazioni sconosciute o non attendibili.
Come testare SQL Injection e XSS: Il tester deve garantire che le lunghezze massime di tutti i campi di input siano definite e implementate. (S) Dovrebbe anche assicurarsi che la lunghezza definita dei campi di input non possa contenere alcun input di script e input di tag. Entrambi possono essere facilmente testati
Per esempio, Se 20 è la lunghezza massima specificata per il campo 'Nome' e la stringa di input '
thequickbrownfoxjumpsoverthelazydog 'può verificare entrambi questi vincoli.
Dovrebbe inoltre essere verificato dal tester che l'applicazione non supporti metodi di accesso anonimo. Nel caso in cui esista una qualsiasi di queste vulnerabilità, l'applicazione è in pericolo.
Fondamentalmente, il test di SQL injection può essere eseguito nei seguenti cinque modi:
- Tecniche di rilevamento
- Tecniche standard di SQL injection
- Impronta digitale del database
- Sfruttamento tecnico
- Tecniche di invasione della firma SQL Injection
Clic Qui leggere in dettaglio i modi sopra descritti per testare SQL injection.
XSS è anche un tipo di iniezione che inietta script dannosi in un sito Web. Clic Qui per esplorare in profondità i test per XSS.
# 5) Punti di accesso ai servizi (sigillati e aperti in modo sicuro)
Oggi le aziende dipendono e collaborano tra loro, lo stesso vale per le applicazioni, in particolare i siti web. In tal caso, entrambi i collaboratori dovrebbero definire e pubblicare reciprocamente alcuni punti di accesso.
Finora lo scenario sembra abbastanza semplice e diretto ma, per alcuni prodotti basati sul web come la compravendita di azioni, le cose non sono così semplici e facili.
Quando il numero di destinatari è elevato, i punti di accesso dovrebbero essere abbastanza aperti da facilitare tutti gli utenti, sufficientemente accomodanti da soddisfare tutte le richieste degli utenti e sufficientemente sicuri da far fronte a qualsiasi prova di sicurezza.
Come testare i punti di accesso del servizio: Lasciatemi spiegare con il esempio dell'applicazione web per il trading di azioni; un investitore (che vuole acquistare le azioni) dovrebbe avere accesso ai dati attuali e storici sui prezzi delle azioni. L'utente dovrebbe avere la possibilità di scaricare questi dati storici. Ciò richiede che l'applicazione sia sufficientemente aperta.
Per accomodante e sicuro, intendo che l'applicazione dovrebbe facilitare gli investitori a fare trading liberamente (secondo le normative legislative). Possono acquistare o vendere 24 ore su 24, 7 giorni su 7 ei dati delle transazioni devono essere immuni a qualsiasi attacco di hacking.
Inoltre, un gran numero di utenti interagirà con l'applicazione contemporaneamente, quindi l'applicazione dovrebbe fornire punti di accesso sufficienti per intrattenere tutti gli utenti.
In alcuni casi, questi i punti di accesso possono essere sigillati per applicazioni o persone indesiderate . Dipende dal dominio aziendale dell'applicazione e dai suoi utenti,
Per esempio, Un Office Management System personalizzato basato sul Web può riconoscere i propri utenti sulla base degli indirizzi IP e negare di stabilire una connessione con tutti gli altri sistemi (applicazioni) che non rientrano nell'intervallo di IP validi per tale applicazione.
Il tester deve assicurarsi che tutti i file accesso tra reti e all'interno della rete all'applicazione proviene da applicazioni, macchine (IP) e utenti affidabili.
Per verificare che un punto di accesso aperto sia sufficientemente sicuro, il tester deve provare ad accedervi da macchine diverse con indirizzi IP affidabili e non affidabili. Diversi tipi di transazioni in tempo reale dovrebbero essere provati in blocco per avere una buona fiducia nelle prestazioni dell'applicazione. In questo modo, anche la capacità dei punti di accesso dell'applicazione sarà osservata chiaramente.
Il tester deve assicurarsi che l'applicazione gestisca tutte le richieste di comunicazione da IP e applicazioni affidabili solo mentre tutte le altre richieste vengono rifiutate.
Allo stesso modo, se l'applicazione dispone di un punto di accesso aperto, il tester dovrebbe assicurarsi che consenta (se necessario) il caricamento dei dati da parte degli utenti in modo sicuro. In questo modo sicuro, intendo il limite di dimensione del file, la restrizione del tipo di file e la scansione del file caricato alla ricerca di virus o altre minacce alla sicurezza.
Ecco come un tester può verificare la sicurezza di un'applicazione rispetto ai suoi punti di accesso.
# 6) Gestione delle sessioni
Una sessione Web è una sequenza di transazioni di richiesta e risposta HTTP collegate con lo stesso utente. I test di gestione delle sessioni verificano come viene gestita la gestione delle sessioni nell'app Web.
È possibile verificare la scadenza della sessione dopo un determinato periodo di inattività, la chiusura della sessione dopo la durata massima, la chiusura della sessione dopo la disconnessione, controllare l'ambito e la durata del cookie della sessione, verificare se un singolo utente può avere più sessioni simultanee, ecc.
# 7) Gestione degli errori
Il test per la gestione degli errori include:
Verificare la presenza di codici di errore : Per esempio, testare 408 richieste di timeout, 400 richieste errate, 404 non trovate, ecc. Per testarle, è necessario effettuare determinate richieste alla pagina in modo che vengano restituiti questi codici di errore.
I codici di errore vengono restituiti con un messaggio dettagliato. Questi messaggi non devono contenere informazioni critiche che possono essere utilizzate a scopo di hacking
Controlla le tracce dello stack : Fondamentalmente include fornire un input eccezionale all'applicazione in modo che il messaggio di errore restituito contenga tracce dello stack che contengono informazioni interessanti per gli hacker.
# 8) Funzionalità rischiose specifiche
Principalmente, le due funzionalità rischiose sono pagamenti e caricamenti di file . Queste funzionalità dovrebbero essere testate molto bene. Per i caricamenti di file, è necessario innanzitutto verificare che qualsiasi caricamento di file indesiderato o dannoso sia limitato.
Per i pagamenti, è necessario testare principalmente le vulnerabilità di injection, l'archiviazione crittografica non sicura, gli overflow del buffer, l'individuazione della password, ecc.
=> Contattaci per suggerire un elenco qui.Ulteriori letture:
- Test di sicurezza delle applicazioni Web
- Top 30 domande di colloquio sui test di sicurezza
- Differenza tra SAST / DAST / IAST / RASP
- Le 20 principali vulnerabilità di sicurezza di SANS
Lettura consigliata
- Guida al test di sicurezza delle applicazioni Web
- Alpha test e beta test (una guida completa)
- Esercitazione sul test del data warehouse di test ETL (una guida completa)
- Test di sicurezza di rete e migliori strumenti di sicurezza di rete
- Guida per principianti al penetration test di applicazioni Web
- Guida completa al test di verifica della costruzione (test BVT)
- Test funzionale vs test non funzionale
- Una guida completa ai test di penetrazione con casi di test di esempio