Fixes from Automated Security Review #596
No reviewers
Labels
No labels
API
Billing
UI/UX
dependencies
bug
change
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
servala/servala-portal!596
Loading…
Reference in a new issue
No description provided.
Delete branch "security/review-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The dynamic array widget rendered its hidden input value with `{{ value_list_json|safe }}`. json.dumps does not HTML-escape, so a user-supplied array item like `"><img src=x onerror=...>` broke out of the value="..." attribute and injected live markup. The value is persisted to the K8s spec and re-rendered as the form's initial value, yielding stored, cross-user XSS (e.g. a member's payload firing in an admin's session). Drop `|safe` so Django autoescapes the attribute. The widget JS reads `input.value`, which the browser decodes back to the original JSON, so form submission is unaffected. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>The plausible event was emitted as `{{ ...|safe }}` from json.dumps in a <script> block, and form help_text as `{{ field.help_text|safe }}`. Neither escapes </script> or HTML, so admin/cluster-sourced content (catalog names, CRD OpenAPI descriptions) rendered as raw markup. Emit the plausible payload with the json_script filter (HTML-escaped, parsed via JSON.parse) and drop |safe from help_text. Intentional-HTML help still renders because mark_safe/format_html produce SafeStrings that autoescape leaves untouched; only raw strings are now escaped. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>WIP: Security Reviewto Fixes from Automated Security Review