Dekking
Wat yof dekt, en wat niet
Klasse voor klasse: waar yof in je code naar zoekt, wat de ‘Geautomatiseerde testronde’ op een draaiende app test, en wat geen van beide doet.
Zo lees je de tabel
- In code: patronen waarnaar de regels zoeken in de bestanden van een gekoppelde repository. Een regel vindt een patroon en voert de code niet uit, dus de meeste van deze bevindingen moeten worden bevestigd.
- Live: tests op een draaiende app. De ‘Geautomatiseerde testronde’ is in ontwikkeling en niet te koop, dus niets met die markering is al beschikbaar voor klanten.
- Niet gedekt: wat geen van beide doet. Een rapport leest nooit alsof dit is gecontroleerd.
| Klasse | In code | Live | Niet gedekt |
|---|---|---|---|
| SQL-injectie |
|
| Invoer die door een andere functie of een ander bestand gaat, opgeslagen injectie (tweede orde) en fouten binnen een ORM. |
| NoSQL-injectie |
|
| Querytalen van andere documentdatabases, en andere talen dan JavaScript en TypeScript. |
| Command-injectie |
|
| Argumenten die worden geïnjecteerd in een programma dat zonder shell wordt aangeroepen, en andere talen. |
| Template-injectie |
|
| Templates die uit een database worden gelezen, en template-engines die in de browser draaien. |
| Code-evaluatie |
| Geen live test | Evaluatie via een sandbox-object, en andere talen. |
| Cross-site scripting |
|
| Trust-bypasses van Angular en Vue, autoescape-instellingen van servertemplates, opgeslagen scripts en een bewijs in een echte browser. |
| Open redirect |
|
| Lijsten met toegestane adressen die bestaan en te omzeilen zijn. |
| Server-side request forgery |
|
| DNS-rebinding, redirects die naar binnen leiden, en of cloud-metadata bereikbaar is. |
| Cross-site request forgery |
|
| Andere frameworks dan apps in Express-stijl, een controle door een proxy, en of de standaardinstellingen van de browser de route beschermen. |
| Riskant laden van objecten |
|
| Java ObjectInputStream, .NET BinaryFormatter en externe XML-entiteiten. |
| Zwakke cryptografie |
|
| Sleutellengtes, protocolversies en certificaten van de draaiende dienst, eigen cryptografie en zijkanalen. |
| Wachtwoorden in code en configuratie |
| Geen live test | De git-geschiedenis van bestanden die weg zijn, of een gevonden wachtwoord nog werkt, en één gewoon woord zonder cijfer of symbool. |
| Bestandsuploads |
|
| Wat de opslagdienst of het CDN met het bestand doet, malware in de upload en groottelimieten. |
| Dockerfile |
| Geen live test | Gebouwde images en de besturingssysteempakketten erin worden niet gescand. Het einde van de ondersteuning is alleen bekend voor zes officiële basisimages. |
| docker-compose |
| Geen live test | De draaiende containers, en env-bestanden die niet in de repository staan. |
| Kubernetes-manifesten |
| Geen live test | Het draaiende cluster, niet-gerenderde Helm-templates, RBAC, netwerk- en admission-policy's en bestanden met YAML-ankers. |
| Terraform |
| Geen live test | Het cloudaccount zelf: wat is uitgerold kan afwijken van de bestanden. Waarden uit variabelen, modules of functies, andere providers en andere resourcetypen. |
Buiten elke rij
- Gebouwde container-images en de besturingssysteempakketten erin worden niet gescand.
- Deze regels lezen bestanden. Ze kijken niet naar het draaiende systeem: het cluster, het cloudaccount of het gedrag van de live app.
- Gegevens van het verzoek worden alleen binnen één functie of handler gevolgd. Een waarde die eerst door een andere functie of een ander bestand gaat, wordt niet gevolgd.
- Talen: de syntaxisregels lezen JavaScript en TypeScript. Python heeft de eenvoudige, exacte vormen. PHP, Ruby, Go, Java, Kotlin en C# hebben een paar vormen van één regel. Andere talen worden door deze regels niet gelezen.
Nooit gedekt door automatische controles
- Fouten in de bedrijfslogica, zoals een prijs of een stap die iemand kan overslaan.
- Zwakke plekken die nog niemand kent (zero-days).
- Mensen en processen: phishing, met de hand gedeelde wachtwoorden, wie toegang heeft.
- Alles buiten de reikwijdte die dit rapport noemt, en elke wijziging na de datum ervan.
Dit is geen penetratietest.