Scanners flag verbose errors because a stack trace or detailed database message tells an attacker which frameworks, versions, file paths and queries your application uses. The fix is to show users a generic message and keep the details in server logs where only your team can read them.
What the finding means
CWE-209 describes generating an error message that contains sensitive information. The OWASP Web Security Testing Guide lists the forms it takes: stack traces, network timeouts, input mismatches and memory dumps. It explains that developers often think only of the happy path and forget that someone may send a string where an integer is expected, on purpose.
According to the guide, improper error handling can let an attacker:
- Learn which APIs are used internally.
- Map services that talk to each other, which helps chain attacks.
- Gather versions and types of software.
- Identify file system paths.
- Cause denial of service by forcing an unhandled exception or deadlock.
- Bypass a control where an exception is not covered by the logic around the normal path.
An error page alone is rarely a breach. It shortens an attacker's research, and it can confirm that an injection attempt reached the database or an interpreter.
How scanners trigger errors
The testing guide describes the approach, and scanners automate it.
- Request files and folders that do not exist to see the web server's 404 format.
- Request folders that exist to see 403 pages, blank pages or directory listings.
- Send requests that break the HTTP specification, such as a very long path or malformed headers. Even if the application handles its own errors, the web server underneath may reveal itself.
- Send unexpected data to every input: wrong types, a closing bracket in a JSON body, long text where a short value is expected, odd characters in filenames.
The guide cautions that fuzzing every input with every possible payload is not always practical. Scanners balance depth against time and load, so a clean result may reflect limited coverage.
Where errors leak
| Source | Typical leak |
|---|---|
| Web server defaults | Server name and version on 404 or 500 pages |
| Application framework in debug mode | Full stack trace with file paths |
| Database driver | SQL text and table names |
| Parsers for JSON or XML | Library names and line positions |
| API gateways and proxies | Upstream hostnames and internal URLs |
Debug mode left on in production is the most common cause. Check this first.
How to fix it
- Turn off debug output in production builds.
- Add a global exception handler that returns a short, generic message and a request ID.
- Log the full detail on the server, with the same request ID, so support can find it.
- Override default error pages on the web server and any proxy in front of it.
- Make error responses consistent in shape and timing, which also helps against account enumeration.
- Retest by sending the same malformed requests the scanner used.
The testing guide points to the OWASP Top 10 Proactive Controls item on validating input and handling exceptions, and to the Error Handling Cheat Sheet, for remediation guidance.
Treat it as a signal
A verbose error is also a clue that input handling nearby may be weak. If a quote character produces a database error, check for SQL injection on that parameter. If a malformed body produces a parser trace, look at what the parser accepts. See how to triage a DAST report for sorting real issues from noise.
Try it yourself
Click through it at your own pace, or open it full screen. Look at the evidence shown for each finding, and whether it includes server response text.
Quick check
Are stack traces always a vulnerability?
They are an information exposure weakness. Their severity depends on what they reveal and whether attackers can use it, but there is rarely a good reason to show them to users.
Will hiding errors stop SQL injection?
No. It removes one signal, but blind techniques still work. Fix the query with parameterization.
Safeguard offers a free scan of your dependencies at gold.safeguard.sh/scan.
Sources
- OWASP WSTG: Improper Error Handling
- CWE-209: Generation of Error Message Containing Sensitive Information
Last reviewed: 19 October 2026.