Skip to content

Conversation

@nielskaspers
Copy link

Summary

  • Fixes stored XSS vulnerability in multiple Blade templates
  • Changes unescaped output {!! !!} to escaped output {{ }} for user-controllable fields

Details

Multiple Blade templates rendered user-controllable data (title, name fields) using unescaped Blade output {!! !!}. This allows stored XSS attacks where:

  1. Attacker creates content with malicious script in name/title field
  2. Script gets stored in database
  3. When anyone views the content (show page, edit page, search results), script executes

Example Attack Vector

  1. Create a package with name: <script>alert('xss')</script>
  2. Search for "package"
  3. XSS triggers when search results display

Fix

Replace {!! $data['title'] !!} and similar patterns with {{ $data['title'] }} to ensure HTML entities are properly escaped by Laravel's Blade engine.

Affected Files (19 total)

  • Master module: show.blade.php, edit.blade.php
  • Menu module: show.blade.php, edit.blade.php, nestable.blade.php
  • Notification module: show.blade.php, edit.blade.php
  • Role/Permission modules: show.blade.php, edit.blade.php
  • Setting module: edit.blade.php
  • Team module: show.blade.php, edit.blade.php
  • User/Client modules: show.blade.php, edit.blade.php

Test plan

  • Verify content with special characters displays correctly (escaped)
  • Verify <script> tags in title/name fields are escaped, not executed
  • Test all affected show/edit views render properly

Fixes: LavaLite/cms#420
CVE: CVE-2025-71177

Multiple Blade templates were rendering user-controllable data
(title, name fields) using unescaped output {!! !!} which allows
stored XSS attacks.

When users input malicious scripts in name/title fields (e.g.,
<script>alert('xss')</script>), the script executes when the
content is displayed in show/edit views or search results.

Fix: Replace {!! $data['title'] !!} and similar patterns with
{{ $data['title'] }} to ensure HTML entities are properly escaped.

Affected components:
- Master module (show, edit views)
- Menu module (show, edit, nestable views)
- Notification module (show, edit views)
- Role/Permission modules (show, edit views)
- Setting module (edit view)
- Team module (show, edit views)
- User/Client modules (show, edit views)

Fixes: LavaLite/cms#420
CVE: CVE-2025-71177

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A stored XSS

1 participant