Strategia di sicurezza WPF - Progettazione della sicurezzaWPF Security Strategy - Security Engineering

Trustworthy Computing è un'iniziativa Microsoft per garantire la produzione di codice sicuro.Trustworthy Computing is a Microsoft initiative for ensuring the production of secure code. Un elemento chiave dell'iniziativa Trustworthy Computing è Microsoft Security Development Lifecycle (SDL)Microsoft Security Development Lifecycle (SDL).A key element of the Trustworthy Computing initiative is the Microsoft Security Development Lifecycle (SDL)Microsoft Security Development Lifecycle (SDL). SDLSDL è una procedura di progettazione usata insieme a processi di progettazione standard per semplificare la generazione di codice sicuro.The SDLSDL is an engineering practice that is used in conjunction with standard engineering processes to facilitate the delivery of secure code. SDLSDL prevede dieci fasi che combinano procedure consigliate con formalizzazione, misurabilità e struttura aggiuntiva, tra cui:The SDLSDL consists of ten phases that combine best practices with formalization, measurability, and additional structure, including:

  • Analisi della progettazione della sicurezzaSecurity design analysis

  • Controlli di qualità basati su strumentiTool-based quality checks

  • Test di penetrazionePenetration testing

  • Revisione finale della sicurezzaFinal security review

  • Gestione della sicurezza dei prodotti in seguito al rilascioPost release product security management

Specifiche di WPFWPF Specifics

Il team di progettazione di WPFWPF applica ed estende SDLSDL, la combinazione dei quali include i fattori chiave seguenti:The WPFWPF engineering team both applies and extends the SDLSDL, the combination of which includes the following key aspects:

Classificazione dei rischiThreat Modeling

Analisi della sicurezza e strumenti di modificaSecurity Analysis and Editing Tools

Tecniche di testTesting Techniques

Gestione del codice criticoCritical Code Management

Classificazione dei rischiThreat Modeling

La classificazione dei rischi è un componente centrale di SDLSDL e viene usata per profilare un sistema in modo da determinare le potenziali vulnerabilità della sicurezza.Threat modeling is a core component of the SDLSDL, and is used to profile a system to determine potential security vulnerabilities. Una volta identificate le vulnerabilità, la classificazione dei rischi garantisce anche che vengano attuate le misure di prevenzione appropriate.Once the vulnerabilities are identified, threat modeling also ensures that appropriate mitigations are in place.

A livello generale, la classificazione dei rischi comporta i passaggi principali seguenti, in cui viene usato un negozio di alimentari come esempio:At a high level, threat modeling involves the following key steps by using a grocery store as an example:

  1. Identificazione degli asset.Identifying Assets. Gli asset di un negozio di alimentari potrebbero includere i dipendenti, una cassaforte, i registri di cassa e l'inventario.A grocery store's assets might include employees, a safe, cash registers, and inventory.

  2. Enumerazione dei punti di ingresso.Enumerating Entry Points. 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.A grocery store's entry points might include the front and back doors, windows, the loading dock, and air conditioning units.

  3. Esame degli attacchi contro asset e punti di ingresso.Investigating Attacks against Assets using Entry Points. 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.One possible attack could target a grocery store's safe asset through the air conditioning entry point; the air conditioning unit could be unscrewed to allow the safe to be pulled up through it and out of the store.

La classificazione dei rischi viene applicata in tutto WPFWPF e include:Threat modeling is applied throughout WPFWPF and includes the following:

  • Modo in cui il parser XAMLXAML legge i file, esegue il mapping del testo alle classi del modello a oggetti corrispondenti e crea il codice effettivo.How the XAMLXAML parser reads files, maps text to corresponding object model classes, and creates the actual code.

  • Modo in cui un handle di finestra (hWnd) viene creato, invia messaggi ed è usato per il rendering del contenuto di una finestra.How a window handle (hWnd) is created, sends messages, and is used for rendering the contents of a window.

  • Modo in cui il data binding ottiene risorse e interagisce con il sistema.How data binding obtains resources and interacts with the system.

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.These threat models are important for identifying security design requirements and threat mitigations during the development process.

Analisi del codice sorgente e strumenti di modificaSource Analysis and Editing Tools

Oltre agli elementi di revisione manuale del codice di sicurezza di SDLSDL, il team di WPFWPF usa diversi strumenti per l'analisi del codice sorgente e le modifiche associate in modo da ridurre le vulnerabilità della sicurezza.In addition to the manual security code review elements of the SDLSDL, the WPFWPF team uses several tools for source analysis and associated edits to decrease security vulnerabilities. Viene usata un'ampia gamma di strumenti di origine, tra cui:A wide range of source tools are used, and include the following:

  • 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.FXCop: Finds common security issues in managed code ranging from inheritance rules to code access security usage to how to safely interoperate with unmanaged code. Vedere FxCop.See 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.Prefix/Prefast: Finds security vulnerabilities and common security issues in unmanaged code such as buffer overruns, format string issues, and error checking.

  • API esclude: cerca nel codice sorgente per individuare l'utilizzo accidentale di funzioni che sono note provocare problemi di sicurezza, come strcpy.Banned APIs: Searches source code to identify accidental usage of functions that are well-known for causing security issues, such as strcpy. Una volta identificate, queste funzioni vengono sostituite con alternative più sicure.Once identified, these functions are replaced with alternatives that are more security.

Tecniche di testTesting Techniques

WPFWPF usa svariate tecniche di test della sicurezza, tra cui: uses a variety of security testing techniques that include:

  • Whitebox Testing: i tester visualizzano il codice sorgente e quindi compilano test per gli exploit.Whitebox Testing: Testers view source code, and then build exploit tests

  • Blackbox Testing: i tester provano a trovare exploit di sicurezza esaminando l'API e le funzionalità e quindi tentano di attaccare il prodotto.Blackbox Testing: Testers try to find security exploits by examining the API and features, and then try to attack the product.

  • Regressione dei problemi di sicurezza da altri prodotti: in tutti i casi in cui è possibile, vengono testati i problemi di sicurezza di prodotti correlati.Regressing Security Issues from other Products: Where relevant, security issues from related products are tested. Ad esempio, sono state identificate e provate le varianti appropriate di circa 60 problemi di sicurezza per Internet ExplorerInternet Explorer per verificarne l'applicabilità a WPFWPF.For example, appropriate variants of approximately sixty security issues for Internet ExplorerInternet Explorer have been identified and tried for their applicability to WPFWPF.

  • 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.Tools-Based Penetration Testing through File Fuzzing: File fuzzing is the exploitation of a file reader's input range through a variety of inputs. Un esempio in WPFWPF in cui viene usata questa tecnica consiste nel verificare la presenza di errori nel codice di decodifica delle immagini.One example in WPFWPF where this technique is used is to check for failure in image decoding code.

Gestione del codice criticoCritical Code Management

Per applicazioni browser XAML (XBAP)XAML browser applications (XBAPs), WPFWPF compila una sandbox di sicurezza utilizzando il supporto di .NET Framework per contrassegnare e rilevare il codice SecurityCritical che eleva i privilegi (vedere metodologia SecurityCritical in WPF Strategia di sicurezza - sicurezza della piattaforma).For applicazioni browser XAML (XBAP)XAML browser applications (XBAPs), WPFWPF builds a security sandbox by using .NET Framework support for marking and tracking security-critical code that elevates privileges (see Security-Critical Methodology in WPF Security Strategy - Platform Security). 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.Given the high security quality requirements on security critical code, such code receives an additional level of source management control and security audit. All'incirca dal 5% al 10% di WPFWPF è costituito da codice critico per la sicurezza, esaminato da un team di revisione dedicato.Approximately 5% to 10% of WPFWPF consists of security-critical code, which is reviewed by a dedicated reviewing team. 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.The source code and check-in process is managed by tracking security critical code and mapping each critical entity (i.e. a method that contains critical code) to its sign off state. Lo stato di approvazione include i nomi di uno o più revisori.The sign off state includes the names of one or more reviewers. Ogni compilazione giornaliera di WPFWPF confronta il codice critico con quello delle compilazioni precedenti per verificare la presenza di eventuali modifiche non approvate.Each daily build of WPFWPF compares the critical code to that in previous builds to check for unapproved changes. Se un tecnico modifica codice critico senza l'approvazione del team di revisione, il codice viene identificato e corretto immediatamente.If an engineer modifies critical code without approval from the reviewing team, it is identified and fixed immediately. Questo processo permette l'applicazione e la gestione di un livello particolarmente elevato di controllo sul codice sandbox di WPFWPF.This process enables the application and maintenance of an especially high level of scrutiny over WPFWPF sandbox code.

Vedere ancheSee Also

SicurezzaSecurity
Sicurezza con attendibilità parziale in WPFWPF Partial Trust Security
Strategia di sicurezza di WPF - Sicurezza della piattaformaWPF Security Strategy - Platform Security
Trustworthy ComputingTrustworthy Computing
Modellazione dell'applicazioneApplication Threat Modeling
Linee guida per la sicurezza: .NET Framework 2.0Security Guidelines: .NET Framework 2.0