CS.EXCEPT.NO_LOG
Ensure all exceptions are either logged with a standard logger or rethrown.
This rule identifies code that does not log caught exceptions with a standard logger or rethrow caught exceptions.
Mitigation and prevention
Using a logging mechanism to keep track of caught exceptions can provide a clearer and more secure overview of the possible security vulnerabilities, and this information could help you implement a prompt and accurate fix.
Enforcing this rule will help to protect against the OWASP 2007 Top 10 application vulnerability "A6 - Information Leakage and Improper Error Handling".
External guidance
Security training
Application security training materials provided by Secure Code Warrior.
Vulnerable code example
Copy
public class Example
{
public void readFile(String fileName)
{
try
{
FileInfo fi = new FileInfo(fileName);
FileStream fs = fi.OpenRead();
fs.Close();
}
catch (IOException e)
{
Console.WriteLine("Exception found");
}
}
}
Violation is reported on line 11.
Fixed code example
Copy
public class Example
{
public void readFile(String fileName)
{
try
{
FileInfo fi = new FileInfo(fileName);
FileStream fs = fi.OpenRead();
fs.Close();
}
catch (IOException e) // FIX
{
(new Logger()).Error("Failed to read file. " + e.Message);
}
}
public class Logger
{
public void Error(string errorDetails)
{
/* Logging the error */
}
}
}