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
This weakness is not covered by the automated black-box pentest. IntegSec pentesters cover it in a manual engagement.
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?
This weakness is not covered by the automated black-box pentest. IntegSec pentesters cover it in a manual engagement.
Related CWEs
Written and reviewed by
Michel Chamberland - Founder & CEO, IntegSec
CISSP, OSCP, OSCE, CEH, GIAC, CCSK · 20+ years in offensive security
Michel has spent 20+ years on offensive security teams including IBM X-Force Red and Trustwave SpiderLabs, leading penetration tests, red team engagements, and breach response for Fortune 500 customers. He is the founder of IntegSec and the architect of TurboPentest.
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