Firefox · Core
CVE-2025-14329
Logic Error in Core
Overview
Medium
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Files Changed
devtools/client/netmonitor/test/browser_net_curl-utils.jsdevtools/client/shared/curl.js
Patch
diff --git a/devtools/client/netmonitor/test/browser_net_curl-utils.js b/devtools/client/netmonitor/test/browser_net_curl-utils.js
index cb8df325dff..757940aaac5 100644
--- a/devtools/client/netmonitor/test/browser_net_curl-utils.js
+++ b/devtools/client/netmonitor/test/browser_net_curl-utils.js
@@ -360,6 +360,14 @@ function testEscapeStringWin() {
'^\"query=evil^\n\n^\n\ncmd^\\^\" /c timeout /t 3 ^& calc.exe^\n\n^\n\n^\"',
"The evil command is escaped properly"
);
+
+ // Control characters https://www.ascii-code.com/characters/control-characters
+ const containsControlChars = " - \u0007 \u0010 \u0014 \u001B \x1a - ";
+ is(
+ CurlUtils.escapeStringWin(containsControlChars),
+ '^\" - \u0007 \u0010 \u0014 \u001b \u001a - ^\"',
+ "Control characters should not be escaped with ^."
+ );
}
async function createCurlData(selected, getLongString, requestData) {
diff --git a/devtools/client/shared/curl.js b/devtools/client/shared/curl.js
index e3894da8123..0ca3d3c5578 100644
--- a/devtools/client/shared/curl.js
+++ b/devtools/client/shared/curl.js
@@ -463,7 +463,9 @@ const CurlUtils = {
// Then escape all characters we are not sure about with ^ to ensure it
// gets to MS Crt parser safely.
- .replace(/[^a-zA-Z0-9\s_\-:=+~\/.',?;()*`]/g, "^$&")
+ // Note: Also do not escape unicode control (C) non-printable characters
+ // https://www.compart.com/en/unicode/category (this is captured with `\p{C}` and the `u` unicode flag)
+ .replace(/[^-a-zA-Z0-9\s_:=+~\/.',?;()*`\p{C}]/gu, "^$&")
// The % character is special because MS Crt parser will try and look for
// ENV variables and fill them in its place. We cannot escape them with %
Loading diff…
Regression Test / PoC
shipped with the fix
diff --git a/devtools/client/netmonitor/test/browser_net_curl-utils.js b/devtools/client/netmonitor/test/browser_net_curl-utils.js
index cb8df325dff..757940aaac5 100644
--- a/devtools/client/netmonitor/test/browser_net_curl-utils.js
+++ b/devtools/client/netmonitor/test/browser_net_curl-utils.js
@@ -360,6 +360,14 @@ function testEscapeStringWin() {
'^\"query=evil^\n\n^\n\ncmd^\\^\" /c timeout /t 3 ^& calc.exe^\n\n^\n\n^\"',
"The evil command is escaped properly"
);
+
+ // Control characters https://www.ascii-code.com/characters/control-characters
+ const containsControlChars = " - \u0007 \u0010 \u0014 \u001B \x1a - ";
+ is(
+ CurlUtils.escapeStringWin(containsControlChars),
+ '^\" - \u0007 \u0010 \u0014 \u001b \u001a - ^\"',
+ "Control characters should not be escaped with ^."
+ );
}
async function createCurlData(selected, getLongString, requestData) {
Loading diff…
References
On This Page