Resumen de gestión
Tezos se puso en contacto con Sayfer Security para realizar una auditoría de seguridad en Tezos MetaMask Snap en junio de 2023.
Antes de evaluar los servicios anteriores, realizamos una reunión inicial con el equipo técnico de Tezos y recibimos una descripción general del sistema y los objetivos de esta investigación.
Durante el período de investigación de 2 semanas, descubrimos 4 hallazgos en el sistema.
En conclusión, se deben implementar varias correcciones después del informe, pero la postura de seguridad del sistema es competente.
Vulnerabilidades por Riesgo
Alta – Amenaza directa a los procesos clave del negocio.
Medio – Amenaza indirecta a los procesos comerciales clave o amenaza parcial a los procesos comerciales.
Baja – No existe amenaza directa. La vulnerabilidad puede explotarse utilizando otras vulnerabilidades.
Informativo – Este hallazgo no indica vulnerabilidad, pero establece un comentario que notifica sobre fallas de diseño e implementación incorrecta que podría causar un problema a largo plazo.
Enfoque
Metodología de Evaluación de Seguridad
usos sayfer OWASP WSTG como nuestro estándar técnico al revisar aplicaciones web. Después de obtener una comprensión profunda del sistema, decidimos qué pruebas OWASP se requieren para evaluar el sistema.
Evaluacion de seguridad
Después de comprender y definir el alcance, realizar modelos de amenazas y evaluar las pruebas correctas necesarias para verificar completamente la aplicación en busca de fallas de seguridad, realizamos nuestra evaluación de seguridad.
Descripción de la tabla de problemas
Título del problema
ID | El ID OWASP del problema. Las pruebas adicionales que realizamos y que no están incluidas en la tabla OWASP tendrán Sayfer ID. Identificación de ejemplo: WSTG-INFO-002 WSTG – Guía de pruebas de seguridad web. INFO – Una abreviatura del tema al que pertenece el número. 002 - Número de emisión. |
Riesgo | Representa el factor de riesgo del problema. Para obtener más descripción, consulte la Vulnerabilidades por Riesgo . |
Habilidad requerida | Describe el nivel de habilidad requerido para llevar a cabo una explotación exitosa. Cuanto menor sea el nivel de habilidad, más fácil será el proceso de explotación. |
OWASP Referencia |
Un enlace a la página de OWASP correspondiente para obtener más información. |
Destino | La URL en la que se detectó este problema. Los problemas sin ubicación no tienen una ubicación particular y se refieren al producto en su conjunto. |
Herramientas | Las herramientas utilizadas para detectar el problema. |
Descripción
Aquí proporcionamos una breve descripción del problema y cómo se formó, los pasos que seguimos para encontrarlo o explotarlo, junto con una prueba de concepto (si está presente) y cómo este problema puede afectar al producto o a sus usuarios. .
Mitigación
Opciones de resolución sugeridas para este problema y enlaces a sitios recomendados para una mayor solución.
Evaluación de seguridad
Se realizaron las siguientes pruebas mientras se auditaba el sistema.
Recopilación de información
Recopilación de información | Nombre de la prueba |
WSTG-INFO-01 | Llevar a cabo un reconocimiento de descubrimiento de motores de búsqueda para detectar fugas de información |
WSTG-INFO-02 | Servidor web de huellas dactilares |
WSTG-INFO-03 | Revise los metarchivos del servidor web para detectar fugas de información |
WSTG-INFO-04 | Enumerar aplicaciones en el servidor web |
WSTG-INFO-05 | Revisar el contenido de la página web para detectar fugas de información |
WSTG-INFO-06 | Identificar los puntos de entrada de la aplicación |
WSTG-INFO-07 | Asignar rutas de ejecución a través de la aplicación |
WSTG-INFO-08 | Marco de aplicaciones web de huellas dactilares |
WSTG-INFO-09 | Aplicación web de huellas dactilares |
WSTG-INFO-10 | Arquitectura de aplicaciones de mapas |
Pruebas de gestión de configuración e implementación
Pruebas de gestión de configuración e implementación | Nombre de la prueba |
WSTG-CONF-01 | Configuración de infraestructura de red de prueba |
WSTG-CONF-02 | Configuración de la plataforma de aplicaciones de prueba |
WSTG-CONF-03 | Manejo de extensiones de archivo de prueba para información confidencial |
WSTG-CONF-04 | Revise la copia de seguridad antigua y los archivos sin referencia en busca de información confidencial |
WSTG-CONF-05 | Enumerar interfaces de administración de aplicaciones e infraestructura |
WSTG-CONF-06 | Probar métodos HTTP |
WSTG-CONF-07 | Probar la seguridad de transporte estricta de HTTP |
WSTG-CONF-08 | Probar la política de dominios cruzados de RIA |
WSTG-CONF-09 | Permiso de archivo de prueba |
WSTG-CONF-10 | Prueba de adquisición de subdominio |
WSTG-CONF-11 | Prueba de almacenamiento en la nube |
Pruebas de gestión de identidad
Pruebas de gestión de identidad | Nombre de la prueba |
WSTG-IDNT-01 | Definiciones de roles de prueba |
WSTG-IDNT-02 | Proceso de registro de usuario de prueba |
WSTG-IDNT-03 | Proceso de aprovisionamiento de cuenta de prueba |
WSTG-IDNT-04 | Pruebas de enumeración de cuenta y cuenta de usuario adivinable |
WSTG-IDNT-05 | Prueba de política de nombre de usuario débil o no aplicada |
Pruebas de autenticación
Pruebas de autenticación | Nombre de la prueba |
WSTG-ATHN-01 | Prueba de credenciales transportadas a través de un canal cifrado |
WSTG-ATHN-02 | Prueba de credenciales predeterminadas |
WSTG-ATHN-03 | Prueba de mecanismo de bloqueo débil |
WSTG-ATHN-04 | Prueba para eludir el esquema de autenticación |
WSTG-ATHN-05 | Prueba para recordar contraseña vulnerable |
WSTG-ATHN-06 | Prueba de debilidades de caché del navegador |
WSTG-ATHN-07 | Prueba de política de contraseña débil |
WSTG-ATHN-08 | Prueba de respuesta de pregunta de seguridad débil |
WSTG-ATHN-09 | Prueba de funcionalidades de cambio o restablecimiento de contraseña débil |
WSTG-ATHN-10 | Prueba de autenticación más débil en canal alternativo |
Pruebas de autorización
Pruebas de autorización | Nombre de la prueba |
WSTG-ATHZ-01 | Prueba de inclusión de archivos transversales de directorios |
WSTG-ATHZ-02 | Pruebas para eludir el esquema de autorización |
WSTG-ATHZ-03 | Pruebas de escalada de privilegios |
WSTG-ATHZ-04 | Pruebas de referencias de objetos directos inseguros |
Pruebas de gestión de sesiones
Pruebas de gestión de sesiones | Nombre de la prueba |
WSTG-SESS-01 | Prueba del esquema de gestión de sesiones |
WSTG-SESS-02 | Prueba de atributos de cookies |
WSTG-SESS-03 | Prueba de Fijación de Sesión |
WSTG-SESS-04 | Prueba de variables de sesión expuestas |
WSTG-SESS-05 | Pruebas de falsificación de solicitudes entre sitios |
WSTG-SESS-06 | Prueba de funcionalidad de cierre de sesión |
WSTG-SESS-07 | Tiempo de espera de la sesión de prueba |
WSTG-SESS-08 | Prueba de desconcierto de sesión |
WSTG-SESS-09 | Prueba de secuestro de sesión |
Pruebas de validación de datos
Pruebas de validación de datos | Nombre de la prueba |
WSTG-INPV-01 | Pruebas de secuencias de comandos de sitios cruzados reflejadas |
WSTG-INPV-02 | Pruebas de secuencias de comandos entre sitios almacenadas |
WSTG-INPV-03 | Prueba de manipulación de verbos HTTP |
WSTG-INPV-04 | Pruebas de contaminación de parámetros HTTP |
WSTG-INPV-05 | Pruebas de inyección SQL |
WSTG-INPV-06 | Prueba de inyección LDAP |
WSTG-INPV-07 | Pruebas de inyección XML |
WSTG-INPV-08 | Pruebas de inyección de SSI |
WSTG-INPV-09 | Prueba de inyección XPath |
WSTG-INPV-10 | Pruebas de inyección IMAP SMTP |
WSTG-INPV-11 | Pruebas de inyección de código |
WSTG-INPV-12 | Prueba de inyección de comandos |
WSTG-INPV-13 | Prueba de inyección de cadenas de formato |
WSTG-INPV-14 | Pruebas de vulnerabilidad incubada |
WSTG-INPV-15 | Pruebas de contrabando de división HTTP |
WSTG-INPV-16 | Prueba de solicitudes entrantes HTTP |
WSTG-INPV-17 | Prueba de inyección de encabezado de host |
WSTG-INPV-18 | Prueba de inyección de plantilla del lado del servidor |
WSTG-INPV-19 | Pruebas de falsificación de solicitudes del lado del servidor |
Manejo de errores
Manejo de errores | Nombre de la prueba |
WSTG-ERRH-01 | Pruebas para el manejo inadecuado de errores |
WSTG-ERRH-02 | Prueba de rastros de pila |
Criptografía
Criptografía | Nombre de la prueba |
WSTG-CRYP-01 | Pruebas de seguridad de capa de transporte débil |
WSTG-CRYP-02 | Pruebas para Padding Oracle |
WSTG-CRYP-03 | Pruebas de información confidencial enviada a través de canales no cifrados |
WSTG-CRYP-04 | Pruebas de cifrado débil |
Pruebas de lógica de negocios
Pruebas de lógica de negocios | Nombre de la prueba |
WSTG-BUSL-01 | Prueba de validación de datos de lógica empresarial |
WSTG-BUSL-02 | Capacidad de prueba para falsificar solicitudes |
WSTG-BUSL-03 | Comprobaciones de integridad de la prueba |
WSTG-BUSL-04 | Prueba de temporización del proceso |
WSTG-BUSL-05 | Prueba Número de veces que se puede usar una función Límites |
WSTG-BUSL-06 | Pruebas de elusión de flujos de trabajo |
WSTG-BUSL-07 | Pruebe las defensas contra el mal uso de la aplicación |
WSTG-BUSL-08 | Carga de prueba de tipos de archivos inesperados |
WSTG-BUSL-09 | Carga de prueba de archivos maliciosos |
Pruebas del lado del cliente
Pruebas del lado del cliente | Nombre de la prueba |
WSTG-CLNT-01 | Pruebas para Cross Site Scripting basado en DOM |
WSTG-CLNT-02 | Prueba de ejecución de JavaScript |
WSTG-CLNT-03 | Prueba de inyección de HTML |
WSTG-CLNT-04 | Prueba de redirección de URL del lado del cliente |
WSTG-CLNT-05 | Pruebas de inyección de CSS |
WSTG-CLNT-06 | Pruebas de manipulación de recursos del lado del cliente |
WSTG-CLNT-07 | Probar el intercambio de recursos de origen cruzado |
WSTG-CLNT-08 | Prueba de intermitencia entre sitios |
WSTG-CLNT-09 | Pruebas de secuestro de clics |
WSTG-CLNT-10 | Prueba de WebSockets |
WSTG-CLNT-11 | Prueba de mensajería web |
WSTG-CLNT-12 | Probar el almacenamiento del navegador |
WSTG-CLNT-13 | Pruebas para la inclusión de secuencias de comandos en sitios cruzados |
Prueba de API
Prueba de API | Nombre de la prueba |
WSTG-APIT-01 | Probando GraphQL |
Ordenar auditoría de Sayfer
Conclusiones de la evaluación de seguridad
Dependencias con vulnerabilidades conocidas
ID | DECIR-01 |
Estado | fijo |
Riesgo | Baja |
Destino | – |
Impacto en el negocio | El uso de versiones vulnerables de módulos de nodo podría exponer el servicio a varios ataques, algunos de ellos menos críticos, pero otros graves. |
Descripción
La auditoría de NPM arroja múltiples resultados para vulnerabilidades conocidas en los paquetes instalados:
npm audit
# npm audit report
engine.io 5.1.0 - 6.4.1
Severity: moderate
engine.io Uncaught Exception vulnerability -
https://github.com/advisories/GHSA-q9mw-68c2-j6m5
fix available via `npm audit fix`
node_modules/engine.io
socket.io 4.1.0 - 4.6.0-alpha1
Depends on vulnerable versions of engine.io
node_modules/socket.io
gatsby 1.9.130 - 4.25.7 || 5.4.0-next.0 - 5.9.1
Depends on vulnerable versions of gatsby-cli
Depends on vulnerable versions of latest-version
Depends on vulnerable versions of socket.io
node_modules/gatsby
got <11.8.5
Severity: moderate
Got allows a redirect to a UNIX socket -
https://github.com/advisories/GHSA-pfrx-2q88-qq97
fix available via `npm audit fix`
node_modules/package-json/node_modules/got
package-json <=6.5.0
Depends on vulnerable versions of got
node_modules/package-json
latest-version 0.2.0 - 5.1.0
Depends on vulnerable versions of package-json
node_modules/latest-version
update-notifier 0.2.0 - 5.1.0
Depends on vulnerable versions of latest-version
node_modules/update-notifier
gatsby-cli 1.1.27 - 4.25.0
Depends on vulnerable versions of update-notifier
node_modules/gatsby-cli
13
request *
Severity: moderate
Server-Side Request Forgery in Request -
https://github.com/advisories/GHSA-p8p7-x288-28g6
fix available via `npm audit fix`
node_modules/request
node-gyp <=7.1.2
Depends on vulnerable versions of request
node_modules/@npmcli/run-script/node_modules/node-gyp
@npmcli/run-script 1.1.1 - 1.8.6
Depends on vulnerable versions of node-gyp
node_modules/@npmcli/run-script
@lavamoat/allow-scripts <=2.3.0
Depends on vulnerable versions of @npmcli/run-script
node_modules/@lavamoat/allow-scripts
socket.io-parser 4.0.4 - 4.2.2
Severity: high
Insufficient validation when decoding a Socket.IO packet -
https://github.com/advisories/GHSA-cqmj-92xf-r6r9
fix available via `npm audit fix`
node_modules/socket.io-parser
webpack 5.0.0 - 5.75.0
Severity: high
Cross-realm object access in Webpack 5 -
https://github.com/advisories/GHSA-hc6q-2mpp-qw7j
fix available via `npm audit fix`
node_modules/webpack
yaml 2.0.0-5 - 2.2.1
Severity: high
Uncaught Exception in yaml - https://github.com/advisories/GHSA-f9xv-q969-pqx4
fix available via `npm audit fix`
node_modules/yaml-loader/node_modules/yaml
Validamos cada uno de ellos para asegurarnos de que no afecte la construcción de producción y descubrimos que incluso los de alta gravedad no tienen un efecto directo en Tezos Snap. Si bien esto significa que no existe ningún riesgo de seguridad en este momento, es posible que aparezcan nuevas funciones o vulnerabilidades en el futuro.
Mitigación
El primer paso sería actualizar los paquetes a las versiones donde sea posible. A un nivel más amplio, es necesario un sistema automatizado para alertar sobre nuevas vulnerabilidades y debe existir un proceso para mitigarlas cuando surjan vulnerabilidades críticas.
Números mágicos
ID | DECIR-02 |
Estado | fijo |
Riesgo | Informativo |
Destino | – |
Impacto en el negocio | Los números mágicos afectan la legibilidad del código. Sin conocimiento interno, parecen bastante arbitrarios. |
Descripción
Durante nuestra evaluación, notamos el uso de constantes aparentemente arbitrarias sin comentarios explicativos:
En el caso anterior, es difícil adivinar cuál es el motivo de dividir por 1000 o multiplicar por 257 sin saber cómo funciona el protocolo y la propia cadena de bloques.
Mitigación
Se considera una buena práctica dar nombres descriptivos a estas constantes codificadas y, si es necesario, agregar comentarios explicativos.
Aviso de metamáscara alarmante
ID | DECIR-03 |
Estado | fijo |
Riesgo | Informativo |
Destino | – |
Impacto en el negocio | Este tipo de mensaje puede disuadir a los usuarios de instalar Snap |
Descripción
Al instalar Snap, aparece el siguiente mensaje de metamáscara difícil de entender:
Mitigación
Puede que Tezos no pueda cambiar este aviso bastante aterrador. Sin embargo, dado que puede ser de interés, decidimos incluir este tema a título informativo.
Aviso de metamáscara alarmante
ID | DECIR-04 |
Estado | fijo |
Riesgo | Informativo |
Destino | – |
Impacto en el negocio | Ninguna |
Descripción
Durante nuestra evaluación, notamos este comentario, que implica cierta incertidumbre, lo que podría indicar un problema subyacente mayor.
Investigamos y no pudimos verificar cuál es el problema al que se refiere el comentario.
Mitigación
Estos comentarios deben cambiarse o eliminarse en la versión de lanzamiento, o si hay un problema más profundo aquí, los desarrolladores deben actualizar la lógica de por qué esto
Apéndice A: correcciones de evaluación de seguridad
Después de una revisión por parte del equipo de Sayfer, podemos confirmar que todas las vulnerabilidades han sido solucionadas por el equipo de Tezos.
Hash de confirmación inicial: 0e0d653b85cbd11365771ad9c2ee5726b10a7d26
Corrige el hash de confirmación: 0d0c9381a1107c54647d927d4fe99694f332e24d