yof attack testuje Twoją własną działającą aplikację tak, jak zrobiłby to atakujący, na kontach testowych, które dla niego zakładasz. Działa na Twoim komputerze albo w Twoim CI.
yof attack · your machine or your CIPrzykładowe dane
Ty zapisujesz zakresPlik konfiguracji w Twoim repozytorium, ze zdaniem ze zgodą i Twoimi kontami testowymi.Działa na Twoim komputerze albo w Twoim CINa wersji podglądowej. Działająca strona jest pomijana, chyba że włączysz ją w konfiguracji.Testuje jak atakującyBez logowania, z zepsutym tokenem, rekord innego konta, strony administracyjne jako zwykły użytkownik.Liczy się tylko to, co zdarzyło się dwa razyKażde znalezisko jest potwierdzane dwa razy i staje się testem regresji.Sprząta i zgłaszaUsuwa własne rekordy testowe i wysyła do yof tylko zamaskowane wyniki.
.yof/attack.jsonjson
{"app": "shop.example.com","consent": "I own shop.example.com and allow yof attack to test it…","accounts": { "a": { … }, "b": { … } },"production": { "enabled": false }}
$ npx @yof/cli attack http://localhost:3000
auth · signed-in pages with no sign-in and a broken token✓
tenant · account B reads account A's record1 finding
rbac · admin pages as a normal member✓
surface · redirects, headers, the sign-in cookie✓
tenant: seen twice · a regression test was written ✓
deleted its own test records ✓ · masked results sent to yof ✓
.yof/attack.jsonjson
{"app": "shop.example.com","consent": "I own shop.example.com and allow yof attack to test it…","accounts": { "a": { … }, "b": { … } },"production": { "enabled": false }}
$ npx @yof/cli attack http://localhost:3000
auth · signed-in pages with no sign-in and a broken token✓
tenant · account B reads account A's record1 finding
rbac · admin pages as a normal member✓
surface · redirects, headers, the sign-in cookie✓
tenant: seen twice · a regression test was written ✓
deleted its own test records ✓ · masked results sent to yof ✓
.yof/attack.jsonjson
{"app": "shop.example.com","consent": "I own shop.example.com and allow yof attack to test it…","accounts": { "a": { … }, "b": { … } },"production": { "enabled": false }}
$ npx @yof/cli attack http://localhost:3000
auth · signed-in pages with no sign-in and a broken token✓
tenant · account B reads account A's record1 finding
rbac · admin pages as a normal member✓
surface · redirects, headers, the sign-in cookie✓
tenant: seen twice · a regression test was written ✓
deleted its own test records ✓ · masked results sent to yof ✓
.yof/attack.jsonjson
{"app": "shop.example.com","consent": "I own shop.example.com and allow yof attack to test it…","accounts": { "a": { … }, "b": { … } },"production": { "enabled": false }}
$ npx @yof/cli attack http://localhost:3000
auth · signed-in pages with no sign-in and a broken token✓
tenant · account B reads account A's record1 finding
rbac · admin pages as a normal member✓
surface · redirects, headers, the sign-in cookie✓
tenant: seen twice · a regression test was written ✓
deleted its own test records ✓ · masked results sent to yof ✓
.yof/attack.jsonjson
{"app": "shop.example.com","consent": "I own shop.example.com and allow yof attack to test it…","accounts": { "a": { … }, "b": { … } },"production": { "enabled": false }}
$ npx @yof/cli attack http://localhost:3000
auth · signed-in pages with no sign-in and a broken token✓
tenant · account B reads account A's record1 finding
rbac · admin pages as a normal member✓
surface · redirects, headers, the sign-in cookie✓
tenant: seen twice · a regression test was written ✓
deleted its own test records ✓ · masked results sent to yof ✓
Co testuje
authOtwiera każdą stronę dla zalogowanych bez logowania i z uszkodzonym tokenem.
tenantKonto A tworzy rekord testowy, a konto B próbuje go odczytać, znaleźć na liście i zmienić.
rbacOtwiera każdą stronę administratora jako zwykły użytkownik.
aiTwój asystent: próbuje odczytać jego ukryte instrukcje, przemycić mu polecenia i dostać się do danych innego konta.
surfaceOtwarte przekierowania, nagłówki bezpieczeństwa i ciasteczko logowania.
Czego nigdy nie robi
Nigdy nie testuje działającej strony, chyba że Twoja konfiguracja włączy to dla tej aplikacji.
Tylko czyta, loguje się i tworzy własne rekordy testowe. Zmienia lub usuwa tylko to, co samo utworzyło.
Zatrzymuje się na swoim limicie: 300 zapytań i 110 sekund, chyba że ustawisz mniej lub więcej.
Na końcu usuwa swoje rekordy testowe, także gdy je zatrzymasz.
Twoje konta testowe zostają w sekretach CI. yof nigdy nie zapisuje hasła ani tokenu.
shell
$ npx @yof/cli attack http://localhost:3000
.yof/attack.jsonjson
1{2"app": "shop.example.com",3"consent": "I own shop.example.com and allow yof attack to test it and its preview builds with my own test accounts.",4"accounts": {5"a": { "header": "Authorization", "env": "YOF_ATTACK_A" },6"b": { "header": "Authorization", "env": "YOF_ATTACK_B" },7"admin": { "header": "Authorization", "env": "YOF_ATTACK_ADMIN" }8 },
Testy ataku
Uruchom je sam za darmo albo pozwól, by yof zrobił to za Ciebie w ramach raportu.
Uruchom sam
Bezpłatnie
Narzędziem wiersza poleceń o otwartym kodzie, na Twoim komputerze lub w CI, z kontami testowymi, które zakładasz.
yof zrobi to za Ciebie
W cenie
W „Raport bezpieczeństwa: pełny” (499 USD) i „Pakiet dowodów” (1490 USD). Zgodę dajesz raz w aplikacji. Konta testowe są opcjonalne.
Zautomatyzowane testy W przygotowaniu
1990 USDza aplikacjęWkrótce
yof przeprowadza wszystkie testy ataku na jednej aplikacji, według zasad, które najpierw potwierdzasz.
Patch Continuous W przygotowaniu
49 USDmiesięcznieWkrótce
Ponownie atakuje Twoją aplikację przy każdym wydaniu.