CA2124: Eseguire il wrapping delle clausole finally vulnerabili in un try esterno
Articolo | Valore |
---|---|
ID regola | CA2124 |
Category | Microsoft.Security |
Modifica | Nessuna interruzione |
Causa
Nelle versioni 1.0 e 1.1 di .NET Framework un metodo pubblico o protetto contiene un try
//catch
finally
blocco. Il finally
blocco sembra reimpostare lo stato di sicurezza e non è racchiuso in un finally
blocco.
Nota
Questa regola è stata deprecata. Per altre informazioni, vedere Regole deprecate.
Descrizione regola
Questa regola individua i try
/finally
blocchi nel codice destinato alle versioni 1.0 e 1.1 di .NET Framework che potrebbero essere vulnerabili ai filtri eccezioni dannosi presenti nello stack di chiamate. Se si verificano operazioni sensibili come la rappresentazione nel blocco try e viene generata un'eccezione, il filtro può essere eseguito prima del finally
blocco. Per l'esempio di rappresentazione, questo significa che il filtro viene eseguito come utente rappresentato. I filtri sono attualmente implementabili solo in Visual Basic.
Nota
Nelle versioni 2.0 e successive di .NET Framework, il runtime protegge automaticamente un try
/ /catch
finally
blocco da filtri eccezioni dannosi, se la reimpostazione viene eseguita direttamente all'interno del metodo che contiene il blocco di eccezioni.
Come correggere le violazioni
Posizionare l'oggetto non compresso try
/finally
in un blocco try esterno. Vedere il secondo esempio seguente. In questo modo l'oggetto deve essere eseguito prima del finally
codice di filtro.
Quando eliminare gli avvisi
Non escludere un avviso da questa regola.
Esempio di pseudo-codice
Descrizione
Lo pseudocodice seguente illustra il modello rilevato da questa regola.
try {
// Do some work.
Impersonator imp = new Impersonator("John Doe");
imp.AddToCreditCardBalance(100);
}
finally {
// Reset security state.
imp.Revert();
}
Lo pseudo-codice seguente illustra il modello che è possibile usare per proteggere il codice e soddisfare questa regola.
try {
try {
// Do some work.
}
finally {
// Reset security state.
}
}
catch()
{
throw;
}
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per