Starring / follow repo geeft CSP error #26

Open
opened 2026-05-01 19:13:54 +00:00 by jan.klopper · 8 comments
Member

Over CSP, momenteel staat die zelfs iets 'te' streng voor Forgejo. BIj het starren of volgen van repo's krijg je deze melding:

JavaScript error: Evaluating a string as JavaScript violates the following Content Security Policy directive because 'unsafe-eval' is not an allowed source of script: script-src 'self'".
(https://code.overheid.nl/assets/js/index.js?v=16.0.0-dev-197-a4f88e32ee~gitea-1.22.0 @ 12:66518). Open browser console to see more details.

Originally posted by @wouter.kobes in #11 (comment)

Over CSP, momenteel staat die zelfs iets 'te' streng voor Forgejo. BIj het starren of volgen van repo's krijg je deze melding: ```javascript JavaScript error: Evaluating a string as JavaScript violates the following Content Security Policy directive because 'unsafe-eval' is not an allowed source of script: script-src 'self'". (https://code.overheid.nl/assets/js/index.js?v=16.0.0-dev-197-a4f88e32ee~gitea-1.22.0 @ 12:66518). Open browser console to see more details. ``` _Originally posted by @wouter.kobes in https://code.overheid.nl/MinBZK/Codeplatform/issues/11#issuecomment-153_
Author
Member

image
Hoewel de 'star' zelf wel wordt opgeteld in zowel backend als frontend.

![image](/attachments/9a5a49ba-c0ea-4651-bbcd-d3f991b7b20c) Hoewel de 'star' zelf wel wordt opgeteld in zowel backend als frontend.
Author
Member
https://codeberg.org/forgejo/forgejo/pulls/12247/commits/d72f5952a8082a4c771b5c4fd1c3a94b806c5e6e
Author
Member

JavaScript error: call to Function() blocked by CSP (https://code.overheid.nl/assets/js/index.js?v=16.0.0-dev-235-d72f5952a8~gitea-1.22.0 @ 12:66518). Open browser console to see more details.
(Un)follow klaagt nog. Star/Unstar werkt correct voor zover ik kan zien. Ik ga dat oppakken.

JavaScript error: call to Function() blocked by CSP (https://code.overheid.nl/assets/js/index.js?v=16.0.0-dev-235-d72f5952a8~gitea-1.22.0 @ 12:66518). Open browser console to see more details. (Un)follow klaagt nog. Star/Unstar werkt correct voor zover ik kan zien. Ik ga dat oppakken.
Member

Het ging vandaag nog even over de CSP fix, en of we die moeten blijven hacken, of juist uitleggen dat we momenteel niet voldoen aan de CSP eisen van Internet.nl omdat de upstream dat nog niet geaccepteerd heeft, in een soort "complience debt overzicht" (ik hoop dat ik het zo goed zeg)

Het ging vandaag nog even over de CSP fix, en of we die moeten blijven hacken, of juist uitleggen dat we momenteel niet voldoen aan de CSP eisen van Internet.nl omdat de upstream dat nog niet geaccepteerd heeft, in een soort "complience debt overzicht" (ik hoop dat ik het zo goed zeg)
Author
Member
https://codeberg.org/underdarknl/forgejo/commit/2dbe4d5f10022bfdfc3c8efd1a0e64e4d39f3b97
Author
Member

Beide routes zijn mogelijk, maar gezien de complexiteit van de software, en de in mijn optiek vrij grote kans op XSS (er gebeurt veel, en er is veel 'user-supplied' input en content) is het denk ik verstandig om CSP wel strikt te houden.
Laten we focussen op het upstreamen van deze fixes, dat brengt ons ook in het juiste vaarwater voor wat betreft de aanhaking bij het project zelf, en voor eventuele toekomstige issues die we willen fixen of gefixt zien.

Beide routes zijn mogelijk, maar gezien de complexiteit van de software, en de in mijn optiek vrij grote kans op XSS (er gebeurt veel, en er is veel 'user-supplied' input en content) is het denk ik verstandig om CSP wel strikt te houden. Laten we focussen op het upstreamen van deze fixes, dat brengt ons ook in het juiste vaarwater voor wat betreft de aanhaking bij het project zelf, en voor eventuele toekomstige issues die we willen fixen of gefixt zien.

Het risico op XSS lijkt mij beperkt en acceptabel omdat we met een kleine groep pilotgebruikers werken. Daarnaast werkt een grote instance als Codeberg nu ook zonder CSP zijn daar voor zover ik weet geen XSS-aanvallen gemeld. Daarom lijkt het mij beter om CSP in report-only mode te zetten om zo eerst alle functionaliteit in Forgejo CSP-ready te kunnen maken, zodat we daarna CSP strikt aan kunnen zetten zonder dat er functionaliteit stuk gaat.

Daarnaast is het waarschijnlijk sneller om de CSP fixes als kleine PR per gefixte feature/pagina upstream aan te bieden ipv een grote PR die heel Forgejo aanpakt.

Het risico op XSS lijkt mij beperkt en acceptabel omdat we met een kleine groep pilotgebruikers werken. Daarnaast werkt een grote instance als Codeberg nu ook zonder CSP zijn daar voor zover ik weet geen XSS-aanvallen gemeld. Daarom lijkt het mij beter om [CSP in report-only mode](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy-Report-Only) te zetten om zo eerst alle functionaliteit in Forgejo CSP-ready te kunnen maken, zodat we daarna CSP strikt aan kunnen zetten zonder dat er functionaliteit stuk gaat. Daarnaast is het waarschijnlijk sneller om de CSP fixes als kleine PR per gefixte feature/pagina upstream aan te bieden ipv een grote PR die heel Forgejo aanpakt.
Author
Member

Ik heb op verschillende plekken in de code potentiele XSS hoekjes gevonden, ik zou daar toch wat voorzichtig mee zijn. CSP report-uri's toevoegen is een goed idee, al moet iemand dat wel optuigen en gaan monitoren.
Ik zie de potentiele schade vooral buiten deze hostname ontstaan. We zijn immers onderdeel van overheid.nl, en daarmee is een inbraak op deze site met wat pech een deur naar het browser security domain van andere subdomeinen (als zij bijvoorbeeld cookies niet netjes onbereikbaar voor Js en .overheid.nl maken). Ik durf niet te zeggen dat er nergens op het overheid.nl domein te breed leesbare cookies beschikbaar zouden zijn die langs een XSS hier gelezen kunnen worden. Het zelfde geldt natuurlijk voor XSRF achtige zaken op sites die niet netjes hun cors afdwingen, daarbij maakt het niet uit of de cookies wel of niet leesbaar zouden zijn op het code. subdomain.

De CSP fixes die ik heb geupstreamed zijn opgenomen in de Forgejo roadmap voor 1.16, en zijn onderdeel van hun reactie op een ietwat irresponsible disclusure over de security posture. Ik verwacht dat er wellicht technisch nog opmerkingen zijn die verwerkt moeten worden, maar dat de patches welkom en gewaardeerd zijn.

Ik heb op verschillende plekken in de code potentiele XSS hoekjes gevonden, ik zou daar toch wat voorzichtig mee zijn. CSP report-uri's toevoegen is een goed idee, al moet iemand dat wel optuigen en gaan monitoren. Ik zie de potentiele schade vooral buiten deze hostname ontstaan. We zijn immers onderdeel van overheid.nl, en daarmee is een inbraak op deze site met wat pech een deur naar het browser security domain van andere subdomeinen (als zij bijvoorbeeld cookies niet netjes onbereikbaar voor Js en .overheid.nl maken). Ik durf niet te zeggen dat er nergens op het overheid.nl domein te breed leesbare cookies beschikbaar zouden zijn die langs een XSS hier gelezen kunnen worden. Het zelfde geldt natuurlijk voor XSRF achtige zaken op sites die niet netjes hun cors afdwingen, daarbij maakt het niet uit of de cookies wel of niet leesbaar zouden zijn op het code. subdomain. De CSP fixes die ik heb geupstreamed zijn opgenomen in de Forgejo roadmap voor 1.16, en zijn onderdeel van hun reactie op een ietwat irresponsible disclusure over de security posture. Ik verwacht dat er wellicht technisch nog opmerkingen zijn die verwerkt moeten worden, maar dat de patches welkom en gewaardeerd zijn.
Sign in to join this conversation.
No milestone
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
MinBZK/Codeplatform#26
No description provided.