Skip to content

SecAuditEngine not working as expected #297

Open
@sfc-gh-abhala

Description

@sfc-gh-abhala

Hi team, I have been trying to use coraza-proxy-wasm as part of our filter chain for envoy. I am using the version 0.5.0 , however I am not able to configure Audit Logs related ModSecurity directives properly. I am using the following configuration:
{ "plugin_config": { "directives_map": { "default": [ "SecRuleEngine DetectionOnly", "SecDebugLogLevel 3", "SecRequestBodyAccess Off", "SecResponseBodyAccess Off", "Include @crs-setup-conf", "Include @owasp_crs/*.conf", "SecAuditLogFormat JSON" ] }, "default_directives": "default" }, "wasm_path": "/coraza/coraza.wasm" }
This configuration does not talk anything about SecAuditEngine to be On neither in my configuration above nor in crs-setup-conf file and I see that in ModSecurity default value of SecAuditEngine is Off , but still I see Audit logs in the pod something like below:
[2024-12-12 21:24:39.286][80][critical][wasm] [source/extensions/common/wasm/context.cc:1204] wasm log coraza coraza coraza: [client "44.235.12.129"] Coraza: Warning. HTTP header is restricted by policy (/content-encoding/) [file "@owasp_crs/REQUEST-920-PROTOCOL-ENFORCEMENT.conf"] [line "2601"] [id "920450"] [rev ""] [msg "HTTP header is restricted by policy (/content-encoding/)"] [data "Restricted header detected: /content-encoding/"] [severity "critical"] [ver "OWASP_CRS/4.0.0-rc2"] [maturity "0"] [accuracy "0"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "attack-protocol"] [tag "paranoia-level/1"] [tag "OWASP_CRS"] [tag "capec/1000/210/272"] [tag "PCI/12.1"] [hostname "10.4.116.151"] [uri "/queries/v1/query-request?requestId=2efee4bd-538b-46af-9fac-4a67e9fc6554&request_guid=abdd03e6-a575-470f-a4ea-1d4218b0a67d"] [unique_id "ASxLbDiEhuzzKPpFkiT"][msg_match_1 "HTTP header is restricted by policy (:scheme)"] [data_match_1 "Restricted header detected: :scheme"][msg_match_2 "HTTP header is restricted by policy (authorization)"] [data_match_2 "Restricted header detected: authorization"][msg_match_3 "HTTP header is restricted by policy (x-forwarded-for)"] [data_match_3 "Restricted header detected: x-forwarded-for"][msg_match_4 "HTTP header is restricted by policy (:path)"] [data_match_4 "Restricted header detected: :path"][msg_match_5 "HTTP header is restricted by policy (content-encoding)"] [data_match_5 "Restricted header detected: content-encoding"][msg_match_6 "HTTP header is restricted by policy (accept)"] [data_match_6 "Restricted header detected: accept"][msg_match_7 "HTTP header is restricted by policy (x-forwarded-proto)"] [data_match_7 "Restricted header detected: x-forwarded-proto"][msg_match_8 "HTTP header is restricted by policy (x-request-id)"] [data_match_8 "Restricted header detected: x-request-id"][msg_match_9 "HTTP header is restricted by policy (:authority)"] [data_match_9 "Restricted header detected: :authority"][msg_match_10 "HTTP header is restricted by policy (:method)"] [data_match_10 "Restricted header detected: :method"][msg_match_11 "HTTP header is restricted by policy (content-length)"] [data_match_11 "Restricted header detected: content-length"][msg_match_12 "HTTP header is restricted by policy (x-envoy-external-address)"] [data_match_12 "Restricted header detected: x-envoy-external-address"][msg_match_13 "HTTP header is restricted by policy (content-type)"] [data_match_13 "Restricted header detected: content-type"][msg_match_14 "HTTP header is restricted by policy (user-agent)"] [data_match_14 "Restricted header detected: user-agent"][msg_match_15 "HTTP header is restricted by policy (accept-encoding)"] [data_match_15 "Restricted header detected: accept-encoding"]
I see that for the above rule here , there is no SecDefaultAction something like:
SecDefaultAction "phase:1,log,auditlog,pass"
then how it is being triggered to generate AuditLogs ?

I am trying to understand here how I can control logging, because here I am not sure what is triggering the SecAuditEngine to be On. I even tried to explicitly mention SecAuditEngine Off but still seeing the Audit logs being triggered.

Also I saw that the logs are not coming in JSON format but I saw that being fixed in this PR , is there a plan to release a new wasm module ? Otherwise we will have to pull the latest commit and build our own wasm module locally?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions