Postawa bezpieczeństwa

Ten serwer rozprowadza oprogramowanie do routerów stojących między domem a internetem. Jest napisany przy założeniu, że kiedyś zostanie przejęty, i ułożony tak, żeby wtedy szkoda była ograniczona.

Co napastnik zyskuje, przejmując ten serwer

Czego nie zyskuje, to możliwości opublikowania wydania. Klucz podpisujący SLH-DSA nigdy nie jest na tym hoście.

Zabezpieczenia

Ryzyko Zabezpieczenie
Błędna kontrola dostępu Nic nie jest za logowaniem, bo nic tutaj nie jest prywatne. Jedyna uprzywilejowana czynność - publikacja - odbywa się poza pasmem, na systemie plików, nigdy po HTTP.
Wyjście poza katalog Adresy URL nigdy nie są mapowane na system plików. Ścieżka żądania jest wyszukiwana na liście dozwolonych, zbudowanej ze zweryfikowanego manifestu - więc plik spoza manifestu jest nieosiągalny niezależnie od kodowania.
Błędy kryptograficzne Wyłącznie HTTPS, HSTS, hybrydowe sesje X25519 + ML-KEM-768, HKDF-SHA-384, AES-256-GCM, porównanie MAC w stałym czasie.
Wstrzyknięcia Brak bazy danych i brak powłoki. OpenSSL jest uruchamiany przez wektor argumentów, nigdy przez powłokę. Szablony automatycznie escapują; strona nie renderuje danych od użytkownika poza zwalidowanymi segmentami ścieżki.
XSS Strona nie ma ani linijki JavaScriptu, a CSP to default-src 'none' z CSS-em, fontami i obrazami wyłącznie z własnego źródła. Artefakty są podawane jako application/octet-stream z nosniff, więc wgrany plik nigdy nie wyrenderuje się jako znaczniki.
CSRF / utrwalenie sesji Brak ciasteczek, brak sesji w przeglądarkowym sensie, brak formularzy. Nie ma czego sfałszować.
Błędna konfiguracja bezpieczeństwa Start odmawia bez kluczy; kanał, który nie przejdzie weryfikacji, jest wycofywany, a /ready zwraca 503. Interaktywna dokumentacja API jest wyłączona, a baner serwera stały.
Wstrzyknięcie nagłówka Host Żądania, których Host nie jest skonfigurowaną domeną, dostają 421. Adresy bezwzględne są budowane z konfiguracji, nigdy z żądania.
Odmowa usługi Kubełki tokenów per IP, z osobnym i znacznie mniejszym kubełkiem na wymianę kluczy, bo każdy handshake forkuje OpenSSL. Ograniczona tablica sesji, ograniczona tablica klientów, limit rozmiaru treści żądania.
Błędy logowania zdarzeń Jedna ustrukturyzowana linia na żądanie. Znaki sterujące w ścieżkach są neutralizowane, żeby żądanie nie sfałszowało wpisu w logu. Adresy klientów są skracane.
Ujawnienie informacji Ślady stosu nigdy nie wracają do klienta. Błędy walidacji nazywają wadliwe pole, ale nigdy nie odbijają jego wartości. Brakujący kanał i brakujący plik zwracają to samo 404.

Postawa postkwantowa

Pochodzenie wydania opiera się na funkcjach skrótu (SLH-DSA-SHA2-128s, FIPS 205), więc jest już odporne kwantowo.

Wymiana kluczy sesji jest hybrydowa: X25519 + ML-KEM-768 (FIPS 203), więc nagranego ruchu nie odszyfruje później przeciwnik dysponujący komputerem kwantowym.

Zgłaszanie podatności

Dane kontaktowe są w /.well-known/security.txt (RFC 9116). Dołącz na tyle szczegółów, żeby dało się odtworzyć problem. Potwierdzimy odbiór i damy znać, kiedy poprawka trafi do wydania i do którego.