Procedure di sicurezza consigliate per C++

In questo articolo vengono fornite informazioni riguardati le procedure e gli strumenti di sicurezza.Il loro utilizzo non rende le applicazioni immuni da eventuali attacchi, ma ne riduce le probabilità di successo.

Funzionalità di sicurezza di Visual C++

Queste funzionalità di sicurezza sono incorporate nel compilatore e nel linker Visual C++:

  • /GS (Controllo sicurezza buffer)
    Viene indicato al compilatore di inserire il codice per rilevare il sovraccarico di una funzione che è a rischio di violazione.In caso di sovraccarico, l'esecuzione viene interrotta.Per impostazione predefinita, questa opzione è attivata.

  • /SAFESEH (L'immagine ha gestori delle eccezioni sicuri)
    Viene indicato al linker di includere, nell'immagine di output, una tabella contenente gli indirizzi di ogni gestore di eccezioni.In fase di esecuzione, il sistema operativo utilizza questa tabella per garantire che vengano eseguiti esclusivamente i gestori delle eccezioni autorizzati.Questo consente di evitare l'esecuzione di gestori di eccezioni, che sono introdotti mediante un attacco in fase di esecuzione.Per impostazione predefinita, questa opzione non è attiva.

  • /NXCOMPAT, /NXCOMPAT (compatibile con Protezione esecuzione programmi)
    Mediante queste opzioni del compilatore e del linker viene abilitata la compatibilità di protezione esecuzione programmi (DEP).DEP impedisce alla CPU di eseguire pagine che non sono di codice.

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

  • /DYNAMICBASE (utilizzo della funzionalità ASLR)
    Questa opzione del linker consente al compilatore di eseguire 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 per includere versioni sicure di funzioni che comportano rischi per la sicurezza—ad esempio, la funzione non controlla la copia della stringa strcpy.Poiché le precedenti versioni non sicure di queste funzioni sono deprecate, questo causa degli avvisi a tempo di compilazione.Si incoraggia ad utilizzare le versioni sicure di queste funzioni CRT, anziché sopprimere gli avvisi di compilazione.Per ulteriori informazioni, vedere Funzionalità di sicurezza in CRT.

Libreria SafeInt

Libreria SafeInt consente di evitare gli overflow di valori Integer e altri errori che potrebbero verificarsi quando l'applicazione esegue operazioni matematiche.La libreria SafeInt include la Classe SafeInt, la Classe SafeIntException e diverse Funzioni SafeInt.

La classe SafeInt protegge dall'overflow di interi e dagli exploit di divisione per zero.È possibile utilizzare il gestore dei confronti, tra i valori di tipi diversi.Fornisce i due errore di gestione dei criteri.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 parametri di tipi diversi, senza doverli convertire nello stesso tipo.Per proteggere più operazioni matematiche, utilizzare la classe SafeInt.

Iteratori verificati

Un iteratore verificato 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 che dipendono dal valore assegnato dal preprocessore, definito come _SECURE_SCL_THROWS e _ITERATOR_DEBUG_LEVEL.Ad esempio, _ITERATOR_DEBUG_LEVEL=2 è un iteratore verificato che fornisce controlli di correttezza completi in modalità di debug, resi disponibili tramite asserzioni.Per ulteriori informazioni, vedere Iteratori verificati.

Analisi del codice gestito

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

  • Progettazione delle librerie

  • Localizzazione

  • Convenzioni di denominazione

  • Prestazioni

  • Protezione

Windows Application Verifier

Application Verifier (AppVerifier) può consentire di identificare i potenziali problemi di compatibilità dell'applicazione, di stabilità e delle problematiche di sicurezza.

AppVerifier controlla il modo in cui il sistema operativo viene utilizzato da un'applicazione.Mentre l'applicazione è in esecuzione controlla il file system, il registri, la memoria e le API e fornisce delle indicazioni al codice sorgente per risolvere le problematiche rilevate.

È possibile utilizzare il AppVerifier per:

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

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

  • Identificare potenziali problemi di sicurezza in un'applicazione.

AppVerifier è parte del Application Compatibility Toolkit, che è disponibile alla pagina web Compatibilità delle applicazioni del sito TechNet.

Funzionalità di sicurezza di .NET Framework

Configuring Security Policy 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 e 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 in .NET Framework