Coverage
What yof covers, and what it does not
Class by class: what yof looks for in your code, what the Automated engagement tests on a running app, and what neither of them does.
How to read the table
- In code: patterns the rules look for in the files of a linked repository. A rule finds a pattern and does not run the code, so most of these findings need validation.
- Live: tests against a running app. The Automated engagement is in development and not on sale, so nothing marked that way is available to customers yet.
- Not covered: what neither does. A report never reads as if these were checked.
| Class | In code | Live | Not covered |
|---|---|---|---|
| SQL injection |
|
| Input that crosses a function or a file, stored (second-order) injection, and bugs inside an ORM. |
| NoSQL injection |
|
| Query languages of other document databases, and languages other than JavaScript and TypeScript. |
| Command injection |
|
| Arguments injected into a program that is called without a shell, and other languages. |
| Template injection |
|
| Templates read from a database, and template engines that run in the browser. |
| Code evaluation |
| No live test | Evaluation through a sandbox object, and other languages. |
| Cross-site scripting |
|
| Angular and Vue trust bypasses, autoescape settings of server templates, stored scripts, and a proof in a real browser. |
| Open redirect |
|
| Allow lists that exist and can be bypassed. |
| Server-side request forgery |
|
| DNS rebinding, redirects that lead inside, and whether cloud metadata can be reached. |
| Cross-site request forgery |
|
| Frameworks other than Express-style apps, a check done by a proxy, and whether the browser's own defaults protect the route. |
| Unsafe object loading |
|
| Java ObjectInputStream, .NET BinaryFormatter, and XML external entities. |
| Weak cryptography |
|
| Key lengths, protocol versions and certificates of the live service, custom cryptography, and side channels. |
| Passwords in code and config |
| No live test | The git history of files that are gone, whether a password found still works, and one plain word with no digit or symbol. |
| File uploads |
|
| What the storage service or CDN does with the file, malware in the upload, and size limits. |
| Dockerfile |
| No live test | Built images and the operating-system packages inside them are not scanned. End of life is known for six official base images only. |
| docker-compose |
| No live test | The running containers, and env files that are not committed. |
| Kubernetes manifests |
| No live test | The running cluster, Helm templates that are not rendered, RBAC, network and admission policies, and files with YAML anchors. |
| Terraform |
| No live test | The cloud account itself: what is deployed may differ from the files. Values from variables, modules or functions, other providers and other resource types. |
Outside every row
- Built container images and the operating-system packages inside them are not scanned.
- These rules read files. They do not look at the running system: the cluster, the cloud account or how the live app behaves.
- Request input is followed inside one function or handler only. A value that passes through another function or file first is not followed.
- Languages: the syntax rules read JavaScript and TypeScript. Python has the simple, exact forms. PHP, Ruby, Go, Java, Kotlin and C# have a few single-line forms. Other languages are not read by these rules.
Never covered by automated checks
- Flaws in business logic, such as a price or a step a person can skip.
- Weaknesses nobody knows about yet (zero-days).
- People and processes: phishing, passwords shared by hand, who has access.
- Anything outside the scope named in this report, and any change after its date.
This is not a penetration test.