Strategia di sicurezza WPF - Progettazione della sicurezza

Trustworthy Computing è un'iniziativa Microsoft per garantire la produzione di codice sicuro. Un elemento chiave dell'iniziativa Trustworthy Computing è microsoft Security Development Lifecycle (SDL). SDL è una pratica di progettazione usata insieme ai processi di progettazione standard per facilitare la distribuzione di codice sicuro. SDL è costituito da dieci fasi che combinano procedure consigliate con formalizzazione, verificabilità e struttura aggiuntiva, tra cui:

  • Analisi della progettazione della sicurezza

  • Controlli di qualità basati su strumenti

  • Test di penetrazione

  • Revisione finale della sicurezza

  • Gestione della sicurezza dei prodotti in seguito al rilascio

Specifiche di WPF

Il team di progettazione WPF si applica ed estende sdl, la cui combinazione include gli aspetti chiave seguenti:

Modellazione delle minacce

Analisi della sicurezza e strumenti di modifica

Tecniche di test

Gestione del codice critico

Modellazione delle minacce

La modellazione delle minacce è un componente principale di SDL e viene usata per profilare un sistema per determinare potenziali vulnerabilità di sicurezza. Una volta identificate le vulnerabilità, la classificazione dei rischi garantisce anche che vengano attuate le misure di prevenzione appropriate.

A livello generale, la classificazione dei rischi comporta i passaggi principali seguenti, in cui viene usato un negozio di alimentari come esempio:

  1. Identificazione degli asset. Gli asset di un negozio di alimentari potrebbero includere i dipendenti, una cassaforte, i registri di cassa e l'inventario.

  2. Enumerazione dei punti di ingresso. I punti di ingresso di un negozio di alimentari potrebbero includere gli ingressi anteriore e posteriore, le finestre, la rampa di carico e i condizionatori d'aria.

  3. Esame degli attacchi contro asset e punti di ingresso. Un possibile attacco potrebbe avere come oggetto la cassa del negozio di alimentari attraverso il punto di ingresso condizionatore d'aria. L'impianto potrebbe essere smontato per fare passare la cassa attraverso il muro fino all'esterno del negozio.

La modellazione delle minacce viene applicata in WPF e include quanto segue:

  • Come il parser XAML legge i file, esegue il mapping del testo alle classi del modello a oggetti corrispondenti e crea il codice effettivo.

  • Modo in cui un handle di finestra (hWnd) viene creato, invia messaggi ed è usato per il rendering del contenuto di una finestra.

  • Modo in cui il data binding ottiene risorse e interagisce con il sistema.

Questi modelli di classificazione dei rischi sono importanti per identificare i requisiti di progettazione della sicurezza e le misure di prevenzione dei rischi durante il processo di sviluppo.

Analisi del codice sorgente e strumenti di modifica

Oltre agli elementi di revisione manuale del codice di sicurezza di SDL, il team WPF usa diversi strumenti per l'analisi dell'origine e le modifiche associate per ridurre le vulnerabilità di sicurezza. Viene usata un'ampia gamma di strumenti di origine, tra cui:

  • FXCop: trova i problemi di sicurezza comuni nel codice gestito, dalle regole di ereditarietà all'utilizzo della sicurezza per l'accesso al codice, fino a come garantire un'interoperabilità sicura con il codice non gestito. Vedere FxCop.

  • Prefix/Prefast: trova le vulnerabilità della sicurezza e i problemi di sicurezza comuni nel codice non gestito, come i sovraccarichi del buffer, i problemi relativi alle stringhe di formato e il controllo egli errori.

  • API esclude: cerca nel codice sorgente per individuare l'utilizzo accidentale di funzioni che sono note provocare problemi di sicurezza, come strcpy. Una volta identificate, queste funzioni vengono sostituite con alternative più sicure.

Tecniche di test

WPF usa un'ampia gamma di tecniche di test di sicurezza che includono:

  • Test whitebox: i tester visualizzano il codice sorgente e quindi compilano i test di exploit.

  • Blackbox Testing: i tester provano a trovare exploit di sicurezza esaminando l'API e le funzionalità e quindi tentano di attaccare il prodotto.

  • Regressione dei problemi di sicurezza da altri prodotti: in tutti i casi in cui è possibile, vengono testati i problemi di sicurezza di prodotti correlati. Ad esempio, le varianti appropriate di circa sessanta problemi di sicurezza per Internet Explorer sono state identificate e tentate per l'applicabilità a WPF.

  • Test di penetrazione basati su strumenti tramite test con dati casuali sui file: i test con dati casuali sui file prevedono l'uso di un intervallo di input di un lettore di file tramite diversi input. Un esempio in WPF in cui viene usata questa tecnica consiste nel verificare la presenza di errori nel codice di decodifica dell'immagine.

Gestione del codice critico

Per le applicazioni browser XAML (XBAP), WPF crea una sandbox di sicurezza usando il supporto di .NET Framework per contrassegnare e tenere traccia del codice critico per la sicurezza che eleva i privilegi (vedere Metodologia critica per la sicurezza in Strategia di sicurezza WPF - Sicurezza della piattaforma). A causa degli elevati requisiti di qualità per il codice critico per la sicurezza, tale codice riceve un livello aggiuntivo di controllo della gestione del codice sorgente e della sicurezza. Circa il 5%-10% di WPF è costituito da codice critico per la sicurezza, esaminato da un team di revisione dedicato. Il codice sorgente e il processo di archiviazione vengono gestiti verificando il codice critico per la sicurezza ed eseguendo il mapping di ogni entità critica (ovvero un metodo che contiene codice critico) al rispettivo stato di approvazione. Lo stato di approvazione include i nomi di uno o più revisori. Ogni build giornaliera di WPF confronta il codice critico con quello nelle build precedenti per verificare la presenza di modifiche non approvati. Se un tecnico modifica codice critico senza l'approvazione del team di revisione, il codice viene identificato e corretto immediatamente. Questo processo consente l'applicazione e la manutenzione di un livello particolarmente elevato di controllo sul codice sandbox WPF.

Avviso

Gli XBAP richiedono il funzionamento dei browser legacy, ad esempio Internet Explorer e Firefox. Queste versioni precedenti del browser sono in genere non supportate in Windows 10 e Windows 11. I browser moderni non supportano più la tecnologia necessaria per le app XBAP a causa di rischi per la sicurezza. I plug-in che abilitano XBAP non sono più supportati.

Vedi anche