Tester wykonujący test penetracyjny robi to samo co intruz: szuka drogi do środka i z niej korzysta. Przepisy o przestępstwach komputerowych w większości krajów nie pytają o intencje. Pytają, czy dostęp był objęty upoważnieniem. Cała różnica między usługą a przestępstwem to zestaw dokumentów, podpisanych przez właściwą osobę przed rozpoczęciem pracy.
Ten artykuł opisuje te dokumenty. Nie jest poradą prawną: prawo różni się w zależności od kraju, a o tym, co ma zastosowanie w Twoim przypadku, decydują Twoi prawnicy.
Dokumenty
Umowa
Umowa handlowa: co zostanie wykonane, do kiedy, za ile, z jaką odpowiedzialnością i jaką poufnością. Sama umowa nie jest upoważnieniem. Zobowiązuje strony wobec siebie nawzajem; sama w sobie nie określa, co wolno atakować.
Pisemne upoważnienie
Oświadczenie, którym właściciel systemów zezwala na test. Powinno wskazywać:
- systemy, przez adres, domenę albo inny jednoznaczny identyfikator;
- okres, w którym testy są dozwolone;
- osoby lub firmę, którym wolno testować;
- osobę podpisującą i charakter, w jakim ta osoba podpisuje.
Testerzy mają je przy sobie, dosłownie lub w przenośni, przez cały projekt. Gdy dostawca hostingu albo organ ścigania pyta, co się dzieje, odpowiedzią jest właśnie ten dokument.
Zasady prowadzenia testów
Granice techniczne: które techniki są dozwolone, a które wyłączone, godziny testów, dopuszczalna częstotliwość żądań, co się dzieje, gdy system traci stabilność, do kogo dzwonić w nocy. NIST SP 800-115 traktuje zasady prowadzenia testów jako obowiązkowy element planowania, a PTES z tego samego powodu umieszcza je w fazie ustaleń wstępnych: pytania, których nie rozstrzygnięto przed testem, rozstrzyga się w trakcie incydentu.
Opis zakresu
Lista tego, co jest objęte zakresem, i tego, co jest poza nim. Wyłączenia są tak samo ważne jak to, co zakres obejmuje: dostawca płatności obsługujący finalizację zamówienia, współdzielona platforma firmy hostingowej, system jednokrotnego logowania należący do spółki matki.
Poufność i ochrona danych
Umowa o zachowaniu poufności (NDA), podpisana przed wymianą szczegółów technicznych. Jeśli tester może natrafić na dane osobowe, także umowa powierzenia przetwarzania danych. W Unii Europejskiej wynika to z art. 28 RODO, gdy tester przetwarza dane osobowe w imieniu klienta.
Kto może podpisać
Upoważnienie jest warte tyle, ile umocowanie osoby, która je podpisuje.
- Właściciel systemu, a nie jego użytkownik. Firma nie może upoważnić do testowania produktu SaaS, który subskrybuje.
- Osoba uprawniona do reprezentowania firmy. Programista, który bez wiedzy kierownictwa zamawia test systemu produkcyjnego pracodawcy, nie udzielił żadnego upoważnienia.
- Każdy właściciel, jeśli jest ich kilku. System prowadzony przez jedną firmę na infrastrukturze innej może wymagać upoważnienia od obu.
Staranny wykonawca to weryfikuje: sprawdza rejestr handlowy i własność domen oraz potwierdza zamówienie oficjalnym kanałem firmy. Wykonawca, który o to nie pyta, powinien Cię zaniepokoić.
Podmioty trzecie
Twoje upoważnienie obejmuje to, co należy do Ciebie. Wokół tego zwykle są systemy, które do Ciebie nie należą.
Dostawcy chmury. Duzi dostawcy publikują zasady testowania zasobów, które klienci uruchamiają na ich platformach. W chwili pisania tego tekstu AWS, Microsoft Azure i Google Cloud pozwalają klientom testować własne zasoby bez uprzedniej zgody, w granicach zasad, które każdy z nich publikuje; AWS wymienia ponadto usługi, które wolno testować. Testy odporności na ataki typu odmowa usługi (DoS) ograniczają wszyscy trzej. Zasady się zmieniają, dlatego sprawdza się je przed każdym projektem, a nie odtwarza z pamięci z poprzedniego.
Hosting i usługi zarządzane. Hosting współdzielony, zarządzane bazy danych i sieci dostarczania treści mają własne warunki. Niektóre wymagają powiadomienia, inne całkowicie zabraniają testów.
Dostawcy i partnerzy. Integracja z partnerem nie rozszerza Twojego upoważnienia na tę część integracji, która należy do partnera. Bez pisemnej zgody partnera testy kończą się na Twojej granicy.
Typowe luki
- Test się zaczął, a upoważnienie jest wciąż „w trakcie podpisywania”.
- Zakres wymienia domenę, a aplikacja, która za nią stała, w zeszłym miesiącu przeniosła się pod inny adres.
- Upoważnienie podpisał ktoś, kto nie miał umocowania, by je podpisać.
- Środowisko produkcyjne jest objęte zakresem, a nikt nie powiadomił zespołu utrzymania.
- Spółka zależna w innym kraju jest testowana na podstawie upoważnienia spółki matki.
Każda z nich sprawia, że w części prac test przestaje być objęty upoważnieniem, a żadnej z nich nie widać od strony technicznej.
Bug bounty to też upoważnienie
Program bug bounty to upoważnienie udzielone publicznie: zasady programu mówią, co i jak wolno testować, a kto ich przestrzega, działa za zgodą właściciela. Klauzula safe harbor dodaje zobowiązanie właściciela, że nie podejmie kroków prawnych przeciwko badaczom, którzy pozostają w granicach zasad. Wiąże ona tylko właściciela. Nie zmienia prawa karnego i nie wiąże podmiotów trzecich, dlatego zasad trzeba przestrzegać dokładnie, a system bez programu nie jest celem.
W skrócie
Zanim zostanie wysłany pierwszy pakiet, powinny istnieć: umowa, pisemne upoważnienie podpisane przez osobę uprawnioną do jego podpisania, zasady prowadzenia testów, zakres z wyłączeniami i zgoda każdego podmiotu trzeciego, którego systemów dotyczą testy. Szczegóły tego, jak to robimy, są na stronie „Przebieg współpracy”.