yof attack · your machine or your CIDatos de ejemplo
Tú escribes el alcanceUn archivo de configuración en tu repositorio, con una frase de consentimiento y tus propias cuentas de prueba.Se ejecuta en tu máquina o en tu CIContra una versión de vista previa. Tu sitio publicado queda fuera salvo que tu configuración lo active.Prueba como un atacanteSin iniciar sesión, con un token roto, el registro de otra cuenta, páginas de administración como un miembro normal.Solo cuenta lo que ocurrió dos vecesCada hallazgo se confirma dos veces y se convierte en una prueba de regresión.Limpia e informaBorra sus propios registros de prueba y envía a yof solo resultados enmascarados.
.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 ✓
Qué prueba
authAbre cada página para usuarios con sesión sin iniciar sesión y con un token roto.
tenantLa cuenta A crea un registro de prueba y la cuenta B intenta leerlo, encontrarlo en una lista y cambiarlo.
rbacAbre cada página de administración como un miembro normal.
aiTu asistente: intenta leer sus instrucciones ocultas, colarle órdenes y llegar a los datos de otra cuenta.
surfaceRedirecciones abiertas, cabeceras de seguridad y la cookie de inicio de sesión.
Lo que nunca hace
Nunca prueba tu sitio en producción, salvo que tu configuración lo active para esta app.
Solo lee, inicia sesión y crea sus propios registros de prueba. Solo cambia o borra lo que creó.
Se detiene en su límite: 300 peticiones y 110 segundos, salvo que pongas menos o más.
Al final borra sus registros de prueba, aunque lo detengas.
Tus cuentas de prueba se quedan en los secretos de tu CI. yof nunca guarda una contraseña ni 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 },
Pruebas de ataque
Ejecútalas tú gratis, o deja que yof las ejecute por ti como parte de un informe.
Ejecútalas tú
Gratis
Con la herramienta de línea de comandos de código abierto, en tu equipo o en tu CI, con cuentas de prueba que creas tú.
yof las ejecuta por ti
Incluido
En «Informe de seguridad: completo» (499 US$) y «Pack de evidencias» (1490 US$). Das tu consentimiento una vez en la app. Las cuentas de prueba son opcionales.
Prueba automatizada En desarrollo
1990 US$por appAbre pronto
yof ejecuta todas las pruebas de ataque en una app, con reglas que confirmas antes.