界: Input Validation and Representation
入力の検証や表現の問題は、メタキャラクター、代替エンコーディング、数値表現などによって引き起こされます。セキュリティの問題は、入力を信頼することに起因します。この問題に含まれるのは、「Buffer Overflow」、「Cross-Site Scripting」攻撃、「SQL Injection」などです。
Same-Origin Method Execution
Abstract
アプリケーションは、ユーザーによって制御可能なパラメーターをブラウザーによって実行される JavaScript コールバック関数として反映するので、攻撃者は同じエンドポイントのドメイン上の任意のページで、任意の JavaScript 関数を実行できます。
Explanation
アプリケーションは、攻撃者の制御下にあるパラメーターを、ブラウザーが実行する JavaScript 関数の名前として使用します。 攻撃者は、最初に同じアプリケーションのドメイン上でターゲット ページをフレーム化し、次にターゲット ページ上で任意の JavaScript 関数を実行するために脆弱なページを参照する、悪意のあるサイトを作成する可能性があります。 悪用について大きな制限がいくつかありますが、この攻撃の影響は、Cross-Site Scripting の影響と似ています。 コールバック名として英数字とドット文字を使用できれば、攻撃者はページの要素を参照して操作することができます。
例 1: 次のコードは、コールバック関数名をユーザーが制御できる JSONP レスポンスを構成します。
攻撃者は JSONP エンドポイントからのレスポンスをロードするために JavaScript の
例 1: 次のコードは、コールバック関数名をユーザーが制御できる JSONP レスポンスを構成します。
@ControllerAdvice
public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
public JsonpAdvice() {
super("callback");
}
}
GET /api/latest.json?callback=myCallbackFunction
などのリクエストの場合、コントローラー メソッドは、次のようなレスポンスを生成します。
HTTP/1.1 200 Ok
Content-Type: application/json; charset=utf-8
Date: Tue, 12 Dec 2017 16:16:04 GMT
Server: nginx/1.12.1
Content-Length: 225
Connection: Close
myCallbackFunction({<json>})
攻撃者は JSONP エンドポイントからのレスポンスをロードするために JavaScript の
Script
タグを使用することができ、その結果、myCallbackFunction
関数が実行されます。 攻撃者は、異なるコールバック名を使用して DOM を参照し、操作する可能性があります。 たとえば opener.document.body.someElemnt.firstChild.nextElementSibling.submit
を使用してターゲット ページにフォームを配置し、送信することができます。References
[1] Ben Hayak Same Origin Method Execution (SOME)
[2] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-001310
[3] Standards Mapping - NIST Special Publication 800-53 Revision 4 SI-10 Information Input Validation (P1)
[4] Standards Mapping - NIST Special Publication 800-53 Revision 5 SI-10 Information Input Validation
[5] Standards Mapping - OWASP Mobile 2024 M4 Insufficient Input/Output Validation
[6] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control
[7] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation
[8] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation, Control Objective C.3.2 - Web Software Attack Mitigation
[9] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-002530 CAT II
[10] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-002530 CAT II
desc.semantic.java.same_origin_method_execution
Abstract
アプリケーションは、ユーザーによって制御可能なパラメーターをブラウザーによって実行される JavaScript コールバック関数として反映するので、攻撃者は同じエンドポイントのドメイン上の任意のページで、任意の JavaScript 関数を実行できます。
Explanation
アプリケーションは、攻撃者の制御下にあるパラメーターを、ブラウザーが実行する JavaScript 関数の名前として使用します。 攻撃者は、最初に同じアプリケーションのドメイン上でターゲット ページをフレーム化し、次にターゲット ページ上で任意の JavaScript 関数を実行するために脆弱なページを参照する、悪意のあるサイトを作成する可能性があります。 悪用について大きな制限がいくつかありますが、この攻撃の影響は、Cross-Site Scripting の影響と似ています。 コールバック名として英数字とドット文字を使用できれば、攻撃者はページの要素を参照して操作することができます。
例 1: 次のコードは、コールバック関数名をユーザーが制御できる JSONP レスポンスを構成します。
攻撃者は JSONP エンドポイントからのレスポンスをロードするために JavaScript の
例 1: 次のコードは、コールバック関数名をユーザーが制御できる JSONP レスポンスを構成します。
def myJSONPService(callback: String) = Action {
val json = getJSONToBeReturned()
Ok(Jsonp(callback, json))
}
GET /api/latest.json?callback=myCallbackFunction
などのリクエストの場合、Example 1
のコントローラー メソッドは、次のようなレスポンスを生成します。
HTTP/1.1 200 Ok
Content-Type: application/json; charset=utf-8
Date: Tue, 12 Dec 2017 16:16:04 GMT
Server: nginx/1.12.1
Content-Length: 225
Connection: Close
myCallbackFunction({<json>})
攻撃者は JSONP エンドポイントからのレスポンスをロードするために JavaScript の
Script
タグを使用することができ、その結果、myCallbackFunction
関数が実行されます。 攻撃者は、異なるコールバック名を使用して DOM を参照し、操作する可能性があります。 たとえば opener.document.body.someElemnt.firstChild.nextElementSibling.submit
を使用してターゲット ページにフォームを配置し、送信することができます。References
[1] Ben Hayak Same Origin Method Execution (SOME)
[2] Standards Mapping - DISA Control Correlation Identifier Version 2 CCI-001310
[3] Standards Mapping - NIST Special Publication 800-53 Revision 4 SI-10 Information Input Validation (P1)
[4] Standards Mapping - NIST Special Publication 800-53 Revision 5 SI-10 Information Input Validation
[5] Standards Mapping - OWASP Mobile 2024 M4 Insufficient Input/Output Validation
[6] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control
[7] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation
[8] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 4.2 - Critical Asset Protection, Control Objective 5.4 - Authentication and Access Control, Control Objective B.3.1 - Terminal Software Attack Mitigation, Control Objective B.3.1.1 - Terminal Software Attack Mitigation, Control Objective C.3.2 - Web Software Attack Mitigation
[9] Standards Mapping - Security Technical Implementation Guide Version 5.3 APSC-DV-002530 CAT II
[10] Standards Mapping - Security Technical Implementation Guide Version 6.1 APSC-DV-002530 CAT II
desc.dataflow.scala.same_origin_method_execution