Sommario di gestione
Tezos ha contattato Sayfer Security per eseguire un controllo di sicurezza su Tezos MetaMask Snap nel giugno 2023.
Prima di valutare i servizi di cui sopra, abbiamo tenuto un incontro iniziale con il team tecnico di Tezos e abbiamo ricevuto una panoramica del sistema e degli obiettivi di questa ricerca.
Durante il periodo di ricerca di 2 settimane, abbiamo scoperto 4 risultati nel sistema.
In conclusione, a seguito del rapporto dovrebbero essere implementate diverse soluzioni, ma il livello di sicurezza del sistema è adeguato.
Vulnerabilità per rischio
Alta – Minaccia diretta ai processi aziendali chiave.
Medio – Minaccia indiretta ai processi aziendali chiave o minaccia parziale ai processi aziendali.
Basso – Non esiste alcuna minaccia diretta. La vulnerabilità può essere sfruttata utilizzando altre vulnerabilità.
Informativo – Questo risultato non indica vulnerabilità, ma riporta un commento che segnala difetti di progettazione e implementazione impropria che potrebbero causare problemi a lungo termine.
Approccio
Metodologia di valutazione della sicurezza
Sayfer utilizza OWASP WSTG come nostro standard tecnico durante la revisione delle applicazioni web. Dopo aver acquisito una conoscenza approfondita del sistema, abbiamo deciso quali test OWASP sono necessari per valutare il sistema.
Valutazione della sicurezza
Dopo aver compreso e definito l'ambito, eseguito la modellazione delle minacce e valutato i test corretti richiesti per verificare completamente l'eventuale presenza di difetti di sicurezza nell'applicazione, abbiamo eseguito la nostra valutazione della sicurezza.
Descrizione della tabella dei problemi
Titolo del problema
ID | L'ID OWASP del problema. Ulteriori test che conduciamo e non sono inclusi nella tabella OWASP avranno l'ID Sayfer. ID di esempio: WSTG-INFO-002 WSTG – Guida al test della sicurezza web. INFO – Una scorciatoia per l’argomento a cui appartiene il problema. 002 - Numero di emissione. |
Rischio | Rappresenta il fattore di rischio del problema. Per una descrizione più approfondita fare riferimento al Vulnerabilità per rischio . |
Abilità richiesta | Descrive il livello di abilità richiesto per condurre uno sfruttamento di successo. Più basso è il livello di abilità, più facile sarà il processo di sfruttamento. |
OWASP Riferimento |
Un collegamento alla pagina OWASP pertinente per ulteriori conoscenze. |
Dove | L'URL in cui è stato rilevato questo problema. I numeri senza ubicazione non hanno una ubicazione particolare e si riferiscono al prodotto nel suo insieme. |
Strumenti | Gli strumenti utilizzati per rilevare il problema. |
Descrizione
Qui forniamo una breve descrizione del problema e di come si è formato, i passaggi che abbiamo effettuato per individuarlo o sfruttarlo, insieme alla prova di concetto (se presente) e in che modo questo problema può influire sul prodotto o sui suoi utenti. .
Mitigazione
Opzioni di risoluzione suggerite per questo problema e collegamenti a siti consigliati per ulteriori soluzioni.
Valutazione della sicurezza
I seguenti test sono stati condotti durante l'audit del sistema
Raccolta di informazioni
Raccolta di informazioni | Nome del test |
WSTG-INFO-01 | Condurre la ricognizione della scoperta dei motori di ricerca per la fuga di informazioni |
WSTG-INFO-02 | Server web di impronte digitali |
WSTG-INFO-03 | Esamina i metafile del server Web per perdite di informazioni |
WSTG-INFO-04 | Enumerare le applicazioni sul server Web |
WSTG-INFO-05 | Esaminare il contenuto della pagina Web per perdite di informazioni |
WSTG-INFO-06 | Identificare i punti di ingresso dell'applicazione |
WSTG-INFO-07 | Mappa i percorsi di esecuzione attraverso l'applicazione |
WSTG-INFO-08 | Framework di applicazioni Web per impronte digitali |
WSTG-INFO-09 | Applicazione Web per impronte digitali |
WSTG-INFO-10 | Mappa dell'architettura dell'applicazione |
Test di gestione della configurazione e della distribuzione
Test di gestione della configurazione e della distribuzione | Nome del test |
WSTG-CONF-01 | Testare la configurazione dell'infrastruttura di rete |
WSTG-CONF-02 | Testare la configurazione della piattaforma dell'applicazione |
WSTG-CONF-03 | Testare la gestione delle estensioni dei file per le informazioni riservate |
WSTG-CONF-04 | Esamina il vecchio backup e i file senza riferimenti per informazioni riservate |
WSTG-CONF-05 | Enumerare le interfacce di amministrazione dell'infrastruttura e dell'applicazione |
WSTG-CONF-06 | Prova i metodi HTTP |
WSTG-CONF-07 | Testare la sicurezza del trasporto HTTP Strict |
WSTG-CONF-08 | Testare la politica interdominio RIA |
WSTG-CONF-09 | Testare l'autorizzazione del file |
WSTG-CONF-10 | Test per Subdomain Takeover |
WSTG-CONF-11 | Prova l'archiviazione cloud |
Test di gestione dell'identità
Test di gestione dell'identità | Nome del test |
WSTG-IDNT-01 | Testare le definizioni dei ruoli |
WSTG-IDNT-02 | Processo di registrazione dell'utente di prova |
WSTG-IDNT-03 | Processo di provisioning dell'account di prova |
WSTG-IDNT-04 | Test per l'enumerazione degli account e l'account utente indovinabile |
WSTG-IDNT-05 | Test per la politica del nome utente debole o non applicata |
Test di autenticazione
Test di autenticazione | Nome del test |
WSTG-ATHN-01 | Test per le credenziali trasportate su un canale crittografato |
WSTG-ATHN-02 | Test per le credenziali predefinite |
WSTG-ATHN-03 | Test per il meccanismo di blocco debole |
WSTG-ATHN-04 | Test per bypassare lo schema di autenticazione |
WSTG-ATHN-05 | Test per la password ricordata vulnerabile |
WSTG-ATHN-06 | Test per le debolezze della cache del browser |
WSTG-ATHN-07 | Test per criteri password deboli |
WSTG-ATHN-08 | Test per risposta alla domanda di sicurezza debole |
WSTG-ATHN-09 | Test per funzionalità di modifica o ripristino password deboli |
WSTG-ATHN-10 | Test per un'autenticazione più debole in un canale alternativo |
Test di autorizzazione
Test di autorizzazione | Nome del test |
WSTG-ATHZ-01 | Includi file di attraversamento directory di prova |
WSTG-ATHZ-02 | Test per bypassare lo schema di autorizzazione |
WSTG-ATHZ-03 | Test per l'escalation dei privilegi |
WSTG-ATHZ-04 | Test per riferimenti a oggetti diretti non sicuri |
Test di gestione della sessione
Test di gestione della sessione | Nome del test |
WSTG-SESS-01 | Test per lo schema di gestione delle sessioni |
WSTG-SESS-02 | Test per gli attributi dei cookie |
WSTG-SESS-03 | Test per la fissazione della sessione |
WSTG-SESS-04 | Test per le variabili di sessione esposte |
WSTG-SESS-05 | Test per contraffazione di richieste cross-site |
WSTG-SESS-06 | Test per la funzionalità di logout |
WSTG-SESS-07 | Timeout della sessione di test |
WSTG-SESS-08 | Test per il puzzle della sessione |
WSTG-SESS-09 | Test per il dirottamento della sessione |
Test di convalida dei dati
Test di convalida dei dati | Nome del test |
WSTG-INPV-01 | Test per Reflected Cross Site Scripting |
WSTG-INPV-02 | Test per Stored Cross Site Scripting |
WSTG-INPV-03 | Test per la manomissione dei verbi HTTP |
WSTG-INPV-04 | Test per l'inquinamento dei parametri HTTP |
WSTG-INPV-05 | Test per SQL Injection |
WSTG-INPV-06 | Test per l'iniezione di LDAP |
WSTG-INPV-07 | Test per l'iniezione XML |
WSTG-INPV-08 | Test per l'iniezione SSI |
WSTG-INPV-09 | Test per l'iniezione di XPath |
WSTG-INPV-10 | Test per IMAP SMTP Injection |
WSTG-INPV-11 | Test per l'iniezione di codice |
WSTG-INPV-12 | Test per l'iniezione di comandi |
WSTG-INPV-13 | Test per l'inserimento di stringhe di formato |
WSTG-INPV-14 | Test per la vulnerabilità incubata |
WSTG-INPV-15 | Test per il contrabbando di splitting HTTP |
WSTG-INPV-16 | Test per richieste HTTP in entrata |
WSTG-INPV-17 | Test per l'iniezione di intestazione host |
WSTG-INPV-18 | Test per l'iniezione di modelli lato server |
WSTG-INPV-19 | Test per contraffazione di richieste lato server |
Gestione degli errori
Gestione degli errori | Nome del test |
WSTG-ERRH-01 | Test per la gestione impropria degli errori |
WSTG-ERRH-02 | Test per le tracce dello stack |
Crittografia
Crittografia | Nome del test |
WSTG-CRYP-01 | Test per la sicurezza del livello di trasporto debole |
WSTG-CRYP-02 | Test per Padding Oracle |
WSTG-CRYP-03 | Test per informazioni sensibili inviate tramite canali non crittografati |
WSTG-CRYP-04 | Test per la crittografia debole |
Test di logica aziendale
Test di logica aziendale | Nome del test |
WSTG-BUSL-01 | Testare la convalida dei dati della logica aziendale |
WSTG-BUSL-02 | Prova la capacità di falsificare le richieste |
WSTG-BUSL-03 | Controlli di integrità del test |
WSTG-BUSL-04 | Test per i tempi di processo |
WSTG-BUSL-05 | Test Numero di volte che una funzione può essere utilizzata Limiti |
WSTG-BUSL-06 | Test per l'elusione dei flussi di lavoro |
WSTG-BUSL-07 | Testare le difese contro l'uso improprio delle applicazioni |
WSTG-BUSL-08 | Caricamento di prova di tipi di file imprevisti |
WSTG-BUSL-09 | Caricamento di prova di file dannosi |
Test lato client
Test lato client | Nome del test |
WSTG-CLNT-01 | Test per Cross Site Scripting basato su DOM |
WSTG-CLNT-02 | Test per l'esecuzione di JavaScript |
WSTG-CLNT-03 | Test per l'iniezione di HTML |
WSTG-CLNT-04 | Test per il reindirizzamento URL lato client |
WSTG-CLNT-05 | Test per l'iniezione di CSS |
WSTG-CLNT-06 | Test per la manipolazione delle risorse lato client |
WSTG-CLNT-07 | Testare la condivisione delle risorse tra le origini |
WSTG-CLNT-08 | Test per il lampeggiamento tra siti |
WSTG-CLNT-09 | Test per il clickjacking |
WSTG-CLNT-10 | Testare i WebSocket |
WSTG-CLNT-11 | Prova la messaggistica Web |
WSTG-CLNT-12 | Testare l'archiviazione del browser |
WSTG-CLNT-13 | Test per l'inclusione di script tra siti |
Test API
Test API | Nome del test |
WSTG-APIT-01 | Testare GraphQL |
Controllo dell'ordine da Sayfer
Risultati della valutazione della sicurezza
Dipendenze con vulnerabilità note
ID | DIRE-01 |
Stato dei servizi | Fissa |
Rischio | Basso |
Dove | - |
Impatto sul business | L'utilizzo di versioni vulnerabili dei moduli nodo potrebbe esporre il servizio a vari attacchi, alcuni meno critici, ma altri gravi. |
Descrizione
L'audit NPM restituisce più risultati per le vulnerabilità note nei pacchetti installati:
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
Abbiamo convalidato ciascuno di essi per assicurarci che non influenzi la build di produzione e abbiamo scoperto che anche quelli ad alta gravità non hanno un effetto diretto su Tezos Snap. Sebbene ciò significhi che al momento non vi sono rischi per la sicurezza, in futuro potrebbero verificarsi nuove funzionalità o nuove vulnerabilità.
Mitigazione
Il primo passo sarebbe aggiornare i pacchetti alle versioni ove possibile. A livello più ampio, è necessario un sistema automatizzato che avvisi sulle nuove vulnerabilità e dovrebbe essere in atto un processo per mitigarle quando si presentano quelle critiche.
Numeri magici
ID | DIRE-02 |
Stato dei servizi | Fissa |
Rischio | Informativo |
Dove | - |
Impatto sul business | I numeri magici influiscono sulla leggibilità del codice. Senza una conoscenza interna, sembrano piuttosto arbitrari. |
Descrizione
Durante la nostra valutazione, abbiamo notato l'uso di costanti apparentemente arbitrarie senza commenti esplicativi:
Nel caso sopra, è difficile indovinare qual è il motivo della divisione per 1000 o della moltiplicazione per 257 senza sapere come funzionano il protocollo e la blockchain stessa
Mitigazione
È considerata buona pratica assegnare nomi descrittivi a tali costanti codificate e, se necessario, aggiungere commenti esplicativi.
Prompt allarmante di Metamask
ID | DIRE-03 |
Stato dei servizi | Fissa |
Rischio | Informativo |
Dove | - |
Impatto sul business | Questo tipo di richiesta potrebbe dissuadere gli utenti dall'installare Snap |
Descrizione
Durante l'installazione di Snap viene visualizzato il seguente messaggio metamask di difficile comprensione:
Mitigazione
Potrebbe non essere possibile per Tezos modificare questo suggerimento piuttosto spaventoso. Tuttavia, poiché potrebbe essere interessante, abbiamo deciso di includere questo problema come informativo.
Prompt allarmante di Metamask
ID | DIRE-04 |
Stato dei servizi | Fissa |
Rischio | Informativo |
Dove | - |
Impatto sul business | Nessuna |
Descrizione
Durante la nostra valutazione, abbiamo notato questo commento, che implica una certa incertezza, che potrebbe indicare un problema di fondo più grande
Abbiamo indagato e non siamo riusciti a verificare qual è il problema a cui fa riferimento il commento.
Mitigazione
Questi commenti dovrebbero essere modificati o rimossi nella versione di rilascio o, se qui c'è un problema più profondo, gli sviluppatori dovrebbero aggiornare la logica del perché questo
Appendice A: correzioni per la valutazione della sicurezza
Dopo un esame da parte del team Sayfer, possiamo confermare che tutte le vulnerabilità sono state risolte dal team Tezos
Hash di commit iniziale: 0e0d653b85cbd11365771ad9c2ee5726b10a7d26
Correzioni dell'hash di commit: 0d0c9381a1107c54647d927d4fe99694f332e24d