Cobertura
Qué cubre yof y qué no
Clase por clase: qué busca yof en tu código, qué comprueba la «Prueba automatizada» en una app en marcha y qué no hace ninguna de las dos.
Cómo leer la tabla
- En el código: patrones que las reglas buscan en los archivos de un repositorio vinculado. Una regla encuentra un patrón y no ejecuta el código, así que la mayoría de estos hallazgos necesitan validación.
- En vivo: pruebas sobre una app en marcha. La «Prueba automatizada» está en desarrollo y no está a la venta, así que nada marcado así está disponible todavía para los clientes.
- No cubierto: lo que no hace ninguna de las dos. Un informe nunca se lee como si esto se hubiera comprobado.
| Clase | En el código | En vivo | No cubierto |
|---|---|---|---|
| Inyección SQL |
|
| Datos que pasan por otra función u otro archivo, la inyección almacenada (de segundo orden) y los fallos internos de un ORM. |
| Inyección NoSQL |
|
| Los lenguajes de consulta de otras bases de datos de documentos, y los lenguajes que no son JavaScript ni TypeScript. |
| Inyección de comandos |
|
| Argumentos inyectados en un programa que se llama sin shell, y otros lenguajes. |
| Inyección en plantillas |
|
| Plantillas leídas de una base de datos, y motores de plantillas que se ejecutan en el navegador. |
| Evaluación de código |
| Sin prueba en vivo | La evaluación a través de un objeto aislado, y otros lenguajes. |
| Cross-site scripting |
|
| Los saltos de confianza de Angular y Vue, los ajustes de autoescape de las plantillas del servidor, los scripts almacenados y una prueba en un navegador real. |
| Redirección abierta |
|
| Listas de direcciones permitidas que existen y se pueden saltar. |
| Server-side request forgery |
|
| DNS rebinding, redirecciones que llevan hacia dentro, y si se puede llegar a los metadatos de la nube. |
| Cross-site request forgery |
|
| Frameworks que no son apps de estilo Express, una comprobación hecha por un proxy, y si los valores por defecto del navegador protegen la ruta. |
| Carga de objetos con riesgo |
|
| Java ObjectInputStream, .NET BinaryFormatter y las entidades externas de XML. |
| Criptografía débil |
|
| Longitudes de clave, versiones de protocolo y certificados del servicio en marcha, criptografía propia y canales laterales. |
| Contraseñas en el código y la configuración |
| Sin prueba en vivo | El historial de git de archivos que ya no están, si una contraseña encontrada sigue funcionando, y una sola palabra corriente sin dígito ni símbolo. |
| Subida de archivos |
|
| Lo que el servicio de almacenamiento o la CDN hace con el archivo, malware en la subida y límites de tamaño. |
| Dockerfile |
| Sin prueba en vivo | Las imágenes construidas y los paquetes del sistema operativo que llevan dentro no se analizan. El fin de soporte solo se conoce para seis imágenes base oficiales. |
| docker-compose |
| Sin prueba en vivo | Los contenedores en marcha, y los archivos env que no están en el repositorio. |
| Manifiestos de Kubernetes |
| Sin prueba en vivo | El clúster en marcha, las plantillas de Helm sin renderizar, RBAC, las políticas de red y de admisión, y los archivos con anclas YAML. |
| Terraform |
| Sin prueba en vivo | La propia cuenta en la nube: lo desplegado puede diferir de los archivos. Valores que vienen de variables, módulos o funciones, otros proveedores y otros tipos de recurso. |
Fuera de todas las filas
- Las imágenes de contenedor construidas y los paquetes del sistema operativo que llevan dentro no se analizan.
- Estas reglas leen archivos. No miran el sistema en funcionamiento: el clúster, la cuenta de la nube ni cómo se comporta la app en producción.
- Los datos de la petición se siguen solo dentro de una función o un manejador. Un valor que pasa antes por otra función u otro archivo no se sigue.
- Lenguajes: las reglas de sintaxis leen JavaScript y TypeScript. Python tiene las formas simples y exactas. PHP, Ruby, Go, Java, Kotlin y C# tienen unas pocas formas de una sola línea. Estas reglas no leen otros lenguajes.
Nunca cubierto por comprobaciones automáticas
- Fallos en la lógica de negocio, como un precio o un paso que alguien puede saltarse.
- Debilidades que nadie conoce todavía (zero-days).
- Personas y procesos: phishing, contraseñas compartidas a mano, quién tiene acceso.
- Todo lo que queda fuera del alcance nombrado en este informe, y cualquier cambio posterior a su fecha.
Esto no es una prueba de penetración.