OWASP / OWASP/openshield

security(website): remove the browser PAT flow and restore safe dynamic rendering

Open
#297 1 comment 0 reactions 1 assignee View on GitHub

@parthrohit22 is already working on this.

Since Aug 28, 2026.

bug javascript priority: critical
Dominant language
Python
Stars
57
Forks
68
Avg merge
3d 15h
Merged PRs (30d)
17

Description

Why this is a release blocker

The live website serves an older renderer that uses unsanitized innerHTML/Marked content while asking maintainers for a classic GitHub token with repo scope. A DOM-XSS issue in that page can expose a highly privileged credential.

Current dev is not a releasable fix: broad changes from HTML assignment to textContent cause template markup to display literally, break dynamic sections, and make the terminal query a missing .command-text element.

Evidence: website/index.html:775-787 and website/script.js:93-108,158-179,653-754.

Required work

  • Disable/remove the browser-based classic PAT editor immediately.
  • Use GitHub's normal authenticated web flow for content contributions, or design a narrowly scoped server-side integration separately.
  • Render trusted templates with DOM APIs; sanitize all Markdown-derived HTML with an approved sanitizer.
  • Validate all URLs and iframe/embed origins.
  • Add a restrictive CSP that matches the actual asset and embedding model.

Acceptance criteria

  • No GitHub credential is requested, stored or processed by the public website.
  • Known HTML/Markdown/URL XSS payloads do not execute.
  • Dynamic homepage, rules, docs, blog, events, releases, FAQ and playground content renders correctly.
  • Playwright tests cover rendering, navigation, editor removal, CSP violations and an XSS regression corpus.
  • Keyboard and axe checks run in CI.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.