Data Leak Between Sessions |
| Weakness ID: 488 (Weakness Variant) | Status: Draft |
Description Summary
Extended Description
Data can "bleed" from one session to another through member variables of singleton objects, such as Servlets, and objects from a shared pool.
In the case of Servlets, developers sometimes do not understand that, unless a Servlet implements the SingleThreadModel interface, the Servlet is a singleton; there is only one instance of the Servlet, and that single instance is used and re-used to handle multiple requests that are processed simultaneously by different threads. A common result is that developers use Servlet member fields in such a way that one user may inadvertently see another user's data. In other words, storing user data in Servlet member fields introduces a data access race condition.
Example 1
The following Servlet stores the value of a request parameter in a member field and then later echoes the parameter value to the response output stream.
While this code will work perfectly in a single-user environment, if two users access the Servlet at approximately the same time, it is possible for the two request handler threads to interleave in the following way: Thread 1: assign "Dick" to name Thread 2: assign "Jane" to name Thread 1: print "Jane, thanks for visiting!" Thread 2: print "Jane, thanks for visiting!" Thereby showing the first user the second user's name.
Protect the application's sessions from information leakage. Make sure that a session's data is not used or visible by other sessions. |
Use a static analysis tool to scan the code for information leakage vulnerabilities (e.g. Singleton Member Field). |
In multithreading environment, storing user data in Servlet member fields introduces a data access race condition. Do not use member fields to store information in the Servlet. |
| Nature | Type | ID | Name | View(s) this relationship pertains to![]() |
|---|---|---|---|---|
| ChildOf | Weakness Class | 485 | Insufficient Encapsulation | Development Concepts (primary)699 Seven Pernicious Kingdoms (primary)700 Research Concepts (primary)1000 |
| PeerOf | Weakness Base | 567 | Unsynchronized Access to Shared Data | Research Concepts1000 |
| Mapped Taxonomy Name | Node ID | Fit | Mapped Node Name |
|---|---|---|---|
| 7 Pernicious Kingdoms | Data Leaking Between Users |
| Submissions | ||||
|---|---|---|---|---|
| Submission Date | Submitter | Organization | Source | |
| 7 Pernicious Kingdoms | Externally Mined | |||
| Modifications | ||||
| Modification Date | Modifier | Organization | Source | |
| 2008-07-01 | Eric Dalci | Cigital | External | |
| updated Potential Mitigations, Time of Introduction | ||||
| 2008-09-08 | CWE Content Team | MITRE | Internal | |
| updated Description, Relationships, Other Notes, Taxonomy Mappings | ||||
| 2009-05-27 | CWE Content Team | MITRE | Internal | |
| updated Demonstrative Examples | ||||
| 2009-10-29 | CWE Content Team | MITRE | Internal | |
| updated Description, Other Notes | ||||
| Previous Entry Names | ||||
| Change Date | Previous Entry Name | |||
| 2008-04-11 | Data Leaking Between Users | |||







