white box penetration test

La moderna industria dei software utilizza metodi molto avanzati di produzione e sviluppo dei prodotti. Un iter che va man mano efficientando ogni aspetto, compresa la sicurezza.

A tale scopo, sono state implementate diverse tipologie di Penetration test atte a valutare la robustezza di un codice prima che questo venga rilasciato sul mercato.

Queste tecniche si differenziano essenzialmente in base  alla quantità di informazioni e ai privilegi resi disponibili ai penetration tester.

Il fine è sempre il medesimo: scovare potenziali vulnerabilità prima che lo facciano i cybercriminali.

Nello specifico, i Penetration test si possono distinguere in: Black Box, Grey Box, e White Box.

In questo articolo analizzeremo i test di tipo White Box, così chiamati perché gli addetti ai lavori

  • hanno una visione chiara del sistema in esame,
  • ne conoscono la struttura
  • e possiedono i privilegi più alti.

White Box test: una panoramica

I White Box test sono procedure di Quality Assurance (QA) condotte da personale specializzato atte a sollecitare un sistema per rintracciarne possibili anomalie.

Durante un test di questo tipo, gli hacker etici  – che in quest’ambito prendono il nome di penetration tester – vengono messi a conoscenza della struttura del sistema fin nei minimi dettagli.

Basti pensare che in inglese questa tecnica è anche nota come ‘clear box’ o  ‘crystal box’.

L’obiettivo è quello di evidenziare eventuali vulnerabilità o anche semplicemente inefficienze generalizzate dell’applicativo.

Date queste premesse, i test di tipo White Box non possono essere paragonate a una simulazione di attacco frontale – che risulterebbe falsata da un evidente bias – quanto piuttosto a un’analisi ragionata del comportamento del software.

In sostanza, si esamina l’output in relazione all’input fornito.

In sostanza, ci si aspetta che una sezione del codice, se sollecitata con un dato input, risponda con un preciso output. Se questo non dovesse avvenire, si può ragionevolmente pensare che vi sia un bug nella sezione di codice analizzata.

Differenza tra test White Box e Black Box

L’idea dietro questo tipo di test è di simulare il comportamento di un hacker qualora egli avesse la possibilità di conoscere gli ‘ingranaggi’ del software.

Tuttavia, notoriamente i cybercriminali attaccano un sistema dall’esterno, avendo solamente un’idea vaga di come sia implementata una determinata funzionalità.

Ed è proprio su questo punto che si annida la principale differenza tra il test White Box ed il test Black Box.

Se da un lato, infatti, il test White Box gode di informazioni e accessi privilegiati, dall’altro il Black Box è una tecnica che simula in modo più verosimile il comportamento di un attaccante outsider.

White Box e Black Box sono, in realtà, due facce della stessa medaglia. In quanto a strategicità, l’una non può prescindere dall’altra.

White box test: i vantaggi

Dopo aver fornito una descrizione introduttiva circa metodologie e obiettivi del White Box test, evidenziamo ora i principali vantaggi che può apportare alle infrastrutture IT in termini di sicurezza.

A tutto tondo

Il loro principio cardine è anche uno dei vantaggi più ovvi dei test White Box. La conoscenza approfondita del codice permette di scandagliare potenzialmente qualsiasi aspetto critico: dalle falle nel codice, fino a quelle di runtime.

Ciò consente di intercettare tutte quelle criticità difficilmente individuabili dall’esterno e, di conseguenza, anche dai test Black Box.

Questo approccio ‘olistico’ è fondamentale se si ha a che fare con sistemi complessi e sensibili che hanno bisogno di standard di sicurezza molto elevati.

Test continui

I test White Box sono applicabili durante tutta la fase di produzione del software e anche oltre, dopo il rilascio.

Conoscere la logica e l’implementazione pratica di un processo aiuta a costruire misure di analisi utili a prevenire errori tanto prima quanto successivamente al rilascio sul mercato.

Ciò avviene durante tutta il ciclo di vita dell’applicativo, aiutando talvolta a modificare il progetto verso modelli implementativi più sicuri ed efficienti.

Questo approccio proattivo dà quindi modo di rilevare e correggere in anticipo quelle vulnerabilità che potrebbero essere sfruttate dagli hacker e causare perdite spesso incalcolabili.

Possibilità di automatizzare

Il punto di vista interno tipico dei White Box offre la possibilità di automatizzare alcuni dei processi di immissione di input e analisi dell’output.

Questo avviene tramite tanti test ad hoc sulle singole funzionalità, che, messi insieme, formano una ‘prova del nove’ cumulativa su una vasta sezione del codice. Se anche un solo test non ottiene l’output atteso, tutta la prova segnalerà automaticamente errore.

I test White Box, data la loro mole, possono risultare onerosi in termini di tempo, risorse e denaro.

Tuttavia, la possibilità di automatizzare diversi processi offre un buon bilanciamento che lo percorribile economicamente, oltre che fondamentale per garantire la qualità del prodotto.

Le fasi del White Box testing

I White Box sono cuciti sulla logica del sistema e, trattandosi di processi alquanto estesi e laboriosi, necessitano di una progettazione razionale.

Vediamo di seguito come si può strutturare un generico White Box test.

Selezione

Per come sono definiti, i White Box test hanno potenzialmente la possibilità di scandagliare ogni riga di codice della code base in analisi.

Ciò però potrebbe verosimilmente rivelarsi un enorme dispendio di tempo e denaro, e, il più delle volte, si rivela necessario solo per sistemi e servizi strategici (banche, aziende sanitarie ecc.).

Un buon equilibrio è raggiungibile operando una fase di selezione delle aree considerate più a rischio.

Concentrandosi su porzioni strategiche del codice è possibile simulare un maggiore numero di situazioni in cui potrebbero essere riscontrati errori.

Questa pre-selezione darà luogo a un’analisi certamente minuziosa e dettagliata ma al contempo rapida e dai costi contenuti.

Identificazione delle vulnerabilità

Sulla base delle funzionalità del codice attenzionato, i pen-tester costruiscono degli apposite procedure di analisi. Queste servono a verificare se il sistema presenta o meno comportamenti imprevisti quando sollecitato.

Questa fase può essere portata a termine manualmente, testando una singola sezione di codice, oppure automatizzata accorpando i test sulle singole funzionalità in un’unica sessione.

Se un test restituisce un output inaspettato si ha di fronte un bug da eliminare.

Resoconto e risoluzione

+Al termine delle operazioni sul campo, si passa alla reportistica.

Vengono descritte le vulnerabilità trovate, ad esempio esplicitando la differenza tra output ottenuto e atteso e quale sollecitazione ha prodotto tale discrepanza. Si illustrano, altresì, le possibili soluzioni e strategie di lavoro.

Il report, pur essendo un documento tecnico, è stilato in modo che sia comprensibile ai clienti e persone non specializzate in pen-testing.  Questo affinché il processo possa essere seguito con facilità in ogni sua fase, dall’identificazione dei problemi alla loro risoluzione.

A ciò segue il lavoro dei collaboratori preposti alla manutenzione del servizio testato, che dovranno apportare le opportune modifiche per la risoluzione dei problemi riscontrati.

Perché testare è fondamentale

I test White Box analizzano gran parte del codice, specialmente quello interno, accessibile solamente a sviluppatori e admin. Una vulnerabilità a questo livello del codice potrebbe rivelarsi critica e dare luogo a comportamenti inaspettati.

A questo proposito, con i White Box test è possibile

  • sia controllare che siano state seguite le buone norme di sviluppo durante la scrittura del codice
  • sia fare un raffronto con i database di vulnerabilità note, al fine di evitare di ospitare degli exploit nella propria code base.

È infatti di uso comune servirsi di pacchetti software di terzi, in quanto offrono delle funzionalità pronte all’uso e consentono di risolvere problemi in breve tempo e con meno errori. Quando, però, uno di questi pacchetti presenta una criticità, questa inficia anche la sicurezza di tutti i servizi che ne fanno uso.

In questi casi, enti preposti alla catalogazione delle vulnerabilità registrano tutte le informazioni del caso sui propri database, consultabili poi in fase di testing dai professionisti.

Un’ulteriore condizione per produrre del codice che sia robusto, sicuro e facilmente modificabile è evitare una logica superflua o ridondante, che, oltre ad essere inefficiente e dunque costosa, aumenta la probabilità di produrre errori.

In tal senso, testare il proprio prodotto porta ad un miglioramento qualitativo del codice, che risulterà poi più facile da mantenere e, all’occorrenza, modificare.

Ogni interruzione del servizio rappresenta un costo da sostenere. Quando poi gli attacchi informatici vanno a causare danni sia pratici (debilitazione del servizio, ritorsioni…) che di immagine, i costi possono essere onerosi.

La prevenzione tramite White Box tests rappresenta perciò un buon investimento.

In ogni caso, il consiglio rimane quello di abbinare varie tipologie di testing al fine di raggiungere uno standard di sicurezza più elevato.

Conclusioni

In questo periodo storico, molti dei servizi utilizzati da cittadini e aziende sono in qualche modo collegati ad internet. Garantire la sicurezza di un prodotto risulta essere un investimento necessario se si vogliono evitare danni e disservizi onerosi, causati in prima analisi da un codice vulnerabile.

A questo proposito, è opportuno investire in operazioni di testing che riducano la possibilità che la code base del proprio prodotto presenti il fianco ad azioni malevole o comportamenti inaspettati.

I White Box testing sono condotti da sviluppatori professionisti o pen-tester, ai quali è garantito l’accesso a tutto il codice dell’applicativo. Sono test molto complessi e possono potenzialmente interessare ogni singola funzionalità. Per mantenere economicamente percorribile questa attività, è possibile selezionare specifiche aree ritenute sensibili su cui focalizzare l’analisi. Inoltre, ove possibile, automatizzare il processo di testing aiuta notevolmente a contenerne i costi.

Cyberment Srl

Cyberment è un’azienda specializzata in consulenza di sicurezza informatica. Il nostro red team è composto da hacker etici e specialisti in cybersecurity che operano in questo settore da oltre 20 anni.

Ci occupiamo di identificare le vulnerabilità informatiche nei sistemi e nelle applicazioni web tramite servizi di Vulnerability Assessment e Penetration Test.

Siamo un’azienda di sicurezza informatica certificata ISO 9001, ISO 27001, nonché azienda etica. Abbiamo sede legale a Milano e sede operativa a Porto Mantovano, mentre Londra è il cuore del nostro reparto ricerca e sviluppo.

Se desideri conoscere in modo approfondito i nostri servizi di prevenzione dalle minacce informatiche, contattaci!