Bezpieczeństwo i domena

Plik security.txt: gdzie ktoś ma zgłosić lukę na Twojej stronie

Plik security.txt to krótki plik tekstowy pod adresem https://twojadomena.pl/.well-known/security.txt. Mówi, gdzie zgłosić lukę, czyli błąd w zabezpieczeniach strony. Opisuje go standard RFC 9116, oficjalna specyfikacja internetowa. Wymaga on co najmniej jednego pola Contact, na przykład adresu e-mail, i dokładnie jednego pola Expires z datą ważności, najlepiej nie dalej niż za rok.

  • Według RFC 9116 plik security.txt strony internetowej musi leżeć w katalogu /.well-known/. Ma być dostępny przez HTTPS, czyli szyfrowane połączenie, jako zwykły tekst (text/plain) w kodowaniu UTF-8.
  • RFC 9116 wymaga pola Contact co najmniej raz i pola Expires dokładnie raz. Datę w Expires zaleca ustawiać na mniej niż rok do przodu.
  • Gdy data z pola Expires minie, dane w pliku należy według RFC 9116 uznać za nieaktualne.
  • CERT Polska publikuje własny plik pod adresem cert.pl/.well-known/security.txt, z polami Contact, Preferred-Languages, Canonical i Expires.

Po co mała firma ma plik dla „łowców luk”

Luki w stronach znajdują nie tylko przestępcy. Często trafia na nie student, programista klienta albo badacz bezpieczeństwa, który chce po prostu dać znać.

Taka osoba szuka kontaktu. Trafia na formularz „Napisz do nas”, który obsługuje dział sprzedaży, albo na adres biuro@, gdzie wiadomość ginie wśród ofert. Zgłoszenie nie dociera do osoby, która może coś naprawić, a luka zostaje otwarta.

Plik security.txt rozwiązuje to w prosty sposób. Leży zawsze w tym samym miejscu, więc nikt nie musi zgadywać. Osoba, która zna standard, sprawdza ten adres w pierwszej kolejności. Dla firmy to kilka linijek tekstu i jedna skrzynka, którą ktoś czyta.

Co musi być w pliku, a co jest dodatkiem

Standard RFC 9116 ma dwa pola obowiązkowe i kilka dodatkowych. Kolejność pól nie ma znaczenia. Gdy podasz kilka kontaktów, pierwszy oznacza ten preferowany.

PoleObowiązkowe?Co wpisać
ContactTak, co najmniej razmailto:adres e-mail, telefon albo link https:// do strony z kontaktem
ExpiresTak, dokładnie razData ważności pliku, zalecana mniej niż rok do przodu
Preferred-LanguagesNieJęzyki zgłoszeń, na przykład pl, en
CanonicalNiePełny adres, pod którym plik ma leżeć
PolicyNieLink do strony z zasadami zgłaszania luk
EncryptionNieLink do klucza, którym zgłaszający zaszyfruje wiadomość; nie sam klucz
AcknowledgmentsNieLink do strony z podziękowaniami dla zgłaszających

Gotowy wzór dla strony firmowej

Poniższe cztery linijki wystarczą większości firm. Zamień domenę i adres na swoje, a datę ustaw mniej więcej rok od dziś.

Datę zapisuje się w formacie z RFC 3339: rok, miesiąc, dzień, litera T, godzina i strefa czasowa. Litera Z na końcu oznacza czas uniwersalny.

Adres kontaktowy najlepiej założyć osobno, na przykład bezpieczenstwo@twojadomena.pl. Przekieruj go do osoby, która zajmuje się stroną: do siebie, do programisty albo do firmy, która stronę utrzymuje. Wpisz też sobie w kalendarz przypomnienie o zmianie daty Expires.

  • Contact: mailto:bezpieczenstwo@twojadomena.pl
  • Expires: 2027-10-01T00:00:00Z
  • Preferred-Languages: pl, en
  • Canonical: https://twojadomena.pl/.well-known/security.txt

Jak opublikować plik i jak odpowiadać na zgłoszenia

Zapisz plik jako zwykły tekst w kodowaniu UTF-8, czyli standardowym zapisie liter. Wgraj go do katalogu .well-known w głównym folderze strony. Zrobisz to w menedżerze plików u dostawcy hostingu albo przez FTP, czyli program do przesyłania plików na serwer.

W wielu kreatorach stron, na przykład w sklepach w abonamencie, nie ma dostępu do plików. Wtedy zapytaj pomoc techniczną, czy da się dodać plik pod tym adresem. Możesz też ustawić przekierowanie z /.well-known/security.txt do pliku w innym miejscu. RFC 9116 to dopuszcza.

Po publikacji mogą przychodzić dwa rodzaje wiadomości. Rzetelne zgłoszenie opisuje adres, kroki i skutki. Odpowiedz, podziękuj i napraw.

Zdarzają się też automatyczne zgłoszenia ze skanerów, często z prośbą o nagrodę za drobiazgi, na przykład za brak jakiegoś nagłówka. RFC 9116 sam ostrzega przed takimi raportami. Nie musisz płacić za zgłoszenia, chyba że ogłosisz program nagród.

Jeśli chcesz jasno opisać zasady, dodaj krótką stronę i podlinkuj ją w polu Policy. Wystarczy kilka zdań: jak zgłosić lukę i w jakim czasie odpowiadasz. Napisz też, czego nie wolno robić podczas testów, na przykład pobierać danych klientów ani obciążać serwera.

Jak sprawdzić to samemu

  1. Wpisz w przeglądarce https://twojadomena.pl/.well-known/security.txt. Powinien pokazać się czysty tekst, a nie strona 404 ani strona główna.
  2. Sprawdź, czy w pliku jest linijka zaczynająca się od Contact:. Sprawdź też, czy adres działa: wyślij na niego testową wiadomość.
  3. Sprawdź datę w linijce Expires. Jeśli minęła albo jest dalej niż za rok, zmień ją.
  4. Naciśnij F12, otwórz zakładkę Sieć (Network) i odśwież adres pliku. W nagłówkach odpowiedzi znajdź content-type, czyli typ pliku. Powinno być text/plain.

Co sprawdza bezpłatny skan

  • Pobieramy plik /.well-known/security.txt z domeny, pod którą działa Twoja strona. Idziemy przy tym za przekierowaniami.
  • Plik uznajemy za poprawny, gdy serwer odpowiada kodem 200 (wszystko w porządku), treść ma linijkę zaczynającą się od Contact: i nie jest stroną HTML. W innym wypadku dostajesz informację o braku pliku.
  • Jeśli data w polu Expires już minęła, zgłaszamy, że plik wygasł.
  • Gdy samo zapytanie się nie uda, na przykład przez błąd sieci, nie zgłaszamy braku pliku. Nie chcemy pokazać fałszywego alarmu.

Skan sprawdza stronę główną i do 3 podstron. Wynik dostajesz w około minutę.

Kiedy zlecić to komuś: Plik dodasz sam w kwadrans. Pomoc przydaje się, gdy strona działa w kreatorze bez dostępu do plików. Przydaje się też, gdy zgłoszenie dotyczy prawdziwej luki i trzeba ją szybko naprawić. Zobacz pełny audyt.

Pytania i odpowiedzi

Czy plik security.txt jest obowiązkowy?

Żadna polska ustawa nie wymaga go od zwykłej strony firmowej. To standard RFC 9116, czyli dobra praktyka. Kosztuje kilka minut, a skraca drogę od znalezienia luki do jej naprawy.

Czy nie zachęcę w ten sposób hakerów?

Plik nie zdradza niczego o zabezpieczeniach strony. Podaje tylko kontakt. Osoby, które szukają luk w złych zamiarach, i tak ich szukają. Plik pomaga tym, które chcą je zgłosić.

Czy mogę wpisać numer telefonu zamiast e-maila?

Tak, RFC 9116 dopuszcza adres e-mail, telefon albo stronę z kontaktem. E-mail jest wygodniejszy, bo zgłaszający może dołączyć opis i zrzuty ekranu.

Źródła

  1. RFC 9116: A File Format to Aid in Security Vulnerability Disclosure
  2. RFC 3339: format daty i czasu
  3. CERT Polska: przykład pliku security.txt

Przewodnik napisał Jonasz Jankowski, JFlow Labs Jonasz Jankowski. Robię strony z SEO, aplikacje webowe i automatyzacje AI dla firm z całej Polski.