yof attack перевіряє ваш робочий застосунок так, як це зробив би нападник, із тестовими акаунтами, які ви для нього створюєте. Працює на вашому комп'ютері або у вашому CI.
Ви задаєте межіФайл налаштувань у вашому репозиторії, з реченням про згоду і вашими тестовими акаунтами.Працює на вашому комп'ютері або у вашому CIНа прев'ю-збірці. Живий сайт не зачіпається, доки ви не ввімкнете його в налаштуваннях.Перевіряє як нападникБез входу, зі зламаним токеном, запис чужого акаунта, сторінки адміністратора від імені звичайного учасника.Рахується лише те, що сталося двічіКожна знахідка підтверджується двічі й стає регресійним тестом.Прибирає за собою і звітуєВидаляє свої тестові записи й надсилає до 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 ✓
Що він перевіряє
authВідкриває кожну сторінку для тих, хто увійшов, без входу і зі зламаним токеном.
tenantАкаунт A створює тестовий запис, потім акаунт B намагається його прочитати, знайти у списку і змінити.
rbacВідкриває кожну сторінку адміністратора як звичайний учасник.
aiВаш асистент: намагається прочитати його приховані інструкції, підкинути йому команди і дістатися до даних іншого акаунта.
surfaceВідкриті перенаправлення, заголовки безпеки і cookie входу.
Чого він ніколи не робить
Він ніколи не перевіряє ваш робочий сайт, якщо ваша конфігурація не ввімкне це для цього застосунку.
Він лише читає, входить і створює власні тестові записи. Змінює чи видаляє лише те, що створив сам.
Він зупиняється на своєму ліміті: 300 запитів і 110 секунд, якщо ви не задасте менше чи більше.
Наприкінці він видаляє свої тестові записи, навіть якщо ви його зупините.
Ваші тестові акаунти лишаються в секретах CI. yof ніколи не зберігає пароль чи токен.
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 },
Атакувальні тести
Запускайте їх самі безкоштовно або доручіть це yof у межах звіту.
Запустіть самі
Безкоштовно
Відкритим інструментом командного рядка, на вашому комп'ютері або в CI, з тестовими акаунтами, які ви створюєте.
yof запустить за вас
Входить у ціну
У «Звіт з безпеки: повний» (499 USD) і «Пакет доказів» (1 490 USD). Ви один раз даєте згоду в застосунку. Тестові акаунти необов'язкові.
Автоматизоване тестування У розробці
1 990 USDза застосунокСкоро відкриється
yof проводить усі атакувальні тести на одному застосунку за правилами, які ви спершу підтверджуєте.