Medium severity6.1OSV Advisory· Published Apr 15, 2025· Updated Apr 15, 2026
CVE-2025-3573
CVE-2025-3573
Description
Versions of the package jquery-validation before 1.20.0 are vulnerable to Cross-site Scripting (XSS) in the showLabel() function, which may take input from a user-controlled placeholder value. This value will populate a message via $.validator.messages in a user localizable dictionary.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
jquery-validationnpm | < 1.20.0 | 1.20.0 |
Affected products
1- Range: 1.10.0, 1.11.0, 1.11.1, …
Patches
27a490d8f39bdCore: Added escapeHtml option to avoid XSS attacks via showLabel methods (#2462)
3 files changed · +75 −3
src/core.js+12 −3 modified@@ -945,14 +945,23 @@ $.extend( $.validator, { error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass ); // Replace message on existing label - error.html( message ); + if ( this.settings && this.settings.escapeHtml ) { + error.text( message || "" ); + } else { + error.html( message || "" ); + } } else { // Create error element error = $( "<" + this.settings.errorElement + ">" ) .attr( "id", elementID + "-error" ) - .addClass( this.settings.errorClass ) - .html( message || "" ); + .addClass( this.settings.errorClass ); + + if ( this.settings && this.settings.escapeHtml ) { + error.text( message || "" ); + } else { + error.html( message || "" ); + } // Maintain reference to the element to be placed into the DOM place = error;
test/error-placement.js+57 −0 modified@@ -440,3 +440,60 @@ QUnit.test( "#1632: Error hidden, but input error class not removed", function( assert.equal( v.numberOfInvalids(), 0, "There is no error" ); assert.equal( box2.hasClass( "error" ), false, "Box2 should not have an error class" ); } ); + +QUnit.test( "test settings.escapeHtml undefined", function( assert ) { + var form = $( "#escapeHtmlForm1" ), + field = $( "#escapeHtmlForm1text" ); + + form.validate( { + messages: { + escapeHtmlForm1text: { + required: "<script>console.log('!!!');</script>" + } + } + } ); + + assert.ok( !field.valid() ); + assert.hasError( field, "required" ); + + var label = form.find( "label" ); + assert.equal( label.length, 1 ); + assert.equal( label.html(), "<script>console.log('!!!');</script>" ); + + label.html( "" ); + assert.ok( !field.valid() ); + assert.equal( label.html(), "<script>console.log('!!!');</script>" ); + + field.val( "foo" ); + assert.ok( field.valid() ); + assert.noErrorFor( field ); +} ); + +QUnit.test( "test settings.escapeHtml true", function( assert ) { + var form = $( "#escapeHtmlForm2" ), + field = $( "#escapeHtmlForm2text" ); + + form.validate( { + escapeHtml: true, + messages: { + escapeHtmlForm2text: { + required: "<script>console.log('!!!');</script>" + } + } + } ); + + assert.ok( !field.valid() ); + assert.hasError( field, "required" ); + + var label = form.find( "label" ); + assert.equal( label.length, 1 ); + assert.equal( label.html(), "<script>console.log('!!!');</script>" ); + + label.html( "" ); + assert.ok( !field.valid() ); + assert.equal( label.html(), "<script>console.log('!!!');</script>" ); + + field.val( "foo" ); + assert.ok( field.valid() ); + assert.noErrorFor( field ); +} );
test/index.html+6 −0 modified@@ -467,6 +467,12 @@ <h3></h3> <form id="testForm28"> <input type="text" name="f28input" required> </form> + <form id="escapeHtmlForm1"> + <input name="escapeHtmlForm1text" id="escapeHtmlForm1text" data-rule-required="true" /> + </form> + <form id="escapeHtmlForm2"> + <input name="escapeHtmlForm2text" id="escapeHtmlForm2text" data-rule-required="true" /> + </form> </div> </body> </html>
6c5e8525f87cVulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-rrj2-ph5q-jxw2ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2025-3573ghsaADVISORY
- github.com/jquery-validation/jquery-validation/commit/7a490d8f39bd988027568ddcf51755e1f4688902nvdWEB
- github.com/jquery-validation/jquery-validation/pull/2462nvdWEB
- security.snyk.io/vuln/SNYK-JS-JQUERYVALIDATION-5952285nvdWEB
News mentions
0No linked articles in our index yet.