Strategia di sicurezza WPF - Progettazione di sicurezza

Trustworthy Computing (elaborazione attendibile) è una iniziativa Microsoft con l'obiettivo di garantire la produzione di codice sicuro. Un elemento fondamentale dell'iniziativa Trustworthy Computing è rappresentato da Microsoft Security Development Lifecycle (SDL). SDL è una procedura di progettazione utilizzata insieme a processi standard per facilitare la produzione di codice sicuro. SDL prevede dieci fasi che combinano procedure consigliate con formalizzazione, misurabilità e struttura aggiuntiva, tra cui:

  • Analisi della progettazione della sicurezza

  • Controlli della qualità basati su strumenti

  • Test di penetrazione

  • Revisione della sicurezza finale

  • Gestione della sicurezza del prodotto dopo il rilascio

Specifiche di WPF

Il team di progettazione di WPF applica ed estende SDL, la cui combinazione presenta gli aspetti principali elencati di seguito:

Classificazione dei rischi

Analisi della sicurezza e strumenti di modifica

Tecniche di test

Gestione del codice critico

Classificazione dei rischi

La classificazione dei rischi è un componente fondamentale di SDL e viene utilizzata per profilare un sistema allo scopo di determinarne le vulnerabilità dal punto di vista della sicurezza. Dopo avere identificato eventuali vulnerabilità, la classificazione dei rischi consente di garantire che vengano attuate le misure appropriate.

A un livello elevato, la classificazione dei rischi prevede i passaggi fondamentali riportati di seguito. L'esempio riguarda un negozio di generi alimentari.

  1. Identificazione dei beni. I beni di un negozio di generi alimentari possono includere i dipendenti, una cassaforte, i registratori di cassa e l'inventario.

  2. Enumerazione dei punti di ingresso. I punti di ingresso di un negozio di generi alimentari possono includere le porte anteriore e posteriore, le finestre, l'accesso al magazzino e le unità di condizionamento dell'aria.

  3. Indivuazione dei possibili attacchi ai beni tramite i punti di ingresso. Un possibile attacco può essere diretto alla cassaforte del negozio attraverso un'unità di condizionamento dell'aria. Tale unità può infatti rappresentare una via di uscita sia per la cassaforte, sia per i ladri.

La classificazione dei rischi viene applicata a WPF e include quanto segue:

  • Lettura dei file, mapping del testo alle classi del modello a oggetti corrispondenti e creazione del codice da parte del parser XAML.

  • Creazione di un handle della finestra (hWnd) e suo utilizzo per l'invio di messaggi e per il rendering del contenuto di una finestra.

  • Utilizzo dell'associazione dati per ottenere risorse e interazione dell'associazione stessa con il sistema.

Questi modelli di rischi sono importanti per identificare i requisiti della progettazione per garantire la sicurezza e le misure di riduzione relative durante il processo di sviluppo.

Analisi dell'origine e strumenti di modifica

Oltre agli elementi di revisione del codice di sicurezza manuale di SDL, il team WPF utilizza diversi strumenti per l'analisi dell'origine e modifiche correlate per ridurre i rischi legati alla sicurezza. Vengono utilizzati molteplici strumenti, tra cui:

  • FXCop: consente di individuare i problemi di sicurezza comuni nel codice gestito che vanno dalle regole di ereditarietà all'utilizzo della sicurezza dell'accesso di codice e all'interoperabilità sicura con il codice non gestito. Vedere FXCop.

  • Prefix/Prefast: consente di individuare i problemi di sicurezza comuni e le vulnerabilità nella sicurezza del codice non gestito, ad esempio sovraccarici del buffer, problemi delle stringhe di formato e controllo degli errori.

  • Banned APIs: consente di eseguire ricerche nel codice sorgente per identificare eventuali utilizzi accidentali di funzioni note per essere causa di problemi di sicurezza, ad esempio strcpy. Dopo essere state identificate, queste funzioni vengono sostituite con alternative più sicure.

Tecniche di test

In WPF vengono utilizzate molteplici tecniche per eseguire test della sicurezza, ad esempio:

  • Whitebox Testing: esegue test del codice sorgente, quindi compila test di utilizzo

  • Blackbox Testing: consente di trovare violazioni della sicurezza esaminando l'API e le funzionalità e di tentare di attaccare il prodotto.

  • Regressione dei problemi di sicurezza da altri prodotti: se attinenti, vengono testati i problemi di sicurezza di prodotti correlati. Ad esempio, sono state identificate varianti appropriate di circa sessanta problemi di sicurezza relativi a Internet Explorer e ne è stata testata l'applicabilità a WPF.

  • Test di penetrazione basato su strumenti tramite fuzzing: per fuzzing dei file si intende lo sfruttamento dell'intervallo di input di un lettore di file attraverso una varietà di input. Un esempio in WPF dove questa tecnica è utilizzata consiste nell'individuare errori nel codice di decodifica delle immagini.

Gestione del codice critico

Per le XAML browser applications (XBAPs), in WPF viene compilato un sandbox di sicurezza utilizzando il supporto .NET Framework per contrassegnare e rilevare codice critico dal punto di vista della sicurezza che eleva i privilegi (vedere Metodologia correlata alla sicurezza in Strategia di sicurezza di WPF - Sicurezza della piattaforma). Dati gli elevati requisiti di qualità correlati alla sicurezza nel codice, tale codice ottiene un ulteriore livello di controllo di gestione del codice sorgente e di controllo della sicurezza. Circa il 5% - 10% di WPF è costituito da codice critico dal punto di vista della sicurezza, ecco perché viene rivisto da un team dedicato. Il codice sorgente e il processo di archiviazione vengono gestiti tramite il rilevamento del codice critico dal punto di vista della sicurezza e il mapping di ogni entità critica (ovvero un metodo che contiene codice critico) al relativo stato di approvazione. Lo stato di approvazione include i nomi di uno o più revisori. Ogni compilazione giornaliera di WPF confronta il codice critico a quello di compilazioni precedenti per rilevare eventuali modifiche non approvate. Se del codice critico viene modificato senza l'approvazione del team di revisione, viene identificato e corretto immediatamente. Questo processo consente l'applicazione di un livello particolarmente elevato di analisi del codice sandbox di WPF.

Vedere anche

Concetti

Sicurezza (WPF)

Sicurezza con attendibilità parziale in WPF

Strategia di sicurezza di WPF - Sicurezza della piattaforma

Altre risorse

Trustworthy Computing

Application Threat Modeling

Security Guidelines: .NET Framework 2.0