CVE-2025-29914: OWASP Coraza WAF has parser confusion which leads to wrong URI in `REQUEST_FILENAME`

Published Mar 20, 2025
·
Updated

Summary

URLs starting with // are not parsed properly, and the request REQUESTFILENAME variable contains a wrong value, leading to potential rules bypass.

Details

If a request is made on an URI starting with //, coraza will set a wrong value in REQUESTFILENAME. For example, if the URI //bar/uploads/foo.php?a=b is passed to coraza: , REQUESTFILENAME will be set to /uploads/foo.php.

The root cause is the usage of url.Parse to parse the URI in ProcessURI.

url.Parse can parse both absolute URLs (starting with a scheme) or relative ones (just the path). //bar/uploads/foo.php is a valid absolute URI (the scheme is empty), url.Parse will consider bar as the host and the path will be set to /uploads/foo.php.

PoC

go package main

import ( "fmt" "net/url" "os"

"github.com/corazawaf/coraza/v3" )

const testRule = SecDebugLogLevel 9 SecDebugLog /dev/stdout SecRule REQUESTFILENAME "@rx /bar/uploads/.\.(h?ph(p|tm?l?|ar)|module|shtml)" "id:1,phase:1,deny"

func main() { var testURL = "//bar/uploads/foo.php"

if os.Getenv("TESTURL") != "" { testURL = os.Getenv("TESTURL") }

fmt.Printf("Testing URL: %s\n", testURL)

config := coraza.NewWAFConfig().WithDirectives(testRule)

waf, err := coraza.NewWAF(config)

if err != nil { panic(err) }

tx := waf.NewTransaction()

tx.ProcessURI(testURL, "GET", "HTTP/1.1")

in := tx.ProcessRequestHeaders()

if in != nil { fmt.Printf("%+v\n", in) } }

Impact

Potential bypass of rules using REQUESTFILENAME.

Other sources

OWASP Coraza WAF is a golang modsecurity compatible web application firewall library. Prior to 3.3.3, if a request is made on an URI starting with //, coraza will set a wrong value in REQUESTFILENAME. For example, if the URI //bar/uploads/foo.php?a=b is passed to coraza: , REQUESTFILENAME will be set to /uploads/foo.php. This can lead to a rules bypass. This vulnerability is fixed in 3.3.3.

MITRE

Affected Software

3 affected componentsFixes available
go/github.com/corazawaf/coraza/v3<3.3.3
3.3.3
go/github.com/jptosso/coraza-waf<3.3.3
3.3.3
OWASP Coraza WAF<3.3.3

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade go/github.com/corazawaf/coraza/v3 to a version that resolves this vulnerability.

    Fixed in 3.3.3
  2. Upgrade

    Upgrade go/github.com/jptosso/coraza-waf to a version that resolves this vulnerability.

    Fixed in 3.3.3
  3. Upgrade

    Upgrade coraza to a version that resolves this vulnerability.

    Fixed in 3.3.3
  4. Compensating control

    For URIs that start with `//`, apply compensating network/WAF controls to prevent such requests reaching Coraza (e.g., normalize/redirect double-slash requests at a reverse proxy or enforce URL normalization before Coraza) to avoid the `REQUEST_FILENAME` wrong value issue described for versions prior to 3.3.3.

Event History

Mar 20, 2025
CVE Published
via MITRE·05:44 PM
Data Sourced
via MITRE·05:44 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·06:15 PM
DescriptionSeverityWeakness
Advisory Published
via GitHub·06:48 PM
Aug 2, 57203
Event
via FIRST·12:40 AM
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2025-29914?

CVE-2025-29914 has a medium severity level due to incorrect handling of specific URI patterns.

2

How do I fix CVE-2025-29914?

To fix CVE-2025-29914, update OWASP Coraza WAF to version 3.3.3 or later.

3

What impact does CVE-2025-29914 have on web applications?

CVE-2025-29914 can lead to incorrect values in the REQUEST_FILENAME, potentially affecting security and request handling.

4

What versions of OWASP Coraza WAF are affected by CVE-2025-29914?

CVE-2025-29914 affects all versions of OWASP Coraza WAF prior to version 3.3.3.

5

Is there a workaround for CVE-2025-29914 if I cannot update?

Currently, there are no recommended workarounds for CVE-2025-29914 other than upgrading to the fixed version.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203