Procedure di sicurezza consigliate per C++

In questo argomento vengono fornite informazioni relative a procedure e strumenti di sicurezza consigliati. L'utilizzo di queste risorse non rende le applicazioni immuni da eventuali attacchi, ma ne riduce le probabilità di successo.

Funzionalità di sicurezza di Visual C++

In questa sezione vengono illustrate le funzionalità di sicurezza incorporate nel linker e nel compilatore Visual C++.

  • /GS (Buffer Security Check)
    Questa opzione del compilatore indica al compilatore di inserire codice per il rilevamento di sovraccarico nelle funzioni a rischio di violazione. In caso di sovraccarico, l'esecuzione viene interrotta. Per impostazione predefinita, questa opzione è attivata.

  • /SAFESEH (Image has Safe Exception Handlers)
    Questa opzione del linker indica al linker di inserire nell'immagine di output una tabella contenente l'indirizzo di ogni gestore di eccezioni. In fase di esecuzione il sistema operativo utilizza questa tabella per garantire che vengano eseguiti esclusivamente i gestori eccezioni autorizzati. Questo consente di evitare l'esecuzione di gestori di eccezioni introdotti da eventuali utenti malintenzionati mediante un attacco in fase di esecuzione. Per impostazione predefinita, questa opzione è disabilitata.

  • /NXCOMPAT, /NXCOMPAT (Compatible with Data Execution Prevention)
    Mediante queste opzioni del compilatore e del linker viene abilitata la compatibilità con Protezione esecuzione programmi, che impedisce alla CPU di eseguire pagine non di codice.

  • /analyze (Enterprise Code Analysis)
    Questa opzione del compilatore attiva l'analisi del codice che segnala potenziali problemi di sicurezza, quali sovraccarico del buffer, memoria non inizializzata, risoluzione dei riferimenti del puntatore null e perdite di memoria. Per impostazione predefinita, questa opzione è disabilitata. Per ulteriori informazioni, vedere Cenni preliminari sull'analisi del codice per C/C++.

  • /DYNAMICBASE (Use address space layout randomization)
    Questa opzione del linker consente di compilare un'immagine eseguibile che può essere caricata in diversi percorsi nella memoria all'inizio dell'esecuzione. L'opzione, inoltre, rende molto meno prevedibile la posizione dello stack in memoria.

CRT con sicurezza avanzata

La libreria di runtime C (CRT) è stata ampliata in modo da includere versioni sicure delle funzioni che implicano rischi di sicurezza, ad esempio, la funzione di copia della stringa strcpy non verificata. Poiché le precedenti versioni non sicure di queste funzioni sono ormai obsolete, il relativo utilizzo provoca la generazione di avvisi in fase di compilazione. Si consiglia di utilizzare le versioni sicure di queste funzioni CRT anziché optare per un'eliminazione degli avvisi di compilazione. Per ulteriori informazioni, vedere Security Features in the CRT.

Libreria SafeInt

SafeInt Library consente di evitare gli overflow di interi e altri errori che potrebbero verificarsi quando l'applicazione esegue operazioni matematiche. La libreria SafeInt include la SafeInt Class, la SafeIntException Class e diverse SafeInt Functions.

La classe SafeInt protegge dall'overflow di interi e dagli exploit di divisione per zero. Consente di gestire confronti tra valori di tipi diversi e fornisce due set di criteri di gestione degli errori. I criteri predefiniti fanno sì che la classe SafeInt generi un'eccezione della classe SafeIntException per segnalare il motivo per cui non è possibile completare un'operazione matematica. Il secondo set di criteri fa sì che la classe SafeInt interrompa l'esecuzione del programma. È anche possibile definire criteri personalizzati.

Ogni funzione SafeInt protegge un'operazione matematica da un errore sfruttabile. È possibile utilizzare due tipi diversi di parametri senza doverli convertire nello stesso tipo. Utilizzare la classe SafeInt per proteggere più operazioni matematiche.

Iteratori verificati

Un iteratore verificato è un iteratore che applica i limiti del contenitore. Per impostazione predefinita, quando un iteratore verificato oltrepassa i limiti, genera un'eccezione e termina l'esecuzione del programma. Un iteratore verificato fornisce altri livelli di risposta, ad esempio _SECURE_SCL_THROWS e _ITERATOR_DEBUG_LEVEL, che dipendono dai valori assegnati alle definizioni del preprocessore. Con _ITERATOR_DEBUG_LEVEL=2, ad esempio, un iteratore verificato fornisce controlli di correttezza completi in modalità di debug, resi disponibili tramite asserzioni. Per ulteriori informazioni, vedere Checked Iterators.

Analisi del codice gestito

Lo strumento di analisi del codice gestito, noto anche come FxCop, verifica la conformità degli assembly alle linee guida di progettazione di Microsoft .NET Framework. FxCop analizza il codice e i metadati all'interno di ogni assembly per controllare l'eventuale presenza di errori nelle aree seguenti:

  • Progettazione delle librerie

  • Localizzazione

  • Convenzioni di denominazione

  • Prestazioni

  • Sicurezza

Lo strumento di analisi del codice gestito è incluso in Visual Studio Application Lifecycle Management e può essere inoltre scaricato da https://www.gotdotnet.com/team/fxcop/.

Windows Application Verifier

Disponibile nell'ambito dell'utilità Application Compatibility Toolkit, Application Verifier (AppVerifier) è uno strumento che assiste gli sviluppatori nell'identificare potenziali problemi relativi a compatibilità, stabilità e sicurezza delle applicazioni.

AppVerifier controlla il modo in cui il sistema operativo viene utilizzato da un'applicazione. Mentre l'applicazione è in esecuzione controlla il file system, il Registro di sistema, la memoria e le API, fornendo indicazioni per risolvere a livello di codice sorgente i problemi rilevati.

Il verificatore consente di eseguire le operazioni seguenti:

  • Verificare i potenziali problemi di compatibilità dell'applicazione causati da errori di programmazione comuni.

  • Esaminare un'applicazione alla ricerca di problemi connessi alla memoria.

  • Verificare la conformità di un'applicazione ai requisiti dei programmi di certificazione per il logo correnti quali Windows 7 Software Logo Program e Windows Server 2008 R2 Logo Program.

  • Identificare potenziali problemi di sicurezza in un'applicazione.

Il Windows Application Compatibility Toolkit è disponibile nella pagina "Compatibilità delle applicazioni" del sito Web TechNet.

Funzionalità di sicurezza di .NET Framework

Configurazione dei criteri di sicurezza fornisce gli strumenti e le linee guida per modificare i criteri di sicurezza di .NET Framework.

Account utente Windows

L'utilizzo di account utente Windows appartenenti al gruppo Administrators espone gli sviluppatori, e di conseguenza gli utenti, a rischi relativi alla sicurezza. Per ulteriori informazioni, vedere Esecuzione come membro del gruppo Users.

Miglioramento della sicurezza mediante la funzionalità Controllo dell'account utente in Windows Vista

Il Controllo dell'account utente è una funzionalità di Windows Vista in cui gli account utente dispongono di privilegi limitati. Per ulteriori informazioni, vedere Effetti del Controllo dell'account utente sull'applicazione.

Vedere anche

Riferimenti

System.Security

Concetti

Effetti del Controllo dell'account utente sull'applicazione

Altre risorse

Sicurezza delle applicazioni