XSS/Privacy protection URL Whitelist for external images by CSP
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- android, go, javascript, react
Direzione di ricerca
Inizia tracciando come viene interpolato %CONFIG% quando viene servita la WebUI e come viene costruito l’header CSP attuale. Definisci la configurazione o l’opzione di amministrazione, il comportamento di corrispondenza degli URL e qualsiasi parità richiesta con l’Android-client. Il lavoro è completato quando la policy delle immagini configurata viene applicata senza indebolire le altre protezioni e la gestione degli script runtime rimane compatibile con CSP.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Is your feature request related to a problem? Please describe.
It would be a strong protection against things like this:
https://github.com/gotify/server/security/advisories/GHSA-xv6x-456v-24xh
https://github.com/gotify/server/security/advisories/GHSA-3244-8mff-w398
it would also be useful in cases like you want to see images in a message but not really 100% trust there can never be bad content (an example is if you receive webhook, the sender might not have properly sanitized the markdown)
Describe the solution you'd like
A config or admin option to whitelist which URLs can be rendered. On the WebUI we serve a CSP header to prevent images not in the whitelist from being updated. Something like (untested):
Content-Security-Policy: default-src 'self'; img-src 'self' data: https://my.images.net/; media-src 'none'; script-src: https://gotify/static/js/; style-src: https://gotify/static/css/; style-src-attr 'self' 'unsafe-inline';
On the Android client we will probably need to implement the same algorithm: https://www.w3.org/TR/CSP/#match-url-to-source-expression
Describe alternatives you've considered
An option to globally disable all remote images (will need to rely on the markdown renderer's correctness).
Additional context
The logic of interpolating %CONFIG% when serving the UI at runtime may need to be refactored. The general idea is to precompute the script content, hash it and write it in the CSP header.
- Lingua principale
- Go
- Stelle
- 16k
- Fork
- 887
- Merge medio
- 1g 6h
- PR unite (30g)
- 5
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
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 gotify/server
-
a:bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
gotify/server#1059 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
a:bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
gotify/server#1055 · 7 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Session elevation duration is unbounded, and large values silently overflow to a past timestampApertaa:bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 78/100
gotify/server#1051 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
a:bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
gotify/server#1047 · 6 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di gotify/server
Issue simili
-
self-host checker: E021 bound check reads an untyped literal at i32, not the type the call bindsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
JakeChampion/lang#11055 ·
I maintainer di solito rispondono entro 1 giorno
-
priority: low status: ready for dev
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
hyperledger-labs/fabric-smart-client#2033 ·
I maintainer di solito rispondono entro 1 giorno
-
agent-butler-finding agent-research bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
jordansmall/spindrift#4249 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
acceptance-tests phase-coding schema-coverage testing triaged
Difficoltà 2/5 1-2 giorni Idoneità per principianti 84/100
elastic/terraform-provider-elasticstack#5053 ·
I maintainer di solito rispondono entro 1 giorno