Fetch-hulppunt schrijft de volledige doel-URL in het toegangslog #2754

Open
opened 2026-11-02 23:46:59 +00:00 by brenno · 1 comment
Owner

Gevonden in de kritische review van 03-11-2026 (beveiliging/privacy).

Wat er misgaat

server/fetch-proxy/ocideck_fetch_proxy.py belooft de doel-URL uit het toegangslog te houden — in het commentaar bij log_message ("geen URL's in de log (privacy)", "keep only the method in the access log") én in docs/HOSTING.md §4: "it keeps the target URL out of its log lines". Dat doet hij niet. Elke regel bevat de volledige deck-URL, inclusief een eventueel token in de query:

fetch-proxy: "GET /?url=http://example.test:64653/x HTTP/1.1" 200 -

Hoe gevalideerd

Proxy gestart met een monkeypatch die loopback toelaat en één verzoek gedaan: de regel hierboven is de werkelijke stderr-uitvoer.

Oorzaak

BaseHTTPRequestHandler.log_request roept log_message('"%s" %s %s', self.requestline, code, size) aan. De verzoekregel is dus args[0], niet args[2]. De code (r. 173–175) vervangt args[2] — de grootte (-) — en laat de verzoekregel ongemoeid.

Gevolg

Een deck-URL is gebruikersdata: een gedeelde link met ?token=…, een intern pad, een naam. Die belandt in journald/syslog van de host, buiten elke bewaartermijn die de beheerder voor de app zelf heeft bedacht, en in strijd met wat HOSTING.md toezegt.

Voorstel

log_request zelf overschrijven: alleen methode, status en grootte loggen. Dat raakt de plek waar de verzoekregel het log in gaat in plaats van te raden welke index hij heeft. Foutregels (log_error) blijven zoals ze zijn; daar staat geen verzoekregel in.

Wat overeind moet blijven

  • Een regel per verzoek met methode en status, zodat een beheerder nog ziet dát er verkeer is en hoe het afliep.
  • Geen andere wijziging aan het verzoekpad.

Test

Een Python-zelftoets die een verzoek met een herkenbare URL doet en stderr naleest: de URL mag er niet in staan, GET en de status wel. Rood op de huidige code.

Gevonden in de kritische review van 03-11-2026 (beveiliging/privacy). ## Wat er misgaat `server/fetch-proxy/ocideck_fetch_proxy.py` belooft de doel-URL uit het toegangslog te houden — in het commentaar bij `log_message` ("geen URL's in de log (privacy)", "keep only the method in the access log") én in `docs/HOSTING.md` §4: *"it keeps the target URL out of its log lines"*. Dat doet hij niet. Elke regel bevat de volledige deck-URL, inclusief een eventueel token in de query: ``` fetch-proxy: "GET /?url=http://example.test:64653/x HTTP/1.1" 200 - ``` ## Hoe gevalideerd Proxy gestart met een monkeypatch die loopback toelaat en één verzoek gedaan: de regel hierboven is de werkelijke stderr-uitvoer. ## Oorzaak `BaseHTTPRequestHandler.log_request` roept `log_message('"%s" %s %s', self.requestline, code, size)` aan. De verzoekregel is dus `args[0]`, niet `args[2]`. De code (r. 173–175) vervangt `args[2]` — de grootte (`-`) — en laat de verzoekregel ongemoeid. ## Gevolg Een deck-URL is gebruikersdata: een gedeelde link met `?token=…`, een intern pad, een naam. Die belandt in journald/syslog van de host, buiten elke bewaartermijn die de beheerder voor de app zelf heeft bedacht, en in strijd met wat HOSTING.md toezegt. ## Voorstel `log_request` zelf overschrijven: alleen methode, status en grootte loggen. Dat raakt de plek waar de verzoekregel het log in gaat in plaats van te raden welke index hij heeft. Foutregels (`log_error`) blijven zoals ze zijn; daar staat geen verzoekregel in. ## Wat overeind moet blijven - Een regel per verzoek met methode en status, zodat een beheerder nog ziet dát er verkeer is en hoe het afliep. - Geen andere wijziging aan het verzoekpad. ## Test Een Python-zelftoets die een verzoek met een herkenbare URL doet en stderr naleest: de URL mag er niet in staan, `GET` en de status wel. Rood op de huidige code.
Author
Owner

Opgepakt (kritische review 03-11-2026). Tak: fix/proxy-log-url-2754. Verwachte reikwijdte: server/fetch-proxy/ocideck_fetch_proxy.py, nieuwe Python-zelftoets onder server/fetch-proxy/.

Opgepakt (kritische review 03-11-2026). Tak: fix/proxy-log-url-2754. Verwachte reikwijdte: server/fetch-proxy/ocideck_fetch_proxy.py, nieuwe Python-zelftoets onder server/fetch-proxy/.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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
LibreKAT/Ocideck#2754
No description provided.