Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/run-end-to-end.yml
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,9 @@ jobs:
- name: Run APPSEC_LAMBDA_API_SECURITY scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_LAMBDA_API_SECURITY"')
run: ./run.sh APPSEC_LAMBDA_API_SECURITY
- name: Run APPSEC_LAMBDA_RASP scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"APPSEC_LAMBDA_RASP"')
run: ./run.sh APPSEC_LAMBDA_RASP
- name: Run EXTERNAL_PROCESSING scenario
if: always() && steps.build.outcome == 'success' && contains(inputs.scenarios, '"EXTERNAL_PROCESSING"')
run: ./run.sh EXTERNAL_PROCESSING
Expand Down
80 changes: 80 additions & 0 deletions manifests/python_lambda.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,84 @@ tests/:
alb: missing_feature
alb-multi: missing_feature
function-url: missing_feature
rasp/:
test_api10.py:
Test_API10_all: v8.117.0.dev
Test_API10_request_body: v8.117.0.dev
Test_API10_request_headers: v8.117.0.dev
Test_API10_request_method: v8.117.0.dev
Test_API10_response_body: v8.117.0.dev
Test_API10_response_headers: v8.117.0.dev
Test_API10_response_status: v8.117.0.dev
test_cmdi.py:
Test_Cmdi_BodyJson: v8.117.0.dev
Test_Cmdi_BodyUrlEncoded: v8.117.0.dev
Test_Cmdi_BodyXml: v8.117.0.dev
Test_Cmdi_Capability: v8.117.0.dev
Test_Cmdi_Mandatory_SpanTags: v8.117.0.dev
Test_Cmdi_Optional_SpanTags: v8.117.0.dev
Test_Cmdi_Rules_Version: v8.117.0.dev
Test_Cmdi_StackTrace: v8.117.0.dev
Test_Cmdi_Telemetry: missing_feature (telemetry is not available in Lambda yet)
Test_Cmdi_Telemetry_V2: missing_feature (telemetry is not available in Lambda yet)
Test_Cmdi_Telemetry_Variant_Tag: missing_feature (telemetry is not available in Lambda yet)
Test_Cmdi_UrlQuery: v8.117.0.dev
Test_Cmdi_Waf_Version: v8.117.0.dev
test_lfi.py:
Test_Lfi_BodyJson: v8.117.0.dev
Test_Lfi_BodyUrlEncoded: v8.117.0.dev
Test_Lfi_BodyXml: v8.117.0.dev
Test_Lfi_Capability: v8.117.0.dev
Test_Lfi_Mandatory_SpanTags: v8.117.0.dev
Test_Lfi_Optional_SpanTags: v8.117.0.dev
Test_Lfi_RC_CustomAction: v8.117.0.dev
Test_Lfi_Rules_Version: v8.117.0.dev
Test_Lfi_StackTrace: v8.117.0.dev
Test_Lfi_Telemetry: missing_feature (telemetry is not available in Lambda yet)
Test_Lfi_Telemetry_Multiple_Exploits: missing_feature (telemetry is not available in Lambda yet)
Test_Lfi_Telemetry_V2: missing_feature (telemetry is not available in Lambda yet)
Test_Lfi_UrlQuery: v8.117.0.dev
Test_Lfi_Waf_Version: v8.117.0.dev
test_shi.py:
Test_Shi_BodyJson: v8.117.0.dev
Test_Shi_BodyUrlEncoded: v8.117.0.dev
Test_Shi_BodyXml: v8.117.0.dev
Test_Shi_Capability: v8.117.0.dev
Test_Shi_Mandatory_SpanTags: v8.117.0.dev
Test_Shi_Optional_SpanTags: v8.117.0.dev
Test_Shi_Rules_Version: v8.117.0.dev
Test_Shi_StackTrace: v8.117.0.dev
Test_Shi_Telemetry: missing_feature (telemetry is not available in Lambda yet)
Test_Shi_Telemetry_V2: missing_feature (telemetry is not available in Lambda yet)
Test_Shi_Telemetry_Variant_Tag: missing_feature (telemetry is not available in Lambda yet)
Test_Shi_UrlQuery: v8.117.0.dev
Test_Shi_Waf_Version: v8.117.0.dev
test_sqli.py:
Test_Sqli_BodyJson: v8.117.0.dev
Test_Sqli_BodyUrlEncoded: v8.117.0.dev
Test_Sqli_BodyXml: v8.117.0.dev
Test_Sqli_Capability: v8.117.0.dev
Test_Sqli_Mandatory_SpanTags: v8.117.0.dev
Test_Sqli_Optional_SpanTags: v8.117.0.dev
Test_Sqli_Rules_Version: v8.117.0.dev
Test_Sqli_StackTrace: v8.117.0.dev
Test_Sqli_Telemetry: missing_feature (telemetry is not available in Lambda yet)
Test_Sqli_Telemetry_V2: missing_feature (telemetry is not available in Lambda yet)
Test_Sqli_UrlQuery: v8.117.0.dev
Test_Sqli_Waf_Version: v8.117.0.dev
test_ssrf.py:
Test_Ssrf_BodyJson: v8.117.0.dev
Test_Ssrf_BodyUrlEncoded: v8.117.0.dev
Test_Ssrf_BodyXml: v8.117.0.dev
Test_Ssrf_Capability: v8.117.0.dev
Test_Ssrf_Mandatory_SpanTags: v8.117.0.dev
Test_Ssrf_Optional_SpanTags: v8.117.0.dev
Test_Ssrf_Rules_Version: v8.117.0.dev
Test_Ssrf_StackTrace: v8.117.0.dev
Test_Ssrf_Telemetry: missing_feature (telemetry is not available in Lambda yet)
Test_Ssrf_Telemetry_V2: missing_feature (telemetry is not available in Lambda yet)
Test_Ssrf_UrlQuery: v8.117.0.dev
Test_Ssrf_Waf_Version: v8.117.0.dev
waf/:
test_blocking.py:
Test_Blocking:
Expand Down Expand Up @@ -114,6 +192,8 @@ tests/:
alb-multi: v8.114.0.dev
test_conf.py:
Test_ConfigurationVariables_New_Obfuscation: v8.113.0
test_extended_request_body_collection.py:
Test_ExtendedRequestBodyCollection: missing_feature
test_fingerprinting.py:
Test_Fingerprinting_Endpoint_Preprocessor:
"*": v8.113.0
Expand Down
7 changes: 7 additions & 0 deletions tests/appsec/rasp/test_api10.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ def validate_metric(self, span):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.api10
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_API10_request_headers(API10):
"""API 10 for request headers"""
Expand All @@ -80,6 +81,7 @@ def test_api10_req_headers(self):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.api10
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_API10_request_method(API10):
"""API 10 for request method"""
Expand All @@ -100,6 +102,7 @@ def test_api10_req_method(self):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.api10
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_API10_request_body(API10):
"""API 10 for request body"""
Expand All @@ -123,6 +126,7 @@ def test_api10_req_body(self):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.api10
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_API10_response_status(API10):
"""API 10 for response status"""
Expand All @@ -144,6 +148,7 @@ def test_api10_res_status(self):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.api10
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_API10_response_headers(API10):
"""API 10 for response headers."""
Expand All @@ -165,6 +170,7 @@ def test_api10_res_headers(self):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.api10
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_API10_response_body(API10):
"""API 10 for response body."""
Expand All @@ -188,6 +194,7 @@ def test_api10_res_body(self):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.api10
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_API10_all(API10):
"""API 10 for all addresses at the same time."""
Expand Down
10 changes: 10 additions & 0 deletions tests/appsec/rasp/test_cmdi.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
@rfc("https://docs.google.com/document/d/1DDWy3frMXDTAbk-BfnZ1FdRwuPx6Pl7AWyR4zjqRFZw")
@features.rasp_command_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Cmdi_UrlQuery:
"""Command Injection through query parameters"""
Expand Down Expand Up @@ -47,6 +48,7 @@ def test_cmdi_get(self):
@rfc("https://docs.google.com/document/d/1DDWy3frMXDTAbk-BfnZ1FdRwuPx6Pl7AWyR4zjqRFZw")
@features.rasp_command_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Cmdi_BodyUrlEncoded:
"""Command Injection through a url-encoded body parameter"""
Expand Down Expand Up @@ -76,6 +78,7 @@ def test_cmdi_post_urlencoded(self):
@rfc("https://docs.google.com/document/d/1DDWy3frMXDTAbk-BfnZ1FdRwuPx6Pl7AWyR4zjqRFZw")
@features.rasp_command_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Cmdi_BodyXml:
"""Command Injection through an xml body parameter"""
Expand All @@ -102,6 +105,7 @@ def test_cmdi_post_xml(self):
@rfc("https://docs.google.com/document/d/1DDWy3frMXDTAbk-BfnZ1FdRwuPx6Pl7AWyR4zjqRFZw")
@features.rasp_command_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Cmdi_BodyJson:
"""Command Injection through a json body parameter"""
Expand Down Expand Up @@ -133,6 +137,7 @@ def test_cmdi_post_json(self):
@features.rasp_span_tags
@features.rasp_command_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Cmdi_Mandatory_SpanTags:
"""Validate span tag generation on exploit attempts"""
Expand All @@ -148,6 +153,7 @@ def test_cmdi_span_tags(self):
@features.rasp_span_tags
@features.rasp_command_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Cmdi_Optional_SpanTags:
"""Validate span tag generation on exploit attempts"""
Expand All @@ -163,6 +169,7 @@ def test_cmdi_span_tags(self):
@features.rasp_stack_trace
@features.rasp_command_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Cmdi_StackTrace:
"""Validate stack trace generation on exploit attempts"""
Expand All @@ -177,6 +184,7 @@ def test_cmdi_stack_trace(self):
@rfc("https://docs.google.com/document/d/1DDWy3frMXDTAbk-BfnZ1FdRwuPx6Pl7AWyR4zjqRFZw")
@features.rasp_command_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Cmdi_Telemetry:
"""Validate Telemetry data on exploit attempts"""
Expand All @@ -201,6 +209,7 @@ def test_cmdi_telemetry(self):
@rfc("https://docs.google.com/document/d/1D4hkC0jwwUyeo0hEQgyKP54kM1LZU98GL8MaP60tQrA")
@features.rasp_command_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Cmdi_Telemetry_V2:
"""Validate Telemetry data on exploit attempts"""
Expand Down Expand Up @@ -229,6 +238,7 @@ def test_cmdi_telemetry(self):
@rfc("https://docs.google.com/document/d/1DDWy3frMXDTAbk-BfnZ1FdRwuPx6Pl7AWyR4zjqRFZw")
@features.rasp_command_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Cmdi_Telemetry_Variant_Tag:
"""Validate Telemetry data variant tag on exploit attempts"""
Expand Down
9 changes: 9 additions & 0 deletions tests/appsec/rasp/test_lfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
@rfc("https://docs.google.com/document/d/1vmMqpl8STDk7rJnd3YBsa6O9hCls_XHHdsodD61zr_4/edit#heading=h.3nydvvu7sn93")
@features.rasp_local_file_inclusion
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Lfi_UrlQuery:
"""Local file inclusion through query parameters"""
Expand All @@ -43,6 +44,7 @@ def test_lfi_get(self):
@rfc("https://docs.google.com/document/d/1vmMqpl8STDk7rJnd3YBsa6O9hCls_XHHdsodD61zr_4/edit#heading=h.3nydvvu7sn93")
@features.rasp_local_file_inclusion
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Lfi_BodyUrlEncoded:
"""Local file inclusion through a url-encoded body parameter"""
Expand All @@ -66,6 +68,7 @@ def test_lfi_post_urlencoded(self):
@rfc("https://docs.google.com/document/d/1vmMqpl8STDk7rJnd3YBsa6O9hCls_XHHdsodD61zr_4/edit#heading=h.3nydvvu7sn93")
@features.rasp_local_file_inclusion
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Lfi_BodyXml:
"""Local file inclusion through an xml body parameter"""
Expand All @@ -90,6 +93,7 @@ def test_lfi_post_xml(self):
@rfc("https://docs.google.com/document/d/1vmMqpl8STDk7rJnd3YBsa6O9hCls_XHHdsodD61zr_4/edit#heading=h.3nydvvu7sn93")
@features.rasp_local_file_inclusion
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Lfi_BodyJson:
"""Local file inclusion through a json body parameter"""
Expand All @@ -115,6 +119,7 @@ def test_lfi_post_json(self):
@features.rasp_span_tags
@features.rasp_local_file_inclusion
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Lfi_Mandatory_SpanTags:
"""Validate span tag generation on exploit attempts"""
Expand All @@ -130,6 +135,7 @@ def test_lfi_span_tags(self):
@features.rasp_span_tags
@features.rasp_local_file_inclusion
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Lfi_Optional_SpanTags:
"""Validate span tag generation on exploit attempts"""
Expand Down Expand Up @@ -162,6 +168,7 @@ def test_rasp_match_tag(self):
@features.rasp_stack_trace
@features.rasp_local_file_inclusion
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Lfi_StackTrace:
"""Validate stack trace generation on exploit attempts"""
Expand All @@ -176,6 +183,7 @@ def test_lfi_stack_trace(self):
@rfc("https://docs.google.com/document/d/1vmMqpl8STDk7rJnd3YBsa6O9hCls_XHHdsodD61zr_4/edit#heading=h.96mezjnqf46y")
@features.rasp_local_file_inclusion
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Lfi_Telemetry:
"""Validate Telemetry data on exploit attempts"""
Expand All @@ -200,6 +208,7 @@ def test_lfi_telemetry(self):
@rfc("https://docs.google.com/document/d/1D4hkC0jwwUyeo0hEQgyKP54kM1LZU98GL8MaP60tQrA")
@features.rasp_local_file_inclusion
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Lfi_Telemetry_V2:
"""Validate Telemetry data on exploit attempts"""
Expand Down
10 changes: 10 additions & 0 deletions tests/appsec/rasp/test_shi.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ def get_shell_value(self):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.rasp_shell_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Shi_UrlQuery(Test_Shi_Base):
"""Shell Injection through query parameters"""
Expand All @@ -50,6 +51,7 @@ def test_shi_get(self):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.rasp_shell_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Shi_BodyUrlEncoded(Test_Shi_Base):
"""Shell Injection through a url-encoded body parameter"""
Expand All @@ -73,6 +75,7 @@ def test_shi_post_urlencoded(self):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.rasp_shell_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Shi_BodyXml(Test_Shi_Base):
"""Shell Injection through an xml body parameter"""
Expand All @@ -97,6 +100,7 @@ def test_shi_post_xml(self):
@rfc("https://docs.google.com/document/d/1gCXU3LvTH9en3Bww0AC2coSJWz1m7HcavZjvMLuDCWg/edit#heading=h.giijrtyn1fdx")
@features.rasp_shell_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Shi_BodyJson(Test_Shi_Base):
"""Shell Injection through a json body parameter"""
Expand All @@ -122,6 +126,7 @@ def test_shi_post_json(self):
@features.rasp_span_tags
@features.rasp_shell_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Shi_Mandatory_SpanTags:
"""Validate span tag generation on exploit attempts"""
Expand All @@ -137,6 +142,7 @@ def test_shi_span_tags(self):
@features.rasp_span_tags
@features.rasp_shell_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Shi_Optional_SpanTags:
"""Validate span tag generation on exploit attempts"""
Expand All @@ -152,6 +158,7 @@ def test_shi_span_tags(self):
@features.rasp_stack_trace
@features.rasp_shell_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Shi_StackTrace:
"""Validate stack trace generation on exploit attempts"""
Expand All @@ -166,6 +173,7 @@ def test_shi_stack_trace(self):
@rfc("https://docs.google.com/document/d/1vmMqpl8STDk7rJnd3YBsa6O9hCls_XHHdsodD61zr_4/edit#heading=h.96mezjnqf46y")
@features.rasp_shell_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Shi_Telemetry:
"""Validate Telemetry data on exploit attempts"""
Expand All @@ -190,6 +198,7 @@ def test_shi_telemetry(self):
@rfc("https://docs.google.com/document/d/1D4hkC0jwwUyeo0hEQgyKP54kM1LZU98GL8MaP60tQrA")
@features.rasp_shell_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Shi_Telemetry_V2:
"""Validate Telemetry data on exploit attempts"""
Expand All @@ -216,6 +225,7 @@ def test_shi_telemetry(self):
@rfc("https://docs.google.com/document/d/1DDWy3frMXDTAbk-BfnZ1FdRwuPx6Pl7AWyR4zjqRFZw")
@features.rasp_shell_injection
@scenarios.appsec_rasp
@scenarios.appsec_lambda_rasp
@scenarios.appsec_standalone_rasp
class Test_Shi_Telemetry_Variant_Tag:
"""Validate Telemetry data variant tag on exploit attempts"""
Expand Down
Loading
Loading