yof attack testet deine eigene laufende App so, wie es ein Angreifer tun würde, mit Testkonten, die du dafür anlegst. Es läuft auf deinem Rechner oder in deinem CI.
Du legst den Umfang festEine Konfigurationsdatei in deinem Repository, mit einem Zustimmungssatz und deinen eigenen Testkonten.Es läuft auf deinem Rechner oder im CIGegen einen Preview-Build. Deine Live-Seite bleibt außen vor, außer deine Konfiguration schaltet sie ein.Es testet wie ein AngreiferOhne Anmeldung, mit kaputtem Token, mit dem Datensatz eines anderen Kontos, Admin-Seiten als normales Mitglied.Nur was zweimal passiert, zähltJeder Fund wird zweimal bestätigt und wird zu einem Regressionstest.Es räumt auf und berichtetEs löscht seine eigenen Testdaten und schickt nur maskierte Ergebnisse an 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 ✓
Was es testet
authÖffnet jede Seite für Angemeldete ohne Anmeldung und mit einem kaputten Token.
tenantKonto A legt einen Testdatensatz an, dann versucht Konto B, ihn zu lesen, in einer Liste zu finden und zu ändern.
rbacÖffnet jede Admin-Seite als normales Mitglied.
aiDein Assistent: versucht, seine verborgenen Anweisungen zu lesen, ihm Befehle unterzuschieben und an Daten eines anderen Kontos zu kommen.
surfaceOffene Weiterleitungen, Sicherheits-Header und das Anmelde-Cookie.
Was es nie tut
Es testet nie deine Live-Seite, außer deine Konfiguration schaltet das für diese App ein.
Es liest nur, meldet sich an und legt eigene Testdatensätze an. Es ändert oder löscht nur, was es selbst angelegt hat.
Es stoppt an seinem Budget: 300 Anfragen und 110 Sekunden, außer du legst weniger oder mehr fest.
Am Ende löscht es seine Testdatensätze, auch wenn du es anhältst.
Deine Testkonten bleiben in deinen CI-Secrets. yof speichert nie ein Passwort oder 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 },
Angriffstests
Führ sie kostenlos selbst aus, oder lass yof sie als Teil eines Berichts für dich ausführen.
Selbst ausführen
Kostenlos
Mit dem quelloffenen Kommandozeilen-Tool, auf deinem Rechner oder in deiner CI, mit Testkonten, die du anlegst.
yof führt sie für dich aus
Inklusive
In „Sicherheitsbericht: vollständig“ (499 $) und „Nachweispaket“ (1.490 $). Du stimmst einmal in der App zu. Testkonten sind optional.
Automatisierter Testlauf In Entwicklung
1.990 $pro AppStartet bald
yof führt alle Angriffstests an einer App aus, nach Regeln, die du vorher bestätigst.