Zakres
Co yof obejmuje, a czego nie
Klasa po klasie: czego yof szuka w Twoim kodzie, co na działającej aplikacji sprawdzają „Zautomatyzowane testy” i czego nie robi żadne z nich.
Jak czytać tabelę
- W kodzie: wzorce, których reguły szukają w plikach połączonego repozytorium. Reguła znajduje wzorzec i nie uruchamia kodu, więc większość tych znalezisk wymaga potwierdzenia.
- Na żywo: testy na działającej aplikacji. „Zautomatyzowane testy” są w przygotowaniu i nie są w sprzedaży, więc nic tak oznaczonego nie jest jeszcze dostępne dla klientów.
- Nieobjęte: to, czego nie robi żadne z nich. Raport nigdy nie brzmi tak, jakby to sprawdzono.
| Klasa | W kodzie | Na żywo | Nieobjęte |
|---|---|---|---|
| SQL injection |
|
| Dane, które przechodzą przez inną funkcję lub plik, wstrzyknięcie zapisane (drugiego rzędu) i błędy wewnątrz ORM. |
| NoSQL injection |
|
| Języki zapytań innych baz dokumentowych oraz języki inne niż JavaScript i TypeScript. |
| Wstrzyknięcie poleceń |
|
| Argumenty wstrzyknięte do programu wywołanego bez powłoki oraz inne języki. |
| Wstrzyknięcie do szablonu |
|
| Szablony czytane z bazy danych i silniki szablonów działające w przeglądarce. |
| Wykonanie kodu z danych |
| Bez testu na żywo | Wykonanie przez obiekt piaskownicy oraz inne języki. |
| Cross-site scripting |
|
| Obejścia zaufania w Angular i Vue, ustawienia autoescape szablonów serwera, skrypty zapisane i dowód w prawdziwej przeglądarce. |
| Otwarte przekierowanie |
|
| Listy dozwolonych adresów, które istnieją i dają się obejść. |
| Server-side request forgery |
|
| DNS rebinding, przekierowania prowadzące do wewnątrz i to, czy da się sięgnąć do metadanych chmury. |
| Cross-site request forgery |
|
| Frameworki inne niż aplikacje w stylu Express, kontrola wykonywana przez proxy i to, czy trasę chronią domyślne ustawienia przeglądarki. |
| Niebezpieczne wczytywanie obiektów |
|
| Java ObjectInputStream, .NET BinaryFormatter i zewnętrzne encje XML. |
| Słaba kryptografia |
|
| Długości kluczy, wersje protokołów i certyfikaty działającej usługi, własna kryptografia i kanały boczne. |
| Hasła w kodzie i konfiguracji |
| Bez testu na żywo | Historia git plików, których już nie ma, to, czy znalezione hasło nadal działa, i jedno zwykłe słowo bez cyfry i symbolu. |
| Przesyłanie plików |
|
| To, co z plikiem robi usługa przechowywania lub CDN, złośliwe oprogramowanie w pliku i limity rozmiaru. |
| Dockerfile |
| Bez testu na żywo | Zbudowane obrazy i pakiety systemu w ich wnętrzu nie są skanowane. Koniec wsparcia jest znany tylko dla sześciu oficjalnych obrazów bazowych. |
| docker-compose |
| Bez testu na żywo | Działające kontenery i pliki env, których nie ma w repozytorium. |
| Manifesty Kubernetes |
| Bez testu na żywo | Działający klaster, niewyrenderowane szablony Helm, RBAC, polityki sieciowe i admission oraz pliki z kotwicami YAML. |
| Terraform |
| Bez testu na żywo | Samo konto w chmurze: to, co wdrożono, może różnić się od plików. Wartości ze zmiennych, modułów lub funkcji, inni dostawcy i inne typy zasobów. |
Poza każdym wierszem
- Zbudowane obrazy kontenerów i pakiety systemowe w ich wnętrzu nie są skanowane.
- Te reguły czytają pliki. Nie sprawdzają działającego systemu: klastra, konta w chmurze ani zachowania działającej aplikacji.
- Dane z żądania są śledzone tylko w obrębie jednej funkcji lub handlera. Wartość, która najpierw przechodzi przez inną funkcję lub plik, nie jest śledzona.
- Języki: reguły składniowe czytają JavaScript i TypeScript. Python ma proste, dokładne formy. PHP, Ruby, Go, Java, Kotlin i C# mają kilka form jednowierszowych. Innych języków te reguły nie czytają.
Nigdy nie obejmują tego automatyczne sprawdzenia
- Błędy w logice biznesowej, na przykład cena lub krok, który ktoś może pominąć.
- Słabości, o których nikt jeszcze nie wie (zero-day).
- Ludzie i procesy: phishing, hasła przekazywane ręcznie, kto ma dostęp.
- Wszystko poza zakresem wskazanym w tym raporcie i każda zmiana po jego dacie.
To nie jest test penetracyjny.