|Name ||Exploitation of Session Variables, Resource IDs and other Trusted Credentials |
|Summary ||Attacks on session IDs and resource IDs take advantage of the fact that some software accepts user input without verifying its authenticity. For example, a message queuing system that allows service requesters to post messages to its queue through an open channel (such as anonymous FTP), authorization is done through checking group or role membership contained in the posted message. However, there is no proof that the message itself, the information in the message (such group or role membership), or indeed the process that wrote the message to the queue are authentic and authorized to do so.
Many server side processes are vulnerable to these attacks because the server to server communications have not been analyzed from a security perspective or the processes "trust" other systems because they are behind a firewall. In a similar way servers that use easy to guess or spoofable schemes for representing digital identity can also be vulnerable. Such systems frequently use schemes without cryptography and digital signatures (or with broken cryptography). Session IDs may be guessed due to insufficient randomness, poor protection (passed in the clear), lack of integrity (unsigned), or improperly correlation with access control policy enforcement points.
Exposed configuration and properties files that contain system passwords, database connection strings, and such may also give an attacker an edge to identify these identifiers.
The net result is that spoofing and impersonation is possible leading to an attacker's ability to break authentication, authorization, and audit controls on the system. |
|Prerequisites ||Server software must rely on weak session IDs proof and/or verification schemes |
|Solutions ||Design: utilize strong federated identity such as SAML to encrypt and sign identity tokens in transit.
Implementation: Use industry standards session key generation mechanisms that utilize high amount of entropy to generate the session key. Many standard web and application servers will perform this task on your behalf.
Implementation: If the session identifier is used for authentication, such as in the so-called single sign on use cases, then ensure that it is protected at the same level of assurance as authentication tokens.
Implementation: If the web or application server supports it, then encrypting and/or signing the session ID (such as cookie) can protect the ID if intercepted.
Design: Use strong session identifiers that are protected in transit and at rest.
Implementation: Utilize a session timeout for all sessions, for example 20 minutes. If the user does not explicitly logout, the server terminates their session after this period of inactivity. If the user logs back in then a new session key is generated.
Implementation: Verify of authenticity of all session IDs at runtime. |
|CWE ID ||Description |
|CWE-6 ||J2EE Misconfiguration: Insufficient Session-ID Length |
|CWE-290 ||Authentication Bypass by Spoofing |
|CWE-302 ||Authentication Bypass by Assumed-Immutable Data |
|CWE-346 ||Origin Validation Error |
|CWE-384 ||Session Fixation |
|CWE-539 ||Information Exposure Through Persistent Cookies |
|CWE-602 ||Client-Side Enforcement of Server-Side Security |
|CWE-642 ||External Control of Critical State Data |
|CWE-664 ||Improper Control of a Resource Through its Lifetime |