Skip to content

Regex literal in Hurl files are not escaped when exported to HTML, allowing injections

Moderate severity GitHub Reviewed Published Jun 10, 2025 in Orange-OpenSource/hurl • Updated Jun 11, 2025

Package

cargo hurl (Rust)

Affected versions

<= 6.1.1

Patched versions

7.0.0

Description

Given this Hurl file:

regex.hurl:

GET https://foo.com
HTTP 200
[Asserts]
jsonpath "$.body" matches /<img src="" onerror="alert('Hi!')">/

When exported to HTML:

$ hurlfmt --out html regex.hurl
<pre><code class="language-hurl"><span class="hurl-entry"><span class="request"><span class="line"><span class="method">GET</span> <span class="url">https://foo.com</span></span>
</span><span class="response"><span class="line"><span class="version">HTTP</span> <span class="number">200</span></span>
<span class="line"><span class="section-header">[Asserts]</span></span>
<span class="line"><span class="query-type">jsonpath</span> <span class="string">"$.body"</span> <span class="predicate-type">matches</span> <span class="regex">/<img src="" onerror="alert('Hi!')">/</span></span>
</span></span><span class="line"></span>
</code></pre>

The regex literal /<img src="" onerror="alert('Hi!')">/ is not escaped:

<span class="regex">/<img src="" onerror="alert('Hi!')">/</span></span>

When opened in a browser, the code is run without user interaction:

regex

References

@jcamiel jcamiel published to Orange-OpenSource/hurl Jun 10, 2025
Published to the GitHub Advisory Database Jun 11, 2025
Reviewed Jun 11, 2025
Last updated Jun 11, 2025

Severity

Moderate

EPSS score

Weaknesses

No CWEs

CVE ID

No known CVE

GHSA ID

GHSA-v33j-v3x4-42qg
See something to contribute? Suggest improvements for this vulnerability.