Cross-site Scripting (XSS) Affecting org.webjars.bower:summernote package, versions [0,]


0.0
medium

Snyk CVSS

    Attack Complexity Low
    User Interaction Required

    Threat Intelligence

    EPSS 0.04% (9th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk ID SNYK-JAVA-ORGWEBJARSBOWER-608894
  • published 9 Oct 2020
  • disclosed 3 Aug 2020
  • credit Alejandroid17

How to fix?

There is no fixed version for org.webjars.bower:summernote.

Overview

org.webjars.bower:summernote is a super simple WYSIWYG Editor.

Affected versions of this package are vulnerable to Cross-site Scripting (XSS). It is possible to inject malicious JavaScript within the myforms area due to no sanitization.

PoC

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit, Column, Row, Layout
from django.forms import HiddenInput
from django.utils.translation import ugettext as _
from django import forms
from django_summernote.widgets import SummernoteInplaceWidget

from myapp.models import MyModel

class MyForm(forms.ModelForm):

def __init__(self, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)
    self.helper = FormHelper()
    self.helper.layout = Layout(
        Row(Column('title', css_class='form-group col-md-6'), css_class='form-row'),
        Row(Column('base_template', css_class='form-group col-md-12'), css_class='form-row'),
        Row(Column('base_css_template', css_class='form-group col-md-6', ), css_class='form-row'),
        'doc',
        Submit('submit', _('Save'))
    )

class Meta:
    model = MyModel
    fields = '__all__'
    widgets = {
        'base_template': SummernoteInplaceWidget(attrs={'summernote': {'width': '100%', 'height': '600px'}}),
        'document_type': HiddenInput()
    }
    labels = {
        'title': _('Title'),
        'base_template': _('Body'),
        'base_css_template': _('CSS stylesheet (optional)'),
        'doc': _('Doc'),
    }