yof attack test je eigen draaiende app zoals een aanvaller dat zou doen, met testaccounts die je ervoor aanmaakt. Het draait op je machine of in je CI.
yof attack · your machine or your CIVoorbeeldgegevens
Jij schrijft de scopeEen configbestand in je repository, met een toestemmingszin en je eigen testaccounts.Het draait op je machine of in je CIOp een previewbuild. Je live site blijft erbuiten, tenzij je config die aanzet.Het test zoals een aanvallerZonder in te loggen, met een kapot token, het record van een ander account, beheerpagina's als gewoon lid.Alleen wat twee keer gebeurde teltElke bevinding wordt twee keer bevestigd en wordt een regressietest.Het ruimt op en brengt verslag uitHet verwijdert zijn eigen testrecords en stuurt alleen gemaskeerde resultaten naar 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 ✓
.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 ✓
Wat het test
authOpent elke pagina voor ingelogde gebruikers zonder inloggen en met een kapot token.
tenantAccount A maakt een testrecord, daarna probeert account B het te lezen, in een lijst te vinden en te wijzigen.
rbacOpent elke beheerpagina als gewoon lid.
aiJe assistent: probeert de verborgen instructies te lezen, er opdrachten in te smokkelen en bij gegevens van een ander account te komen.
surfaceOpen redirects, beveiligingsheaders en de inlogcookie.
Wat het nooit doet
Het test nooit je live site, tenzij je configuratie dat voor deze app aanzet.
Het leest alleen, logt in en maakt eigen testrecords. Het wijzigt of verwijdert alleen wat het zelf maakte.
Het stopt bij zijn budget: 300 verzoeken en 110 seconden, tenzij je minder of meer instelt.
Aan het eind verwijdert het zijn testrecords, ook als je het stopt.
Je testaccounts blijven in je CI-secrets. yof bewaart nooit een wachtwoord of 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 },
Aanvalstests
Voer ze zelf gratis uit, of laat yof ze voor je uitvoeren als onderdeel van een rapport.
Zelf uitvoeren
Gratis
Met de opensource-opdrachtregeltool, op je eigen machine of in je CI, met testaccounts die je zelf maakt.
yof voert ze voor je uit
Inbegrepen
In ‘Beveiligingsrapport: volledig’ (US$ 499) en ‘Bewijspakket’ (US$ 1.490). Je geeft één keer toestemming in de app. Testaccounts zijn optioneel.
Geautomatiseerde testronde In ontwikkeling
US$ 1.990per appBinnenkort
yof voert alle aanvalstests uit op één app, volgens regels die je eerst bevestigt.