Reino: Environment

Esta seção contém tudo o que fica fora do código-fonte, porém que é essencial para a segurança do produto que está sendo criado. Como os problemas tratados neste domínio não são diretamente relacionados com o código-fonte, nós o separamos dos demais domínios.

J2EE Misconfiguration: Insufficient Session ID Length

Abstract
Os identificadores de sessão devem ter pelo menos 128 bits para evitar ataques de sessão de adivinhação de força bruta.
Explanation
O descritor de implantação do WebLogic deve especificar um tamanho de identificador de sessão de pelo menos 24 bytes. Um identificador de sessão menor deixa o aplicativo aberto a ataques sessão de adivinhação de força bruta. Se um invasor conseguir adivinhar o identificador de sessão de um usuário autenticado, ele poderá assumir o controle da sessão do usuário. O restante desta explicação detalha uma justificativa no verso do envelope para um identificador de sessão de 24 bytes.

O identificador de sessão é formado por uma seleção pseudoaleatória dos 62 caracteres alfanuméricos, o que significa que, se a string fosse composta de uma forma realmente aleatória, cada byte poderia produzir um máximo de 6 bits de entropia.

O número esperado de segundos necessários para adivinhar um identificador de sessão válido é dado pela equação:

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

Onde:

- B é o número de bits de entropia no identificador de sessão.

- A é o número de suposições que um invasor pode tentar a cada segundo.

- S é o número de identificadores de sessão válidos que são válidos e estão disponíveis para serem adivinhados a qualquer momento.

O número de bits de entropia no identificador de sessão é sempre menor que o número total de bits no identificador de sessão. Por exemplo, se os identificadores de sessão foram fornecidos em ordem crescente, haveria quase zero bits de entropia no identificador de sessão, independentemente do comprimento do identificador. Pressupondo que os identificadores de sessão estão sendo gerados usando uma boa fonte de números aleatórios, estimaremos que o número de bits de entropia em um identificador de sessão seja a metade do número total de bits no identificador de sessão. Para tamanhos de identificador realistas, isso é possível, embora talvez otimista.

Se os invasores usarem um botnet com centenas ou milhares de computadores drones, é razoável supor que eles possam tentar dezenas de milhares de suposições por segundo. Se o site em questão for grande e popular, um alto volume de suposições pode passar despercebido por algum tempo.

Um limite inferior no número de identificadores de sessão válidos que estão disponíveis para serem adivinhados é o número de usuários ativos em um site a qualquer momento. No entanto, qualquer usuário que abandonar suas sessões sem fazer logout aumentará esse número. (Este é um dos muitos bons motivos para ter um tempo limite curto para sessão inativa.)

Com um identificador de sessão de 64 bits, assuma 32 bits de entropia. Para um grande site, suponha que o invasor possa tentar 1.000 suposições por segundo e que haja 10.000 identificadores de sessão válidos a qualquer momento. Dadas essas suposições, o tempo esperado para um invasor adivinhar com êxito um identificador de sessão válido é menos de 4 minutos.

Agora suponha um identificador de sessão de 128 bits que forneça 64 bits de entropia. Com um site muito grande, um invasor pode tentar 10.000 suposições por segundo com 100.000 identificadores de sessão válidos disponíveis para serem adivinhados. Dadas essas suposições, o tempo esperado para um invasor adivinhar com sucesso um identificador de sessão válido é maior que 292 anos.

Trabalhando retroativamente de bits para bytes, agora, o identificador de sessão deve ser 128/6, o que produz aproximadamente 21 bytes. Além disso, o teste empírico demonstrou que os primeiros três bytes do identificador de sessão não parecem ser gerados aleatoriamente, o que significa que, para atingir nossos 64 bits de entropia desejados, precisamos configurar o WebLogic para usar um identificador de sessão de 24 bytes de comprimento.
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