Copertura
Cosa copre yof e cosa no
Classe per classe: cosa cerca yof nel tuo codice, cosa verifica il «Test automatizzato» su un'app in funzione e cosa non fa nessuno dei due.
Come leggere la tabella
- Nel codice: schemi che le regole cercano nei file di un repository collegato. Una regola trova uno schema e non esegue il codice, quindi la maggior parte di questi risultati richiede una conferma.
- Dal vivo: test su un'app in funzione. Il «Test automatizzato» è in sviluppo e non è in vendita, quindi nulla con questa indicazione è ancora disponibile per i clienti.
- Non coperto: ciò che non fa nessuno dei due. Un report non si legge mai come se questi punti fossero stati controllati.
| Classe | Nel codice | Dal vivo | Non coperto |
|---|---|---|---|
| SQL injection |
|
| I dati che passano per un'altra funzione o un altro file, l'iniezione memorizzata (di secondo ordine) e i difetti interni di un ORM. |
| NoSQL injection |
|
| I linguaggi di query di altri database a documenti, e i linguaggi diversi da JavaScript e TypeScript. |
| Iniezione di comandi |
|
| Gli argomenti iniettati in un programma chiamato senza shell, e gli altri linguaggi. |
| Iniezione nei template |
|
| I template letti da un database, e i motori di template che girano nel browser. |
| Valutazione di codice |
| Nessun test dal vivo | La valutazione attraverso un oggetto isolato, e gli altri linguaggi. |
| Cross-site scripting |
|
| Gli aggiramenti della fiducia di Angular e Vue, le impostazioni autoescape dei template del server, gli script memorizzati e una prova in un browser vero. |
| Reindirizzamento aperto |
|
| Gli elenchi di indirizzi ammessi che esistono e si possono aggirare. |
| Server-side request forgery |
|
| Il DNS rebinding, i reindirizzamenti che portano all'interno, e la raggiungibilità dei metadati cloud. |
| Cross-site request forgery |
|
| I framework diversi dalle app in stile Express, un controllo fatto da un proxy, e se le impostazioni predefinite del browser proteggono la route. |
| Caricamento di oggetti a rischio |
|
| Java ObjectInputStream, .NET BinaryFormatter e le entità esterne XML. |
| Crittografia debole |
|
| Lunghezze delle chiavi, versioni dei protocolli e certificati del servizio in funzione, crittografia fatta in casa e canali laterali. |
| Password nel codice e nella configurazione |
| Nessun test dal vivo | La cronologia git dei file che non ci sono più, se una password trovata funziona ancora, e una sola parola comune senza cifra né simbolo. |
| Caricamento di file |
|
| Ciò che il servizio di archiviazione o la CDN fa con il file, malware nel file caricato e limiti di dimensione. |
| Dockerfile |
| Nessun test dal vivo | Le immagini costruite e i pacchetti del sistema operativo al loro interno non vengono analizzati. La fine del supporto è nota solo per sei immagini di base ufficiali. |
| docker-compose |
| Nessun test dal vivo | I container in funzione, e i file env che non sono nel repository. |
| Manifest Kubernetes |
| Nessun test dal vivo | Il cluster in funzione, i template Helm non renderizzati, RBAC, le policy di rete e di admission, e i file con ancore YAML. |
| Terraform |
| Nessun test dal vivo | L'account cloud stesso: ciò che è distribuito può differire dai file. I valori che arrivano da variabili, moduli o funzioni, gli altri provider e gli altri tipi di risorsa. |
Fuori da ogni riga
- Le immagini dei container costruite e i pacchetti di sistema al loro interno non vengono analizzati.
- Queste regole leggono file. Non guardano il sistema in funzione: il cluster, l'account cloud o il comportamento dell'app in produzione.
- I dati della richiesta sono seguiti solo dentro una funzione o un handler. Un valore che passa prima per un'altra funzione o un altro file non viene seguito.
- Linguaggi: le regole di sintassi leggono JavaScript e TypeScript. Python ha le forme semplici ed esatte. PHP, Ruby, Go, Java, Kotlin e C# hanno alcune forme su una sola riga. Queste regole non leggono altri linguaggi.
Mai coperto dai controlli automatici
- Difetti nella logica di business, come un prezzo o un passaggio che qualcuno può saltare.
- Debolezze che nessuno conosce ancora (zero-day).
- Persone e processi: phishing, password condivise a mano, chi ha accesso.
- Tutto ciò che è fuori dal perimetro indicato in questo rapporto, e ogni modifica dopo la sua data.
Questo non è un penetration test.