Warden skill: detect unsafe URI rendering in HTML templates
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- typescript
Direzione di ricerca
Inizia con PR #842 e la allow-list di sanitizeHrefURL per comprendere la vulnerabilità risolta e la gestione prevista degli URI. Esamina le regole Warden esistenti e la configurazione di ESLint, quindi determina come rilevare i template literal o le concatenazioni che raggiungono href, src o action. Il lavoro è completato quando il meccanismo di enforcement scelto segnala i sink non validati e non sicuri nell'intera codebase e copre i pattern proposti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
PR #842 fixed a stored XSS in the OAuth approval dialog where client_uri, policy_uri, and tos_uri fields were rendered as clickable href attributes without validating the URI scheme. javascript: URIs bypassed HTML escaping entirely. The fix added an allow-list (sanitizeHrefURL) restricting schemes to http/https.
This class of bug — untrusted string → href without scheme validation — is easy to miss in review and should be caught automatically via a Warden rule.
Current behavior
No static analysis or Warden rule exists to flag patterns like:
// dangerous: href value from external input without scheme validation
`<a href="${uri}">`
Gap
HTML-escaping does not protect against javascript: URIs. Any place where user-controlled or API-sourced strings are interpolated directly into href, src, or action attributes is a latent XSS vector that code review can silently miss.
Options
- Warden semgrep rule — pattern-match template literals or string concatenation that feeds into href/src/action without passing through an allow-list sanitizer. Flag for human review.
- ESLint plugin (e.g.
eslint-plugin-no-unsanitized) — enforce at lint time in CI; blocks merges rather than async Warden alerts. - Both — Warden for existing codebase sweep + ESLint for ongoing enforcement.
Recommendation
Ship a Warden rule first for a broad sweep across the codebase, then layer in an ESLint rule (or extend the existing config) so new instances are caught at PR time before merge.
Action taken on behalf of David Cramer.
- Lingua principale
- TypeScript
- Stelle
- 938
- Fork
- 166
- Merge medio
- 1g 7h
- PR unite (30g)
- 156
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di getsentry/toolkit
-
bug MCP
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
getsentry/toolkit#1600 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
getsentry/toolkit#1471 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
getsentry/toolkit#1611 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement MCP
Difficoltà 4/5 1-2 giorni Idoneità per principianti 55/100
getsentry/toolkit#1601 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Use typed detector schemas from @sentry/api for metric monitorsForse già presa @MathurAditya724 l’ha presa 1 giorno fa. Aperta
getsentry/toolkit#1595 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di getsentry/toolkit
Issue simili
-
area: image-engine bug priority: low
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
snapotter-hq/SnapOtter#3885 ·
I maintainer di solito rispondono entro 1 giorno
-
Mend: dependency security vulnerability
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 3 giorni
-
pending triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
bug P3 UI/UX
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
openclaw/openclaw#182077 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno