security.txt (RFC 9116): wymagane pola i przykład
Skonfiguruj security.txt w /.well-known/security.txt: pola Contact i Expires, przykład do skopiowania oraz związek z dokumentacją techniczną CRA.
W tym artykule
- Podsumowanie
- Czym Jest security.txt?
- Minimalny security.txt
- Zalecany security.txt
- Wyjaśnienie Pole po Polu
- Konfiguracja Krok po Kroku
- Dla Produktów Bez Interfejsów Webowych
- Częste Błędy
- Lista Kontrolna Walidacji
- Harmonogram Utrzymania
- Co Umieścić w Dokumentacji Technicznej
- Kompletny Przykład
- Często zadawane pytania
- Jak Pomaga CRA Evidence
CRA wymaga publicznie dostępnego punktu kontaktowego do zgłaszania podatności. Standardem jest RFC 9116, zwykły plik tekstowy o nazwie security.txt, hostowany pod /.well-known/security.txt. Dwa wymagane pola, kilka zalecanych i około 10 minut pracy.
Ten przewodnik omawia pola, hosting, typowe błędy i to, co trzeba uwzględnić w dokumentacji technicznej.
Podsumowanie
- security.txt to standaryzowany plik (RFC 9116) informujący badaczy, jak zgłaszać podatności
- Umieść go pod
/.well-known/security.txtna swojej obecności w sieci - Minimalne wymagane pola: Contact, Expires
- Zalecane: Dodaj również Preferred-Languages, Policy, Canonical
- Dla produktów bez interfejsów webowych, dołącz URL w dokumentacji
Czym Jest security.txt?
security.txt to standard RFC (RFC 9116), który zapewnia czytelny maszynowo i przez człowieka sposób publikowania informacji kontaktowych dotyczących bezpieczeństwa.
CRA wymaga od producentów opublikowania kontaktu do zgłaszania podatności. security.txt to standardowy sposób na spełnienie tego wymogu. Automatyczne narzędzia skanujące i badacze bezpieczeństwa domyślnie sprawdzają jego obecność, a jego istnienie jest dla regulatorów konkretnym sygnałem, że wdrożono właściwe kanały ujawniania.
Minimalny security.txt
Oto najprostszy zgodny plik:
Contact: mailto:security@yourcompany.com
Expires: 2027-12-31T23:59:59.000Z
To wszystko. Dwie linie. Technicznie zgodny.
Ale zróbmy to lepiej.
Zalecany security.txt
Kompletny security.txt:
Contact: mailto:security@yourcompany.com
Contact: https://yourcompany.com/security/report
Expires: 2027-01-01T00:00:00.000Z
Encryption: https://yourcompany.com/.well-known/pgp-key.txt
Preferred-Languages: en, de, fr
Canonical: https://yourcompany.com/.well-known/security.txt
Policy: https://yourcompany.com/security/disclosure-policy
Hiring: https://yourcompany.com/careers/security
Acknowledgments: https://yourcompany.com/security/thanks
Wyjaśnienie Pole po Polu
Contact (Wymagane)
Jak badacze powinni się z tobą kontaktować.
Contact: mailto:security@yourcompany.com
Contact: https://yourcompany.com/security/report
Używaj aliasu zespołu, nie osobistego emaila. Dołącz zarówno adres email, jak i formularz webowy, jeśli go masz. Wiele linii Contact jest dozwolone, a formularz zapewnia strukturalny odbiór zgłoszeń.
Expires (Wymagane)
Expires: 2027-01-01T00:00:00.000Z
Ustaw 6-12 miesięcy w przyszłość, w formacie ISO 8601 ze strefą czasową. Dodaj przypomnienie kalendarzowe przed datą wygaśnięcia. Nieaktualny plik sygnalizuje badaczom, że nie jest utrzymywany.
Encryption (Zalecane)
Encryption: https://yourcompany.com/.well-known/pgp-key.txt
Używaj klucza zespołu, nie indywidualnego, i przechowuj klucz prywatny w HSM, jeśli to możliwe. Dołącz odcisk klucza w komentarzach, żeby badacze mogli go zweryfikować niezależnie.
Preferred-Languages (Zalecane)
Preferred-Languages: en, de, fr
Wymieniaj tylko języki, w których twój zespół bezpieczeństwa faktycznie może odpowiadać. Sortuj według preferencji. Jeśli podasz język, którego nikt w zespole nie zna, będziesz otrzymywać zgłoszenia, których nie dasz rady obsłużyć.
Canonical (Zalecane)
Canonical: https://yourcompany.com/.well-known/security.txt
Zapobiega podszywaniu i wyjaśnia, czy plik jest lustrzany.
Policy (Zalecane)
Policy: https://yourcompany.com/security/disclosure-policy
Upewnij się, że strona istnieje i ładuje się bez uwierzytelniania. Martwy link Policy podczas przeglądu bezpieczeństwa to nie jest dobre wrażenie.
Acknowledgments (Opcjonalne)
Acknowledgments: https://yourcompany.com/security/thanks
Badacze, którzy znajdą błędy, są często dobrymi kandydatami do twojego zespołu bezpieczeństwa. Uznanie zachęca do kolejnych zgłoszeń. Większość badaczy priorytetyzuje organizacje, które doceniają ich pracę.
Hiring (Opcjonalne)
Hiring: https://yourcompany.com/careers/security
Warto dołączyć, jeśli masz otwarte stanowiska w bezpieczeństwie. Badacze aktywnie szukający pracy sprawdzają te linki.
Konfiguracja Krok po Kroku
Krok 1: Utwórz Plik
cat > security.txt << 'EOF'
Contact: mailto:security@yourcompany.com
Contact: https://yourcompany.com/security/report
Expires: 2027-01-15T00:00:00.000Z
Preferred-Languages: en
Canonical: https://yourcompany.com/.well-known/security.txt
Policy: https://yourcompany.com/security/policy
EOF
Krok 2: Wybierz Lokalizację Hostingu
https://yourcompany.com/.well-known/security.txt
https://192.168.1.1/.well-known/security.txt
Krok 3: Skonfiguruj Serwer Web
Nginx:
location /.well-known/security.txt {
alias /var/www/security.txt;
default_type text/plain;
}
Apache:
Alias /.well-known/security.txt /var/www/security.txt
<Files "security.txt">
ForceType text/plain
</Files>
Express.js:
app.get('/.well-known/security.txt', (req, res) => {
res.type('text/plain');
res.sendFile(__dirname + '/security.txt');
});
Hosting statyczny: Umieść plik w katalogu .well-known.
Krok 4: Zweryfikuj
curl https://yourcompany.com/.well-known/security.txt
Walidator online: https://securitytxt.org/
Krok 5: Podpisz (Opcjonalne, ale Zalecane)
gpg --clearsign security.txt
mv security.txt.asc security.txt
Dla Produktów Bez Interfejsów Webowych
Urządzenia Wbudowane
Opcja 1: Hostuj pod http://device-ip/.well-known/security.txt
Opcja 2: Dołącz URL w dokumentacji produktu, odwołaj się do firmowego security.txt.
Oprogramowanie Desktopowe
- Dołącz kontakt bezpieczeństwa w Pomoc > O programie
- Dodaj do README/dokumentacji
Aplikacje Mobilne
- Dołącz w Ustawienia > O aplikacji > Bezpieczeństwo
- Dodaj do opisu w sklepie z aplikacjami
Odniesienie w Dokumentacji
## Security Vulnerability Reporting
- Email: security@yourcompany.com
- Web: https://yourcompany.com/security/report
- Policy: https://yourcompany.com/security/policy
Our security.txt file: https://yourcompany.com/.well-known/security.txt
Częste Błędy
Wygasły Plik
Expires: 2024-01-01T00:00:00.000Z # EXPIRED!
Naprawa: Ustaw datę w przyszłości. Dodaj przypomnienie kalendarzowe.
Zła Lokalizacja
/security.txt # Wrong
/.well-known/security.txt # Correct
Nieprawidłowy Format
Naprawa: Używaj dat ISO 8601, URI mailto: lub https:.
Martwe Linki
Naprawa: Zweryfikuj, że wszystkie linki działają. Sprawdzaj po wdrożeniach.
Osobisty Email
Contact: mailto:john.smith@yourcompany.com # Bad
Naprawa: Używaj aliasu zespołu.
Brak HTTPS
Naprawa: Zawsze używaj HTTPS dla URL związanych z bezpieczeństwem.
Lista Kontrolna Walidacji
SECURITY.TXT VALIDATION CHECKLIST
REQUIRED FIELDS:
[ ] Contact field present (mailto: or https:)
[ ] Expires field present (future date, ISO 8601)
RECOMMENDED FIELDS:
[ ] Preferred-Languages included
[ ] Canonical URL matches actual location
[ ] Policy link works and points to CVD policy
HOSTING:
[ ] File at /.well-known/security.txt
[ ] HTTPS accessible
[ ] Content-Type: text/plain
VERIFICATION:
[ ] curl test successful
[ ] Online validator passes
[ ] Links all resolve (no 404s)
MAINTENANCE:
[ ] Calendar reminder set for before Expires date
[ ] Update process documented
Harmonogram Utrzymania
| Zadanie | Częstotliwość |
|---|---|
| Sprawdź datę wygaśnięcia | Miesięcznie |
| Zweryfikuj, że linki działają | Miesięcznie |
| Aktualizuj klucz PGP (jeśli wygasa) | W razie potrzeby |
| Przejrzyj adresy kontaktowe | Kwartalnie |
| Pełna kontrola walidacji | Przed wygaśnięciem |
Co Umieścić w Dokumentacji Technicznej
CRA wymaga od producentów prowadzenia dokumentacji technicznej (Annex VII) opisującej proces obsługi podatności. Plik security.txt i polityka CVD, do której odsyła, są bezpośrednimi elementami tej dokumentacji.
Dokumentacja techniczna powinna zawierać:
- URL pliku security.txt i jakie metody kontaktu udostępnia
- URL polityki ujawniania, do której odsyła
- SLA dotyczące odpowiedzi, do których zobowiązałeś się w tej polityce
Regulatorzy przeglądający dokumentację techniczną szukają dowodów na to, że działa sprawny proces przyjmowania zgłoszeń o podatnościach. Aktywny, niewyekspirowały security.txt z działającym linkiem Policy to konkretny sygnał. Wygasły plik lub martwe linki działają na twoją niekorzyść.
Vulnerability Reporting Contact Points:
- security.txt: https://company.com/.well-known/security.txt
- Email: security@company.com
- Web Form: https://company.com/security/report
- Policy: https://company.com/security/policy
Kompletny Przykład
Contact: https://acmetech.eu/security/report
Contact: mailto:security@acmetech.eu
Expires: 2027-06-01T00:00:00.000Z
Preferred-Languages: en, de, es
Canonical: https://acmetech.eu/.well-known/security.txt
Policy: https://acmetech.eu/security/disclosure-policy
Acknowledgments: https://acmetech.eu/security/hall-of-fame
Hiring: https://acmetech.eu/careers#security
Wskazówka: Konfiguracja security.txt zajmuje 10 minut i spełnia kluczowy wymóg CRA dotyczący opublikowanego kontaktu do zgłaszania podatności. Zrób to dziś.
Ważne: Twój security.txt musi zawierać metodę kontaktu, preferowany język i datę wygaśnięcia. Powinien znajdować się pod /.well-known/security.txt w twojej domenie.
Często zadawane pytania
Które pola są wymagane w pliku security.txt?
RFC 9116 wymaga obowiązkowo tylko dwóch pól: Contact oraz Expires. Wszystkie pozostałe, w tym Canonical, Encryption, Preferred-Languages, Policy i Acknowledgments, są zalecane lub opcjonalne. Plik z jedną linią Contact i przyszłą datą Expires jest poprawny, ale to powiązanie go z działającym procesem obsługi podatności jest tym, czego faktycznie szukają organy nadzoru.
Jaki jest poprawny format pola Expires?
Expires przyjmuje jeden znacznik czasu w formacie ISO 8601 ze strefą czasową, na przykład 2027-01-01T00:00:00.000Z. Data musi być w przyszłości, a RFC 9116 zaleca ustawienie jej krócej niż rok naprzód, żeby plik nie wyglądał na porzucony. Dopuszczalna jest tylko jedna linia Expires, a data w przeszłości unieważnia cały plik dla większości parserów.
Do czego służy pole Canonical i czy jest wymagane?
Canonical jest opcjonalne. Wskazuje autorytatywny adres URI pliku, dzięki czemu badacz może potwierdzić, że czyta prawdziwy security.txt, a nie kopię umieszczoną gdzie indziej. Ustaw je dokładnie na lokalizację https://twojadomena/.well-known/security.txt i pozostaw na HTTPS, żeby link nie mógł zostać podmieniony w trakcie przesyłu.
Jak zapisuje się pole Acknowledgments w RFC 9116?
RFC 9116 zapisuje to pole jako Acknowledgments, w angielskiej formie amerykańskiej, bez „e" przed „-ments". To pole opcjonalne, które prowadzi do strony z podziękowaniami dla badaczy zgłaszających problemy, często do tablicy zasłużonych dla bezpieczeństwa. Zachęca do odpowiedzialnego ujawniania, ale nie ma żadnego wpływu na to, czy plik jest poprawny.
Gdzie powinien znajdować się plik security.txt?
Plik musi leżeć pod /.well-known/security.txt, serwowany przez HTTPS jako text/plain, bez uwierzytelniania. Skaner zgłaszający „security.txt not configured" oznacza, że plik nie istnieje, jest schowany za logowaniem albo leży w złym miejscu, na przykład jako /security.txt w katalogu głównym witryny. Dla produktu bez własnej witryny odwołaj się do pliku firmowego z dokumentacji produktu.
Czy CRA naprawdę wymaga pliku security.txt?
CRA nie wymienia security.txt z nazwy, ale wymaga kontaktu, który za nim stoi. Załącznik I część II pkt 6 zobowiązuje producentów do podania adresu kontaktowego do zgłaszania podatności, a Artykuł 13 ust. 17 wymaga jednego punktu kontaktowego dla użytkowników. security.txt to standardowy sposób opublikowania tego kontaktu, a dokumentacja techniczna ma zawierać dowód, że kontakt istnieje (Załącznik VII pkt 2 lit. b)). Zobacz skoordynowane ujawnianie podatności, żeby zrozumieć, jak wpisuje się to w szerszy obowiązek.
Jak Pomaga CRA Evidence
security.txt to jeden element szerszego obrazu obsługi podatności. Trudniejsza część to pełny proces stojący za tym plikiem: polityka, SLA dla triażu, zgłaszanie do ENISA i dokumentowanie wszystkiego w dokumentacji technicznej. Do tego służy CRA Evidence.
Zacznij na craevidence.com.
Ten artykuł służy wyłącznie celom informacyjnym i nie stanowi porady prawnej. W celu uzyskania konkretnych wskazówek dotyczących zgodności, skonsultuj się z wykwalifikowanym prawnikiem.
Powiązane artykuły
CRA dla niemieckich producentów: BSI, CERT-Bund i CE
Czy CRA dotyczy Twojego produktu?
Odpowiedz na 6 prostych pytań, aby dowiedzieć się, czy Twój produkt podlega pod Cyber Resilience Act UE. Uzyskaj wynik w mniej niż 2 minuty.
Gotowy na osiągnięcie zgodności z CRA?
Zacznij zarządzać swoimi SBOM-ami i dokumentacją zgodności z CRA Evidence.