ShieldWave-Scanner
ShieldWave-Scanner to user agent ShieldWave, usługi, która sprawdza bezpieczeństwo strony z zewnątrz, tak jak widzi ją każdy odwiedzający, i opisuje wynik jej właścicielowi. Sprawdzenie uruchamia właściciel strony albo osoba, która ma jego zgodę. Testy z danymi testowymi działają tylko dla domeny, nad którą właściciel potwierdził kontrolę; każde inne sprawdzenie tylko czyta.
Kto prowadzi skaner, jak wyłączyć swoją domenę i jak zgłosić nadużycie: Skaner ShieldWave i wyłączenie domeny. Ta strona opisuje, co skaner wysyła.
- User agent
ShieldWave-Scanner/1.0 (+https://shieldwave.io/bot)- Tempo
- Najwyżej 5 zapytań na sekundę w darmowym teście i 15 w pełnym skanie. Zwalnia, gdy tylko Twój serwer odpowie kodem 429 lub 503 albo zacznie odpowiadać wolno. Jak działa skan produkcji.
- Co robi
- Czyta strony. Na potwierdzonej domenie uruchamia też testy z danymi testowymi, które tylko czytają. Niczego na Twojej stronie nie zmienia.
- Jak go zablokować
- Wpisz go do robots.txt,
User-agent: ShieldWave-ScanneriDisallow: /, albo wyłącz swoją domenę. Szczegóły niżej. - Kontakt
- support@shieldwave.io
Jak go rozpoznać
Każde zapytanie skanera ma user agent ShieldWave-Scanner/1.0 (+https://shieldwave.io/bot). Wyszukaj w logu dostępu ShieldWave-Scanner, a znajdziesz jego zapytania. Jedno wczytanie strony w przeglądarce bez okna opisuje punkt Wczytanie strony w przeglądarce, a dwa dodatkowe zapytania o stronę główną punkt Sprawdzenie spamu dla wyszukiwarek.
Wczytanie strony w przeglądarce
Pełny skan wczytuje też raz Twoją stronę główną w przeglądarce bez okna (headless). To wczytanie ma user agent Chrome z dopisanym ShieldWave-Scanner/1.0 (+https://shieldwave.io/bot), więc je także rozpoznasz. Darmowy test i inne sprawdzenia, które tylko czytają, nie używają przeglądarki.
Sprawdzenie spamu dla wyszukiwarek
Pełny skan prosi też o Twoją stronę główną jeszcze dwa razy, żeby zobaczyć, czy wyszukiwarkom pokazywana jest inna treść niż odwiedzającym (ukryty spam, cloaking). Jedno zapytanie ma nagłówek Referer: https://www.google.com/ i user agent Chrome z dopisanym na końcu ShieldWave-Scanner, tak jakby odwiedzający przyszedł z wyszukiwarki Google. Drugie ma user agent Googlebota z dopisanym na końcu ShieldWave-Scanner: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) ShieldWave-Scanner/1.0 (+https://shieldwave.io/bot).
Zapytanie z user agentem Googlebota nie pochodzi od Google. Pokazuje, co zhakowana strona serwuje robotowi. Odróżnisz je od robota Google na dwa sposoby: jego user agent kończy się na ShieldWave-Scanner/1.0, czego robot Google nigdy nie wysyła, a odwrotne zapytanie DNS o jego adres nie kończy się na googlebot.com ani google.com. Poza stroną główną sprawdzenie o nic nie prosi. Przekierowania w obrębie Twojej domeny są śledzone najwyżej trzy razy, a przekierowanie na inną stronę jest odnotowywane, nie śledzone. Jeśli zapora odrzuci user agent Googlebota z adresu, który nie należy do Google, raport napisze, że porównanie się nie odbyło. Nie uzna tego za problem.
Gdy Twoja strona odrzuca skaner
Skaner nigdy nie ponawia zapytania z innym user agentem. W darmowym teście i w każdym innym sprawdzeniu, które tylko czyta, sprawdzenie się kończy, gdy strona odmówi wydania strony głównej. W pełnym skanie moduł, którego zapytanie o stronę główną dostanie HTTP 403 lub 406 albo wyzwanie zapory, jest zgłaszany jako „nie oceniono”, a raport podaje user agent, który trzeba dopuścić w zaporze. Kod 429 to sygnał tempa: skan zwalnia.
Dlatego reguła zapory na user agent zatrzymuje sprawdzenia. robots.txt i wyłączenie domeny też je zatrzymują i mówią nam wprost, że nie chcesz sprawdzeń, zobacz Jak go spowolnić albo zablokować.
Skąd przychodzą zapytania
Skaner działa w Google Cloud Run, w regionie europe-west1 (Belgia), i łączy się ze wspólnych pul adresów wychodzących Google Cloud. Te adresy się zmieniają i nie ma stałej listy adresów IP ShieldWave. Rozpoznawaj ShieldWave po user agencie.
Jak szybko działa
Każde sprawdzenie działa w jednym profilu. Profil ustala, ile najwyżej zapytań na sekundę sprawdzenie wysyła do Twojej domeny, oraz limit czasu samego sprawdzenia.
| Profil | Do czego służy | Zapytań na sekundę, najwyżej | Limit czasu | Dane testowe |
|---|---|---|---|---|
| basic | Darmowy test na shieldwave.io i każde sprawdzenie domeny, nad którą nie potwierdzono kontroli | 5 | 90 sekund | Nie |
| standard | Pełny skan potwierdzonej domeny: plany płatne i jednorazowy skan | 15 | 3 minuty | Tak |
| quick | Tylko API, z "profile": "quick", na potwierdzonej domenie | 10 | 60 sekund | Nie |
| deep | Tylko API, z "profile": "deep", na potwierdzonej domenie | 3 | 7,5 minuty | Tak |
| stealth | Tylko API, z "profile": "stealth": wolne sprawdzenie dla stron ze ścisłym limitem tempa zapytań | 1 | 4 minuty | Nie |
Limit czasu liczy czas, w którym sprawdzenie pracuje. Czas, w którym sprawdzenie jest zatrzymane, żeby chronić Twój serwer (patrz Tempo), nie wlicza się do limitu, więc czas od startu do końca może być dłuższy niż limit. Jeśli Twój serwer odpowiada wolno już przed sprawdzeniem (jego bazowy czas odpowiedzi p95 jest powyżej 1,5 sekundy), limit rośnie proporcjonalnie: do dwukrotności limitu, gdy bazowy p95 wynosi 3 sekundy, i nigdy ponad czterokrotność limitu. Dotyczy to pełnych skanów. Darmowy test i każde sprawdzenie domeny, nad którą nie potwierdzono kontroli, nie zatrzymują się i nie dostają dodatkowego czasu.
Profil deep zawsze sprawdza subdomeny i otwarte porty. Skan standard sprawdza subdomeny na większości platform, a otwarte porty tylko na stronach opisanych niżej. Profile standard i deep uruchamiają również testy z szablonów.
Tempo
Wszystkie zapytania jednego sprawdzenia do Twojej domeny i jej subdomen przechodzą przez jeden regulator tempa, utworzony dla tego sprawdzenia, więc równoległe sprawdzenia nigdy nie sumują się ponad limit. Zaczyna od tempa profilu i nigdy go nie przekracza. Gdy serwer daje znać, że ma dość, sprawdzenie zwalnia:
- po HTTP 429 lub 503 tempo spada do 40%,
- gdy serwer odpowiada wolno (jego czas odpowiedzi p95 przekroczy dwukrotność wartości bazowej i co najmniej 500 ms) albo gdy za wiele odpowiedzi to 5xx, tempo spada o połowę; jeśli dalej jest źle, sprawdzenie zatrzymuje się na około 30 sekund (ta przerwa nie wlicza się do limitu czasu) i mierzy ponownie, a jeśli wciąż jest źle, pozostałe aktywne testy się zatrzymują,
- nigdy nie schodzi poniżej jednego zapytania na 2 sekundy.
Pojedyncze 403 nie spowalnia sprawdzenia: zapora, która odprawia jedno zapytanie, nic nie mówi o obciążeniu serwera. Po zdrowych odpowiedziach tempo powoli wraca w górę, ale nigdy ponad tempo profilu. Gdy części sprawdzenia skończy się czas, jej pozostałe zapytania przepadają, a nie idą później. To, co sprawdzenie zmierzyło (wysłane zapytania, najwyższe tempo, czy zwolniło, zatrzymało się albo przerwało), pokazuje raport. Pełny opis: Jak ShieldWave skanuje strony produkcyjne.
Testy z szablonów
Profile standard i deep uruchamiają też testy z szablonów (Nuclei), w tym samym limicie. Gdy działają, zajmują 6 z 15 zapytań na sekundę w profilu standard i 1 z 3 w profilu deep, a tempo reszty skanu spada o tyle samo. Wysyłają user agent ShieldWave. Nie potrafią przestrzegać reguł dla ścieżek, więc skaner je pomija, gdy Twój robots.txt ma jakąkolwiek regułę Disallow dla ShieldWave.
Co wysyła
Większość zapytań to zapytania GET.
Sprawdzenie, które tylko czyta (profil basic), czyta stronę główną, jej skrypty, nagłówki bezpieczeństwa, certyfikat i ciasteczka oraz pyta o krótką, stałą listę adresów zapomnianych plików. Nie wysyła danych testowych.
Pełny skan potwierdzonej domeny zawiera też testy typowych podatności na wstrzyknięcia (SQL injection, cross-site scripting, path traversal, server-side request forgery, open redirect, XML external entities). Te testy tylko czytają: żaden nie zapisuje, nie zmienia ani nie usuwa danych, żaden nie wysyła formularzy kontaktowych ani formularzy zamówienia i żaden nie prosi serwera o duże ilości pamięci. Skaner nigdy nie wysyła PUT ani DELETE.
Niektóre testy pełnego skanu wysyłają też OPTIONS, TRACE albo małe zapytanie POST, które tylko czyta, na przykład żeby sprawdzić, jakie metody HTTP dopuszcza serwer albo czy odpowiada punkt końcowy API.
Na stronach na WordPressie pełny skan sprawdza też, czy strona logowania zdradza, jakie nazwy użytkowników istnieją. Wtyczki bezpieczeństwa mogą to zapisać jako nieudane próby logowania.
W profilu deep, a w profilu standard także dla stron statycznych albo na platformie, której skaner nie rozpoznaje, próbuje też połączenia TCP z 24 typowymi portami, w tym samym tempie co inne zapytania.
Czego nigdy nie robi
- Loguje się tylko wtedy, gdy właściciel potwierdzonej domeny uruchomi sprawdzenie z danymi logowania, które sam podał. Nigdy nie zakłada kont.
- Nigdy nie wysyła formularzy kontaktowych ani formularzy zamówienia.
- Nigdy niczego na stronie nie zmienia ani nie naprawia.
Jak go spowolnić albo zablokować
ShieldWave pobiera Twój robots.txt raz, zanim ruszy jakiekolwiek sprawdzenie, i stosuje grupę napisaną dla niego: User-agent: ShieldWave-Scanner albo User-agent: shieldwave, bez względu na wielkość liter.
DisallowiAllowdziałają jak w RFC 9309: wygrywa najdłuższa pasująca reguła, a*i$działają jako symbole wieloznaczne.Disallow: /w tej grupie zatrzymuje sprawdzenie, zanim skaner poprosi o cokolwiek innego, a raport o tym mówi.- Jakakolwiek reguła Disallow w tej grupie wyłącza testy z szablonów, bo nie potrafią przestrzegać reguł dla ścieżek.
Żeby zablokować ShieldWave na całej stronie:
User-agent: ShieldWave-Scanner
Disallow: /Żeby zablokować tylko część strony:
User-agent: ShieldWave-Scanner
Disallow: /admin/
Disallow: /*.pdf$Dlaczego User-agent: * nie wystarczy
Skaner nie stosuje reguł spod User-agent: *. Są pisane dla robotów wyszukiwarek, a sprawdzenie ShieldWave uruchamia właściciel strony albo osoba, która ma jego zgodę. Żeby zablokować ShieldWave, wpisz jego nazwę.
Wyłączenie domeny
Możesz też wyłączyć swoją domenę ze wszystkich sprawdzeń ShieldWave, także z darmowego testu i darmowych narzędzi. Napisz na support@shieldwave.io z adresu w tej domenie, w temacie wpisz „Wyłączenie domeny”. Warunki i terminy opisuje dokument Skaner ShieldWave i wyłączenie domeny.
Jak go spowolnić
Odpowiedz kodem HTTP 429 lub 503, a sprawdzenie od razu zwolni, tak jak opisuje punkt Tempo. Zwalnia też samo, gdy Twój serwer zaczyna odpowiadać wolno. Po odpowiedzi 429 skaner nigdy nie ponawia zapytania z innym user agentem. Reguła zapory, która odpowiada kodem 403, nie spowalnia sprawdzenia: skaner nie ponawia odrzuconych zapytań z innym user agentem, a raport pokazuje odrzucone sprawdzenia jako „nie oceniono”. Żeby dać ShieldWave znać, że nie chcesz sprawdzeń, użyj robots.txt albo wyłączenia domeny.
Kontakt
Jeśli sprawdzenie Twojej strony było dla Ciebie zaskoczeniem, chcesz zgłosić nadużycie albo zadać pytanie, napisz na support@shieldwave.io. Podaj domenę i wiersz z logu dostępu z czasem zapytania.