CWE-396: Declaration of Catch for Generic Exception
Catching overly broad exceptions promotes complex error handling code that is more likely to contain security vulnerabilities.
How it's found
Declaration of Catch for Generic Exception is typically found by tracing untrusted input from where it enters the system to the point where it is used without the check or neutralization this weakness describes, combining manual code review with dynamic testing.
Multiple catch blocks can get ugly and repetitive, but "condensing" catch blocks by catching a high-level class like Exception can obscure exceptions that deserve special treatment or that should not be caught at this point in the program. Catching an overly broad exception essentially defeats the purpose of a language's typed exceptions, and can become particularly dangerous if the program grows and begins to throw new types of exceptions. The new exception types will not receive any attention.
Vulnerable vs. safe
doExchange();
logger.error("doExchange failed", e);
try {}catch (Exception e) {}doExchange();
logger.error("doExchange failed", e);
logger.error("doExchange failed", e);
logger.error("doExchange failed", e);
try {}catch (IOException e) {}catch (InvocationTargetException e) {}catch (SQLException e) {}Consequences
- Hide Activities: A generic exception can hide details about unexpected adversary activities by making it difficult to properly troubleshoot error conditions during execution.
Where this fits in a TurboPentest engagement
TurboPentest's agentic pentest is powerful and covers a broad range of issues automatically. This particular class is best confirmed in a manual IntegSec engagement, where human pentesters apply deeper methodology and a larger context window than any automated pass.
Frequently asked questions
What is CWE-396?
Catching overly broad exceptions promotes complex error handling code that is more likely to contain security vulnerabilities.
How do you find Declaration of Catch for Generic Exception?
Declaration of Catch for Generic Exception is typically found by tracing untrusted input from where it enters the system to the point where it is used without the check or neutralization this weakness describes, combining manual code review with dynamic testing.
What is the impact of CWE-396?
Hide Activities: A generic exception can hide details about unexpected adversary activities by making it difficult to properly troubleshoot error conditions during execution.
Does TurboPentest test for Declaration of Catch for Generic Exception?
TurboPentest's agentic pentest is powerful and covers a broad range of issues automatically. This particular class is best confirmed in a manual IntegSec engagement, where human pentesters apply deeper methodology and a larger context window than any automated pass.
Related CWEs
About this reference
These security references are maintained by IntegSec, an offensive-security firm whose team holds CISSP, OSCP, and OSCE certifications and has run thousands of penetration tests. Content is kept current as tools, standards, and attack techniques evolve.
Find these issues before an attacker does
TurboPentest runs an agentic AI pentest against your target and reports findings with proof, from $99 per target.
Start a pentest