Reino: Environment

Esta sección incluye todo lo que está fuera del código fuente pero aun así es importante para la seguridad del producto que se está creando. Dado que todas las cuestiones incluidas en esta sección no están directamente relacionadas con el código fuente, las hemos separado de las demás secciones.

J2EE Misconfiguration: Insufficient Session ID Length

Abstract
Los identificadores de sesión deben tener al menos 128 bits de longitud para evitar ataques por fuerza bruta para adivinar la sesión.
Explanation
El descriptor de implementación de WebLogic debe especificar una longitud de identificador de sesión de al menos 24 bytes. Un identificador de sesión más corto deja la aplicación abierta a ataques por fuerza bruta para adivinar la sesión. Si un atacante puede adivinar el identificador de sesión de un usuario autenticado, puede controlar la sesión del usuario. El resto de esta explicación detallará una justificación aproximada para un identificador de sesión de 24 bytes.

El identificador de sesión está compuesto por una selección pseudoaleatoria de los 62 caracteres alfanuméricos, lo que significa que si la cadena estuviese compuesta de forma realmente aleatoria, cada byte podría producir un máximo de 6 bits de entropía.

El número esperado de segundos necesarios para adivinar un identificador de sesión válido viene dado por la ecuación:

(2^B+1) / (2*A*S)

Donde:

- B es el número de bits de entropía en el identificador de sesión.

- A es el número de intentos que un atacante puede realizar cada segundo.

- S es el número de identificadores de sesión válidos que son válidos y están disponibles para averiguarse en un momento dado.

El número de bits de entropía en el identificador de sesión es siempre menor que el número total de bits en el identificador de sesión. Por ejemplo, si los identificadores de sesión se proporcionaran en orden ascendente, habría cerca de cero bits de entropía en el identificador de sesión cualquiera que sea la longitud del identificador. Suponiendo que los identificadores de sesión se generan utilizando una buena fuente de números aleatorios, estimaremos que el número de bits de entropía en un identificador de sesión es la mitad del número total de bits del identificador de sesión. Para longitudes de identificador realistas esto es posible, aunque quizás optimista.

Si los atacantes utilizan una botnet con cientos o miles de drones, es razonable suponer que podrían intentar decenas de miles de averiguaciones por segundo. Si el sitio web en cuestión es grande y popular, es posible que una gran cantidad de intentos de adivinar pasen desapercibidos durante algún tiempo.

Un límite inferior en el número de identificadores de sesión válidos que están disponibles para adivinar es el número de usuarios que están activos en un sitio en un momento dado. Sin embargo, cualquier usuario que abandone sus sesiones sin cerrar la sesión aumentará este número. (Esta es una de las muchas buenas razones para tener un tiempo de espera de sesión inactivo breve).

Con un identificador de sesión de 64 bits, suponga 32 bits de entropía. Para un sitio web grande, suponga que el atacante puede intentar adivinar 1 000 veces por segundo y que hay 10 000 identificadores de sesión válidos en un momento dado. Dadas estas suposiciones, el tiempo esperado para que un atacante condiga adivinar un identificador de sesión válido es menos de 4 minutos.

Ahora suponga un identificador de sesión de 128 bits que proporciona 64 bits de entropía. En el caso de un sitio web muy grande, un atacante podría intentar adivinar 10 000 veces por segundo con 100 000 identificadores de sesión válidos disponibles para adivinar. Dadas estas suposiciones, el tiempo esperado para que un atacante consiga adivinar un identificador de sesión válido es superior a 292 años.

Trabajando de manera inversa, de bits a bytes, ahora, el identificador de sesión debe ser 128/6, lo que produce aproximadamente 21 bytes. Además, las pruebas empíricas han demostrado que los primeros tres bytes del identificador de sesión no parecen generarse aleatoriamente, lo que significa que para lograr los 64 bits de entropía deseados debemos configurar WebLogic para usar un identificador de sesión de 24 bytes de longitud.
References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 6
[2] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-001941, CCI-001942
[3] Standards Mapping - FIPS200 IA
[4] Standards Mapping - General Data Protection Regulation (GDPR) Access Violation
[5] Standards Mapping - NIST Special Publication 800-53 Revision 4 IA-2 Identification and Authentication (Organizational Users) (P1), SC-23 Session Authenticity (P1)
[6] Standards Mapping - NIST Special Publication 800-53 Revision 5 IA-2 Identification and Authentication (Organizational Users), SC-23 Session Authenticity
[7] Standards Mapping - OWASP API 2023 API8 Security Misconfiguration
[8] Standards Mapping - OWASP Application Security Verification Standard 4.0 14.1.3 Build (L2 L3)
[9] Standards Mapping - OWASP Mobile 2014 M9 Improper Session Handling
[10] Standards Mapping - OWASP Top 10 2004 A3 Broken Authentication and Session Management
[11] Standards Mapping - OWASP Top 10 2007 A7 Broken Authentication and Session Management
[12] Standards Mapping - OWASP Top 10 2010 A3 Broken Authentication and Session Management
[13] Standards Mapping - OWASP Top 10 2013 A2 Broken Authentication and Session Management
[14] Standards Mapping - OWASP Top 10 2017 A2 Broken Authentication
[15] Standards Mapping - OWASP Top 10 2021 A05 Security Misconfiguration
[16] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 Requirement 6.5.3
[17] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 6.5.7
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 6.5.8
[19] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 6.5.10
[20] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 6.5.10
[21] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 6.5.10
[22] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 6.5.10
[23] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 6.2.4
[24] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0.1 Requirement 6.2.4
[25] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 4.2 - Critical Asset Protection
[26] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 4.2 - Critical Asset Protection
[27] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 4.2 - Critical Asset Protection
[28] Standards Mapping - Security Technical Implementation Guide Version 3.1 APP3405 CAT I
[29] Standards Mapping - Security Technical Implementation Guide Version 3.4 APP3405 CAT I
[30] Standards Mapping - Security Technical Implementation Guide Version 3.5 APP3405 CAT I
[31] Standards Mapping - Security Technical Implementation Guide Version 3.6 APP3405 CAT I
[32] Standards Mapping - Security Technical Implementation Guide Version 3.7 APP3405 CAT I
[33] Standards Mapping - Security Technical Implementation Guide Version 3.9 APP3405 CAT I
[34] Standards Mapping - Security Technical Implementation Guide Version 3.10 APP3405 CAT I
[35] Standards Mapping - Security Technical Implementation Guide Version 4.2 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[36] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[37] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[38] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[39] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[40] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[41] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[42] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[43] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[44] Standards Mapping - Security Technical Implementation Guide Version 4.11 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[45] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[46] Standards Mapping - Security Technical Implementation Guide Version 5.1 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[47] Standards Mapping - Security Technical Implementation Guide Version 5.2 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[48] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[49] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II
[50] Standards Mapping - Security Technical Implementation Guide Version 6.2 APSC-DV-001620 CAT II, APSC-DV-001630 CAT II, APSC-DV-002290 CAT II
[51] Standards Mapping - Web Application Security Consortium Version 2.00 Insufficient Authentication (WASC-01)
[52] Standards Mapping - Web Application Security Consortium 24 + 2 Insufficient Authentication
desc.config.java.j2ee_misconfiguration_insufficient_session_id_length