界: Security Features

Software security is not security software. Here we're concerned with topics like authentication, access control, confidentiality, cryptography, and privilege management.

HTTP Verb Tampering

Abstract
HTTP 動詞を指定するセキュリティ制約は多くの場合、意図していたよりも多くのアクセスを許可します。
Explanation
次のような場合、HTTP 動詞の改ざんはアプリケーションの Authentication メカニズムおよび権限メカニズムを回避できます。
1) HTTP 動詞を一覧表示するセキュリティ制御が使用されている。
2) セキュリティ制御が、一覧表示に含まれていない動詞をブロックできない。
3) GET リクエストまたはその他の HTTP 動詞に基づいてアプリケーションが状態を更新する。



Java EE 実装の多くでは、設定で明示的に一覧表示されていない HTTP メソッドが使用できます。たとえば、次のセキュリティ制約は HTTP GET メソッドには適用されますが、それ以外の HTTP 動詞には適用されません。


<security-constraint>
<display-name>Admin Constraint</display-name>
<web-resource-collection>
<web-resource-name>Admin Area</web-resource-name>
<url-pattern>/pages/index.jsp</url-pattern>
<url-pattern>/admin/*.do</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description>only admin</description>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>


HEAD などの動詞はこの設定の <http-method> タグで明示的に定義されていないため、GET または POST リクエストを HEAD リクエストと置き換えることによって、管理者が実行する機能を実行できる可能性があります。HEAD リクエストによって管理者機能を実行するためには、第 3 の条件 (アプリケーションが POST 以外の動詞に基づいてコマンドを実行する必要がある) を満たしている必要があります。一部の Web/アプリケーションサーバーは、標準以外の任意の HTTP 動詞を受け入れ、GET リクエストが送信されたときと同じようにレスポンスします。その場合、攻撃者はリクエストに任意の動詞を含めることによって、管理者ページを表示できる可能性があります。

たとえば、クライアントの GET リクエストは通常次のようになります。

GET /admin/viewUsers.do HTTP/1.1
Host: www.example.com


HTTP 動詞改ざん攻撃では、GET が FOO などに置き換えられます。

FOO /admin/viewUsers.do HTTP/1.1
Host: www.example.com


根本的に、この脆弱性はブラックリストの作成を試みた結果として発生するものです。ブラックリストとはユーザーが実行してはならない操作を定義したポリシーですが、意図した効果が得られることはほとんどありません。
References
[1] Arshan Dabirsiaghi - Aspect Security Bypassing Web Authentication and Authorization with HTTP Verb Tampering
[2] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.7.1 Out of Band Verifier Requirements, 2.7.2 Out of Band Verifier Requirements, 2.7.3 Out of Band Verifier Requirements, 2.8.4 Single or Multi Factor One Time Verifier Requirements, 2.8.5 Single or Multi Factor One Time Verifier Requirements, 3.7.1 Defenses Against Session Management Exploits, 9.2.3 Server Communications Security Requirements
[3] Standards Mapping - Common Weakness Enumeration CWE ID 288, CWE ID 302
[4] Standards Mapping - Common Weakness Enumeration Top 25 2019 [13] CWE ID 287
[5] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-000213, CCI-002165
[6] Standards Mapping - FIPS200 CM
[7] Standards Mapping - General Data Protection Regulation (GDPR) Access Violation
[8] Standards Mapping - NIST Special Publication 800-53 Revision 4 AC-3 Access Enforcement (P1)
[9] Standards Mapping - OWASP Top 10 2004 A10 Insecure Configuration Management
[10] Standards Mapping - OWASP Top 10 2010 A6 Security Misconfiguration
[11] Standards Mapping - OWASP Top 10 2013 A5 Security Misconfiguration
[12] Standards Mapping - OWASP Top 10 2017 A6 Security Misconfiguration
[13] Standards Mapping - OWASP Mobile 2014 M1 Weak Server Side Controls
[14] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 Requirement 6.5.10
[15] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 6.5.10
[16] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 6.5.10
[17] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 6.5.10
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 6.5.10
[19] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 5.4 - Authentication and Access Control
[20] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[21] Standards Mapping - Security Technical Implementation Guide Version 4.2 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[22] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[23] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[24] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[25] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[26] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[27] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[28] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[29] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[30] Standards Mapping - Web Application Security Consortium 24 + 2 Insufficient Authentication
[31] Standards Mapping - Web Application Security Consortium Version 2.00 Application Misconfiguration (WASC-15)
desc.config.java.http_verb_tampering
Abstract
HTTP 動詞を指定するセキュリティ制約は多くの場合、意図していたよりも多くのアクセスを許可します。
Explanation
次のような場合、HTTP 動詞の改ざんはアプリケーションの Authentication メカニズムおよび権限メカニズムを回避できます。
1) HTTP 動詞を一覧表示するセキュリティ制御が使用されている。
2) セキュリティ制御が、一覧表示に含まれていない動詞をブロックできない。
3) GET リクエストまたはその他の HTTP 動詞に基づいてアプリケーションが状態を更新する。



次の設定は、HTTP 動詞改ざん攻撃に対して脆弱です。

<authorization>
<allow verbs="GET,POST" users="admin"/>
<deny verbs="GET,POST"users="*" />
</authorization>

デフォルトではすべての HTTP 動詞を .NET フレームワークで使用できます。そのため、この設定で全ユーザーに対する GET および POST を拒否していても、HEAD リクエストは阻止できません。攻撃者は GET または POST リクエストを HEAD リクエストと置き換えることによって、管理者機能を実行できる可能性があります。つまり、このコードは前述の第 1 および第 2 の条件を満たしています。あと、HEAD リクエストが管理者機能を実行するのに必要なのは、アプリケーションが POST 以外の動詞を使用するリクエストに基づいてコマンドを実行することだけです。

根本的に、この脆弱性はブラックリストの作成を試みた結果として発生するものです。ブラックリストとはユーザーが実行してはならない操作を定義したポリシーですが、意図した効果が得られることはほとんどありません。
References
[1] Arshan Dabirsiaghi - Aspect Security Bypassing Web Authentication and Authorization with HTTP Verb Tampering
[2] Standards Mapping - OWASP Application Security Verification Standard 4.0 2.7.1 Out of Band Verifier Requirements, 2.7.2 Out of Band Verifier Requirements, 2.7.3 Out of Band Verifier Requirements, 2.8.4 Single or Multi Factor One Time Verifier Requirements, 2.8.5 Single or Multi Factor One Time Verifier Requirements, 3.7.1 Defenses Against Session Management Exploits, 9.2.3 Server Communications Security Requirements
[3] Standards Mapping - Common Weakness Enumeration CWE ID 288, CWE ID 302
[4] Standards Mapping - Common Weakness Enumeration Top 25 2019 [13] CWE ID 287
[5] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-000213, CCI-002165
[6] Standards Mapping - FIPS200 CM
[7] Standards Mapping - General Data Protection Regulation (GDPR) Access Violation
[8] Standards Mapping - NIST Special Publication 800-53 Revision 4 AC-3 Access Enforcement (P1)
[9] Standards Mapping - OWASP Top 10 2004 A10 Insecure Configuration Management
[10] Standards Mapping - OWASP Top 10 2010 A6 Security Misconfiguration
[11] Standards Mapping - OWASP Top 10 2013 A5 Security Misconfiguration
[12] Standards Mapping - OWASP Top 10 2017 A6 Security Misconfiguration
[13] Standards Mapping - OWASP Mobile 2014 M1 Weak Server Side Controls
[14] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 Requirement 6.5.10
[15] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 6.5.10
[16] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 6.5.10
[17] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 6.5.10
[18] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 6.5.10
[19] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 5.4 - Authentication and Access Control
[20] Standards Mapping - Security Technical Implementation Guide Version 4.1 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[21] Standards Mapping - Security Technical Implementation Guide Version 4.2 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[22] Standards Mapping - Security Technical Implementation Guide Version 4.3 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[23] Standards Mapping - Security Technical Implementation Guide Version 4.4 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[24] Standards Mapping - Security Technical Implementation Guide Version 4.5 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[25] Standards Mapping - Security Technical Implementation Guide Version 4.6 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[26] Standards Mapping - Security Technical Implementation Guide Version 4.7 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[27] Standards Mapping - Security Technical Implementation Guide Version 4.8 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[28] Standards Mapping - Security Technical Implementation Guide Version 4.9 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[29] Standards Mapping - Security Technical Implementation Guide Version 4.10 APSC-DV-000460 CAT I, APSC-DV-000470 CAT II
[30] Standards Mapping - Web Application Security Consortium 24 + 2 Insufficient Authentication
[31] Standards Mapping - Web Application Security Consortium Version 2.00 Application Misconfiguration (WASC-15)
desc.config.dotnet.http_verb_tampering