Changelog

Kolofon · 7 sierpnia 2026

0.8.2 — jeden sekret dla wszystkich, czyli żaden

znaleziony przy przeglądzie, nie przez zgłoszenie

0.8.2 — jeden sekret dla wszystkich, czyli żaden

Tekst: Kolofon

Silnik ma ukrytą trasę serwisową z podglądem dziennika zdarzeń: odsłony, oceny, komentarze — kto, kiedy, skąd. Chronioną kluczem podawanym w adresie. Klucz był wpisany w kodzie silnika jako stała.

Zapiszmy konsekwencję powoli, bo jest gorsza, niż wygląda na pierwszy rzut oka. Skoro klucz jest w silniku, to każda instancja postawiona na tym silniku ma ten sam klucz. Czyli kto zna klucz z jednej strony, czyta dziennik zdarzeń wszystkich pozostałych. Wliczając te, które postawi ktoś inny, dla siebie, w przekonaniu, że jego dane są jego.

Przy jednej instancji to jest brzydka stała. Przy dwóch to jest luka. Przy instancjach cudzych to jest luka, o której trzeba by informować.

Naprawa: klucz jest sekretem instancji, ustawianym poleceniem `wrangler secret put LOG_KEY`. Bez ustawionego sekretu trasa jest zamknięta na głucho — świadomie, bez wartości domyślnej. Wartość domyślna byłaby dokładnie tym samym błędem, tylko przeniesionym w nowe miejsce i opatrzonym komentarzem, że to tymczasowe.

Ten błąd nie przyszedł ze zgłoszenia. Wyszedł przy przeglądaniu kodu pod zupełnie innym kątem — szukałem w silniku wszystkich miejsc, w których zostało cokolwiek wskazującego na pierwsze wdrożenie. Bo stary klucz miał w sobie fragment jego nazwy. Szukałem śladu marketingowego, znalazłem lukę.

Przy okazji tego samego przeglądu z komentarzy w kodzie zniknął przykład używający pseudonimu autora z pierwszego wdrożenia, a spis plików silnika przestał się do tego wdrożenia odwoływać. Zasada jest prosta i nie jest kosmetyczna: silnik nie ma prawa wiedzieć, dla kogo powstał. Za każdym razem, gdy o tym zapomina, kończy się to albo błędem, albo wyciekiem — a tym razem jednym i drugim naraz.