|
Status: Draft Weakness ID: 567 (Weakness Base)Description Summary The product does not properly synchronize shared data, such as static variables across threads, which can lead to undefined behavior and unpredictable data changes. Potential Mitigations A shared variable vulnerability can be prevented by removing the use of static variables used between servlets or to provide protection when shared access is absolutely needed. In this case, access should be synchronized. Demonstrative Examples Java Example: public static class Counter extends HttpServlet { static int count = 0; protected void doGet(HttpServletRequest in,
HttpServletResponse out) throws ServletException, IOException { out.setContentType("text/plain"); PrintWriter p = out.getWriter(); count++; p.println(count + " hits so far!"); } }
Other Notes The vulnerability can exist in servlets because a servlet is multi-threaded, and shared static variables are not protected from concurrent access. This is a typical programming mistake in J2EE applications, since the multi-threading is handled by the framework. The use of shared variables can be exploited by attackers to gain information or to cause denial of service conditions. If this shared data contains sensitive information, it may be manipulated or displayed in another user session. If this data is used to control the application, its value can be manipulated to cause the application to crash or perform poorly. Relationships
Applicable Platforms Languages All Time of Introduction Architecture and Design ImplementationRelated Attack Patterns
Content History Modifications Eric Dalci. Cigital. 2008-07-01. (External) updated Time_of_Introduction CWE Content Team. MITRE. 2008-09-08. (Internal) updated Relationships, Other_Notes |
|
|
|||