O yof attack testa a sua própria app em funcionamento como um atacante faria, com contas de teste que cria para isso. Corre na sua máquina ou no seu CI.
yof attack · your machine or your CIDados de exemplo
Você escreve o âmbitoUm ficheiro de configuração no seu repositório, com uma frase de consentimento e as suas contas de teste.Corre na sua máquina ou no seu CIContra uma versão de pré-visualização. O seu site publicado fica de fora, a não ser que a sua configuração o ative.Testa como um atacanteSem iniciar sessão, com um token inválido, o registo de outra conta, páginas de administração como um membro normal.Só conta o que aconteceu duas vezesCada achado é confirmado duas vezes e passa a ser um teste de regressão.Limpa e relataApaga os seus próprios registos de teste e envia ao yof apenas resultados mascarados.
.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 ✓
O que testa
authAbre cada página para quem tem sessão sem iniciar sessão e com um token estragado.
tenantA conta A cria um registo de teste e a conta B tenta lê-lo, encontrá-lo numa lista e alterá-lo.
rbacAbre cada página de administração como um membro normal.
aiO seu assistente: tenta ler as instruções escondidas, passar-lhe comandos e chegar aos dados de outra conta.
surfaceRedirecionamentos abertos, cabeçalhos de segurança e o cookie de sessão.
O que nunca faz
Nunca testa o seu site em produção, a não ser que a sua configuração o ative para esta app.
Só lê, inicia sessão e cria os seus próprios registos de teste. Só altera ou apaga o que criou.
Para no seu limite: 300 pedidos e 110 segundos, a não ser que defina menos ou mais.
No fim apaga os registos de teste, mesmo que o pare.
As suas contas de teste ficam nos segredos do CI. O yof nunca guarda uma palavra-passe nem um 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 },
Testes de ataque
Execute-os você mesmo gratuitamente, ou deixe o yof executá-los por si num relatório.
Execute-os você mesmo
Grátis
Com a ferramenta de linha de comandos de código aberto, no seu computador ou no seu CI, com contas de teste criadas por si.
O yof executa-os por si
Incluído
Em «Relatório de segurança: completo» (US$ 499) e «Pacote de evidências» (US$ 1.490). Dá o seu consentimento uma vez na app. As contas de teste são opcionais.
Teste automatizado Em desenvolvimento
US$ 1.990por appAbre em breve
O yof executa todos os testes de ataque numa app, segundo regras que confirma primeiro.