yof attack mette alla prova la tua app in esecuzione come farebbe un attaccante, con account di prova che crei apposta. Gira sulla tua macchina o nella tua CI.
yof attack · your machine or your CIDati di esempio
Scrivi tu il perimetroUn file di configurazione nel tuo repository, con una frase di consenso e i tuoi account di prova.Gira sulla tua macchina o nella tua CISu una build di anteprima. Il tuo sito online resta escluso, a meno che la tua configurazione non lo attivi.Prova come un attaccanteSenza accesso, con un token rotto, il record di un altro account, pagine di amministrazione da membro normale.Conta solo ciò che è successo due volteOgni problema viene confermato due volte e diventa un test di regressione.Ripulisce e riferisceCancella i propri record di prova e invia a yof solo risultati mascherati.
.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 ✓
Cosa prova
authApre ogni pagina per utenti connessi senza accesso e con un token rotto.
tenantL'account A crea un record di prova, poi l'account B prova a leggerlo, trovarlo in un elenco e modificarlo.
rbacApre ogni pagina di amministrazione come un membro normale.
aiIl tuo assistente: prova a leggere le sue istruzioni nascoste, a infilargli comandi e a raggiungere i dati di un altro account.
surfaceReindirizzamenti aperti, intestazioni di sicurezza e il cookie di accesso.
Cosa non fa mai
Non prova mai il tuo sito in produzione, a meno che la tua configurazione non lo attivi per questa app.
Legge, accede e crea i propri record di prova, nient'altro. Modifica o cancella solo ciò che ha creato.
Si ferma al suo limite: 300 richieste e 110 secondi, a meno che tu non imposti meno o più.
Alla fine cancella i suoi record di prova, anche se lo fermi.
I tuoi account di prova restano nei segreti della tua CI. yof non salva mai una password o un token.
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 },
Test di attacco
Eseguili tu gratis, oppure lascia che sia yof a eseguirli per te in un report.
Eseguili tu
Gratis
Con lo strumento a riga di comando open source, sul tuo computer o nella tua CI, con account di test che crei tu.
yof li esegue per te
Incluso
In «Report di sicurezza: completo» (499 USD) e «Pacchetto di prove» (1490 USD). Dai il consenso una volta nell'app. Gli account di test sono facoltativi.
Test automatizzato In sviluppo
1990 USDper appApre a breve
yof esegue tutti i test di attacco su un'app, secondo regole che confermi prima.