VYPR
Moderate severityOSV Advisory· Published Jul 25, 2022· Updated Sep 16, 2024

Cross-site Scripting (XSS)

CVE-2022-21802

Description

The package grapesjs before 0.19.5 are vulnerable to Cross-site Scripting (XSS) due to an improper sanitization of the class name in Selector Manager.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
grapesjsnpm
>= 0

Affected products

1

Patches

1
13e85d152d48

Protect Selector Manager views from XSS. Closes #4411

https://github.com/artf/grapesjsArtur ArsenievJun 27, 2022via ghsa
2 files changed · +26 32
  • src/selector_manager/view/ClassTagsView.ts+23 28 modified
    @@ -11,36 +11,31 @@ import Selectors from '../model/Selectors';
     
     export default class ClassTagsView extends View<Selector> {
       template({ labelInfo, labelHead, iconSync, iconAdd, pfx, ppfx }: any) {
    -    return `
    -    <div id="${pfx}up" class="${pfx}header">
    -      <div id="${pfx}label" class="${pfx}header-label">${labelHead}</div>
    -      <div id="${pfx}status-c" class="${pfx}header-status">
    -        <span id="${pfx}input-c" data-states-c>
    -          <div class="${ppfx}field ${ppfx}select">
    -            <span id="${ppfx}input-holder">
    -              <select id="${pfx}states" data-states></select>
    -            </span>
    -            <div class="${ppfx}sel-arrow">
    -              <div class="${ppfx}d-s-arrow"></div>
    +    return html` <div id="${pfx}up" class="${pfx}header">
    +        <div id="${pfx}label" class="${pfx}header-label">${labelHead}</div>
    +        <div id="${pfx}status-c" class="${pfx}header-status">
    +          <span id="${pfx}input-c" data-states-c>
    +            <div class="${ppfx}field ${ppfx}select">
    +              <span id="${ppfx}input-holder">
    +                <select id="${pfx}states" data-states></select>
    +              </span>
    +              <div class="${ppfx}sel-arrow">
    +                <div class="${ppfx}d-s-arrow"></div>
    +              </div>
                 </div>
    -          </div>
    -        </span>
    +          </span>
    +        </div>
           </div>
    -    </div>
    -    <div id="${pfx}tags-field" class="${ppfx}field">
    -      <div id="${pfx}tags-c" data-selectors></div>
    -      <input id="${pfx}new" data-input/>
    -      <span id="${pfx}add-tag" class="${pfx}tags-btn ${pfx}tags-btn__add" data-add>
    -        ${iconAdd}
    -      </span>
    -      <span class="${pfx}tags-btn ${pfx}tags-btn__sync" style="display: none" data-sync-style>
    -        ${iconSync}
    -      </span>
    -    </div>
    -    <div class="${pfx}sels-info">
    -      <div class="${pfx}label-sel">${labelInfo}:</div>
    -      <div class="${pfx}sels" data-selected></div>
    -    </div>`;
    +      <div id="${pfx}tags-field" class="${ppfx}field">
    +        <div id="${pfx}tags-c" data-selectors></div>
    +        <input id="${pfx}new" data-input />
    +        <span id="${pfx}add-tag" class="${pfx}tags-btn ${pfx}tags-btn__add" data-add> $${iconAdd} </span>
    +        <span class="${pfx}tags-btn ${pfx}tags-btn__sync" style="display: none" data-sync-style> $${iconSync} </span>
    +      </div>
    +      <div class="${pfx}sels-info">
    +        <div class="${pfx}label-sel">${labelInfo}:</div>
    +        <div class="${pfx}sels" data-selected></div>
    +      </div>`;
       }
     
       events() {
    
  • src/selector_manager/view/ClassTagView.ts+3 4 modified
    @@ -1,5 +1,6 @@
     import { View } from '../../common';
     import State from '../model/State';
    +import html from '../../utils/html';
     
     const inputProp = 'contentEditable';
     
    @@ -8,12 +9,10 @@ export default class ClassTagView extends View<State> {
         const { pfx, model, config } = this;
         const label = model.get('label') || '';
     
    -    return `
    +    return html`
           <span id="${pfx}checkbox" class="${pfx}tag-status" data-tag-status></span>
           <span id="${pfx}tag-label" data-tag-name>${label}</span>
    -      <span id="${pfx}close" class="${pfx}tag-close" data-tag-remove>
    -        ${config.iconTagRemove}
    -      </span>
    +      <span id="${pfx}close" class="${pfx}tag-close" data-tag-remove> $${config.iconTagRemove} </span>
         `;
       }
     
    

Vulnerability mechanics

Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

7

News mentions

0

No linked articles in our index yet.