界: Environment
本節包括原始程式碼之外的所有內容,但對於建立中產品的安全性仍至關重要。由於此領域所涵蓋的問題與原始程式碼沒有直接關係,因此我們將其與其他領域分開。
J2EE Misconfiguration: Insufficient Session ID Length
Abstract
工作階段識別碼的長度至少要有 128 位元,以避免暴力破解攻擊。
Explanation
WebLogic 部署描述符號至少應該指定長度 24 位元組的工作階段識別碼。長度較短的工作階段識別碼會使應用程式暴露於暴力破解的攻擊下。如果攻擊者可以猜測出驗證使用者的工作階段識別碼,他就能夠控制使用者的工作階段。以下的解釋將詳細說明 24 位元組工作階段識別碼的合理性。
階段作業識別碼是由 62 個英數字元所組成的虛擬隨機亂數,這表示,如果字串真的是隨機組成的,則每個位元組最高能產生 6 位元的複雜度。
以下方程式提供猜測有效的工作階段識別碼所需的秒數:
(2^B+1) / (2*A*S)
其中:
- B 是工作階段識別碼中複雜度 (entropy) 的位元數。
- A 表示攻擊者每秒可能嘗試猜測的次數。
- S 是指在任何時間內可供猜測的有效工作階段識別碼數目。
工作階段識別碼中的複雜度 (entropy) 位元數比工作階段識別碼的總位元數要少。例如,如果以遞增的次序提供工作階段識別碼,則不管識別碼的長度如何,在工作階段識別碼中會有接近於 0 位元的複雜度 (entropy)。假設工作階段識別碼是使用好的隨機數字來源所產生,我們估算工作階段識別碼中複雜度 (entropy) 的位元數將是總工作階段識別碼位元數的一半。以樂觀態度來看,有可能存在此長度的識別碼。
如果攻擊者使用成千上百個受感染的電腦組成的僵屍電腦網路 (botnet),那麼他們可進行每秒幾萬次的猜測。如果此問題網站很大而且很多人點閱,有時可能會忽略其大量的猜測行為。
可供猜測的有效工作階段識別碼數量的較低界線為,在任何時間內於網站上活動的使用者數量。不過,任何沒有登出就離開工作階段的使用者將會使此數目增加。(這就是為什麼要將未活動工作階段逾時時間設短一點的原因之一。)
使用 64 位元的工作階段識別碼,假設會有 32 位元的複雜度。對於大型網站,假設攻擊者每秒可能嘗試猜測 1000 次,並且在任何給定時間有 10000 個有效的工作階段識別碼。根據這些假設,攻擊者成功猜到有效的工作階段識別碼的預估時間大約在 4 分鐘以內。
現在假設使用 128 位元的工作階段識別碼,提供 64 位元的複雜度。對於超大型網站,攻擊者在 100000 個可猜測的有效工作階段識別碼中可以嘗試每秒 10000 次的猜測。根據這些假設,攻擊者成功猜到有效的工作階段識別碼的預估時間將超過 292 年。
將位元換成位元組,則工作階段識別碼為 128/6,大約產生 21 個位元組。此外,實驗顯示,工作階段識別碼的前三個位元組不是隨機產生的,這表示要達到想要的 64 位元的複雜度 (entropy),我們需要將 WebLogic 設定為使用長度為 24 位元組的工作階段識別碼。
階段作業識別碼是由 62 個英數字元所組成的虛擬隨機亂數,這表示,如果字串真的是隨機組成的,則每個位元組最高能產生 6 位元的複雜度。
以下方程式提供猜測有效的工作階段識別碼所需的秒數:
(2^B+1) / (2*A*S)
其中:
- B 是工作階段識別碼中複雜度 (entropy) 的位元數。
- A 表示攻擊者每秒可能嘗試猜測的次數。
- S 是指在任何時間內可供猜測的有效工作階段識別碼數目。
工作階段識別碼中的複雜度 (entropy) 位元數比工作階段識別碼的總位元數要少。例如,如果以遞增的次序提供工作階段識別碼,則不管識別碼的長度如何,在工作階段識別碼中會有接近於 0 位元的複雜度 (entropy)。假設工作階段識別碼是使用好的隨機數字來源所產生,我們估算工作階段識別碼中複雜度 (entropy) 的位元數將是總工作階段識別碼位元數的一半。以樂觀態度來看,有可能存在此長度的識別碼。
如果攻擊者使用成千上百個受感染的電腦組成的僵屍電腦網路 (botnet),那麼他們可進行每秒幾萬次的猜測。如果此問題網站很大而且很多人點閱,有時可能會忽略其大量的猜測行為。
可供猜測的有效工作階段識別碼數量的較低界線為,在任何時間內於網站上活動的使用者數量。不過,任何沒有登出就離開工作階段的使用者將會使此數目增加。(這就是為什麼要將未活動工作階段逾時時間設短一點的原因之一。)
使用 64 位元的工作階段識別碼,假設會有 32 位元的複雜度。對於大型網站,假設攻擊者每秒可能嘗試猜測 1000 次,並且在任何給定時間有 10000 個有效的工作階段識別碼。根據這些假設,攻擊者成功猜到有效的工作階段識別碼的預估時間大約在 4 分鐘以內。
現在假設使用 128 位元的工作階段識別碼,提供 64 位元的複雜度。對於超大型網站,攻擊者在 100000 個可猜測的有效工作階段識別碼中可以嘗試每秒 10000 次的猜測。根據這些假設,攻擊者成功猜到有效的工作階段識別碼的預估時間將超過 292 年。
將位元換成位元組,則工作階段識別碼為 128/6,大約產生 21 個位元組。此外,實驗顯示,工作階段識別碼的前三個位元組不是隨機產生的,這表示要達到想要的 64 位元的複雜度 (entropy),我們需要將 WebLogic 設定為使用長度為 24 位元組的工作階段識別碼。
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