MetaMask Snap revisionsrapport för Tezos

Ledningssammanfattning

Tezos kontaktade Sayfer Security för att utföra en säkerhetsrevision av Tezos MetaMask Snap.

Innan vi utvärderade ovanstående tjänster höll vi ett kickoffmöte med Tezos tekniska team och fick en översikt över systemet och målen för denna forskning.

Under forskningsperioden på 2 veckor upptäckte vi 4 fynd i systemet.

Sammanfattningsvis bör flera korrigeringar implementeras efter rapporten, men systemets säkerhetsställning är kompetent.

Sårbarheter efter risk

Hög – Direkt hot mot viktiga affärsprocesser.
Medium – Indirekt hot mot viktiga affärsprocesser eller partiellt hot mot affärsprocesser.
Låg – Det finns inget direkt hot. Sårbarheten kan utnyttjas med andra sårbarheter.
Upplysande – Detta fynd indikerar inte sårbarhet, men anger en kommentar som meddelar om designfel och felaktig implementering som kan orsaka problem i det långa loppet.

Svårighetsgraden
# problem
Hög
0
Medium
0
Låg
1
Upplysande
3

Tillvägagångssätt

Beskrivning

Tezos kontaktade Sayfer för att utföra penetrationstestning på Tezos MetaMask Snap-applikation.

Denna rapport dokumenterar den forskning som Sayfer utfört med inriktning på de utvalda resurserna som definieras under forskningsomfattningen. Den här rapporten visar särskilt granskningen av säkerhetsställningen för Tezos MetaMask Snap-applikation och dess omgivande infrastruktur och processimplementeringar.

Vårt penetrationstestprojekts livscykel:

01

Omfattningsöversikt

02

Teknisk översikt

03

Omfattningsvalidering

04

Hotmodell

05

Säkerhetsutvärdering

06

Säkerhetsbedömning

Omfattningsöversikt

Under vårt första möte och efter att ha förstått företagets behov definierade vi applikationens omfattning som finns på följande webbadresser som omfattningen av projektet:

  • Tezos MetaMask Snap

Begå hash: 0e0d653b85cbd11365771ad9c2ee5726b10a7d26

Låt det inte vara för sent!

Börja din revision med Sayfer

Omfattningsvalidering

Vi började med att se till att den omfattning som kunden definierade för oss var tekniskt logisk. Att bestämma vilken omfattning som är rätt för ett givet system är en del av den inledande diskussionen. Att få rätt omfattning är nyckeln till att få maximalt affärsvärde från forskningen.

Hotmodell

Under våra kickoffmöten med kunden definierade vi de viktigaste tillgångarna som applikationen besitter.

Vi definierade att det största aktuella hotet mot systemet är känslig användarinformation.

Låt det inte vara för sent!

Börja din revision med Sayfer

Säkerhetsutvärderingsmetodik

Sayfer använder OWASP WSTG som vår tekniska standard vid granskning av webbapplikationer. Efter att ha fått en grundlig förståelse av systemet bestämde vi oss för vilka OWASP-tester som krävs för att utvärdera systemet.

Säkerhetsbedömning

Efter att ha förstått och definierat omfattningen, utfört hotmodellering och utvärderat de korrekta testerna som krävs för att fullständigt kontrollera applikationen för säkerhetsbrister, utförde vi vår säkerhetsbedömning.

Problemtabell Beskrivning

Nummertitel

ID OWASP ID för problemet. Ytterligare tester som vi genomför och som inte ingår i OWASP-tabellen kommer att ha Sayfer ID.
Exempel-ID: WSTG-INFO-002
WSTG – Testguide för webbsäkerhet.
INFO – En stenografi för det ämne som frågan hör till.
002 – Utgivningsnummer.
Risk Representerar riskfaktorn för problemet. För ytterligare beskrivning se Sårbarheter efter risk sektion.
Obligatorisk skicklighet Beskriver den färdighetsnivå som krävs för att genomföra framgångsrik exploatering. Ju lägre kunskapsnivå desto lättare är exploateringsförfarandet.
OWASP
Hänvisning
En länk till den relevanta OWASP-sidan för ytterligare kunskap.
Plats Webbadressen där problemet upptäcktes. Problem utan plats har ingen speciell plats och hänvisar till produkten som helhet.
Verktyg Verktygen som används för att upptäcka problemet.

BESKRIVNING

Här ger vi en kort beskrivning av problemet och hur det uppstod, stegen vi gjorde för att hitta eller utnyttja det, tillsammans med proof of concept (om det finns) och hur detta problem kan påverka produkten eller dess användare. .

Mitigation

Föreslagna lösningsalternativ för det här problemet och länkar till rekommenderade webbplatser för ytterligare åtgärdande.

Säkerhetsutvärdering

Följande tester utfördes under revision av systemet

Informationsmöte

Informationsmöte Testnamn
WSTG-INFO-01 Genomför sökmotorupptäcktsspaning för informationsläckage
WSTG-INFO-02 Fingeravtryck webbserver
WSTG-INFO-03 Granska webbservermetafiler för informationsläckage
WSTG-INFO-04 Räkna upp applikationer på webbservern
WSTG-INFO-05 Granska webbsidans innehåll för informationsläckage
WSTG-INFO-06 Identifiera applikationsingångspunkter
WSTG-INFO-07 Kartlägg exekveringsvägar genom applikation
WSTG-INFO-08 Fingerprint Web Application Framework
WSTG-INFO-09 Webbapplikation med fingeravtryck
WSTG-INFO-10 Kartapplikationsarkitektur

Konfigurations- och distributionshanteringstestning

Konfigurations- och distributionshanteringstestning Testnamn
WSTG-CONF-01 Testa nätverksinfrastrukturens konfiguration
WSTG-CONF-02 Testa applikationsplattformens konfiguration
WSTG-CONF-03 Testa filtilläggshantering för känslig information
WSTG-CONF-04 Granska gamla säkerhetskopior och filer utan referens för känslig information
WSTG-CONF-05 Räkna upp gränssnitt för infrastruktur och applikationsadministration
WSTG-CONF-06 Testa HTTP-metoder
WSTG-CONF-07 Testa HTTP Strict Transport Security
WSTG-CONF-08 Testa RIA-policy över flera domäner
WSTG-CONF-09 Testa filbehörighet
WSTG-CONF-10 Testa för övertagande av underdomän
WSTG-CONF-11 Testa molnlagring

Identitetshanteringstestning

Identitetshanteringstestning Testnamn
WSTG-IDNT-01 Testrollsdefinitioner
WSTG-IDNT-02 Testa användarregistreringsprocessen
WSTG-IDNT-03 Testa kontotilldelningsprocessen
WSTG-IDNT-04 Testa för kontouppräkning och gissningsbart användarkonto
WSTG-IDNT-05 Testar för svag eller otillämpad användarnamnspolicy

Autentiseringstest

Autentiseringstest Testnamn
WSTG-ATHN-01 Testa för inloggningsuppgifter som transporteras över en krypterad kanal
WSTG-ATHN-02 Testar för standardinloggningsuppgifter
WSTG-ATHN-03 Testar för svag låsningsmekanism
WSTG-ATHN-04 Testar för att kringgå autentiseringsschema
WSTG-ATHN-05 Testa för sårbara Kom ihåg lösenord
WSTG-ATHN-06 Testar för svagheter i webbläsarens cache
WSTG-ATHN-07 Testar för svag lösenordspolicy
WSTG-ATHN-08 Testa för svag säkerhetsfråga Svar
WSTG-ATHN-09 Testar för svaga lösenordsändringar eller återställningsfunktioner
WSTG-ATHN-10 Testar för svagare autentisering i alternativ kanal

Tillståndstest

Tillståndstest Testnamn
WSTG-ATHZ-01 Testa kataloggenomgångsfil inkluderar
WSTG-ATHZ-02 Testa för att förbigå auktoriseringsschema
WSTG-ATHZ-03 Testar för privilegieupptrappning
WSTG-ATHZ-04 Testa för osäkra direkta objektreferenser

Test av sessionhantering

Test av sessionhantering Testnamn
WSTG-SESS-01 Testning för Session Management Schema
WSTG-SESS-02 Testa för cookiesattribut
WSTG-SESS-03 Testning för sessionsfixering
WSTG-SESS-04 Testa för exponerade sessionsvariabler
WSTG-SESS-05 Testar för förfalskning av förfrågningar mellan webbplatser
WSTG-SESS-06 Testar för utloggningsfunktioner
WSTG-SESS-07 Timeout för testsession
WSTG-SESS-08 Testa för sessionspussel
WSTG-SESS-09 Testar för sessionskapning

Datavalideringstest

Datavalideringstest Testnamn
WSTG-INPV-01 Testa för Reflekterad Cross Site Scripting
WSTG-INPV-02 Testning för lagrad cross Site Scripting
WSTG-INPV-03 Testar för manipulering av HTTP-verb
WSTG-INPV-04 Testar för HTTP-parameterförorening
WSTG-INPV-05 Testa för SQL Injection
WSTG-INPV-06 Testning för LDAP-injektion
WSTG-INPV-07 Testa för XML-injektion
WSTG-INPV-08 Testning för SSI Injection
WSTG-INPV-09 Testar för XPath-injektion
WSTG-INPV-10 Testar för IMAP SMTP-injektion
WSTG-INPV-11 Testning för kodinsprutning
WSTG-INPV-12 Testning för kommandoinjektion
WSTG-INPV-13 Testa för formatsträngsinjektion
WSTG-INPV-14 Testa för inkuberad sårbarhet
WSTG-INPV-15 Testar för HTTP-delningssmuggling
WSTG-INPV-16 Testar för inkommande HTTP-förfrågningar
WSTG-INPV-17 Testning av Host Header Injection
WSTG-INPV-18 Testar för mallinjektion på serversidan
WSTG-INPV-19 Testar för förfalskning av förfrågningar på serversidan

Felhantering

Felhantering Testnamn
WSTG-ERRH-01 Testar för felaktig felhantering
WSTG-ERRH-02 Testar för stackspår

Kryptografi

Kryptografi Testnamn
WSTG-CRYP-01 Testning för svag transportlagersäkerhet
WSTG-CRYP-02 Testar för Padding Oracle
WSTG-CRYP-03 Testa för känslig information som skickas via okrypterade kanaler
WSTG-CRYP-04 Testar för svag kryptering

Affärslogiktestning

Affärslogiktestning Testnamn
WSTG-BUSL-01 Testa affärslogikdatavalidering
WSTG-BUSL-02 Testa förmåga att förfalska förfrågningar
WSTG-BUSL-03 Testa integritetskontroller
WSTG-BUSL-04 Testa för processtiming
WSTG-BUSL-05 Testa Antal gånger en funktion kan användas Gränser
WSTG-BUSL-06 Test för att kringgå arbetsflöden
WSTG-BUSL-07 Testa skydd mot felaktig användning av applikationer
WSTG-BUSL-08 Testuppladdning av oväntade filtyper
WSTG-BUSL-09 Testuppladdning av skadliga filer

Testning på klientsidan

Testning på klientsidan Testnamn
WSTG-CLNT-01 Testning för DOM-baserad Cross Site Scripting
WSTG-CLNT-02 Testa för JavaScript-exekvering
WSTG-CLNT-03 Testa för HTML-injektion
WSTG-CLNT-04 Testar för URL-omdirigering på klientsidan
WSTG-CLNT-05 Testar för CSS-injektion
WSTG-CLNT-06 Testning för resurshantering på klientsidan
WSTG-CLNT-07 Testa Cross Origin-resursdelning
WSTG-CLNT-08 Testar för Cross Site Flashing
WSTG-CLNT-09 Testar för Clickjacking
WSTG-CLNT-10 Testar WebSockets
WSTG-CLNT-11 Testa webbmeddelanden
WSTG-CLNT-12 Testar webbläsarlagring
WSTG-CLNT-13 Testa för inkludering av skript på flera webbplatser

API-testning

API-testning Testnamn
WSTG-APIT-01 Testar GraphQL

Beställ revision från Sayfer

    Den här webbplatsen är skyddad av reCAPTCHA och Google Integritetspolicy och Användarvillkor tillämpa.

    Säkerhetsbedömningsresultat

    Beroenden med kända sårbarheter

    ID SÄG-01
    Status Fast
    Risk Låg
    Plats -
    Business Impact Användning av sårbara versioner av nodmoduler kan utsätta tjänsten för olika attacker, vissa av dem mindre kritiska, men andra allvarliga.

    BESKRIVNING

    NPM-granskningen returnerar flera resultat för kända sårbarheter i de installerade paketen:

      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 

    Vi validerade var och en av dem för att se till att det inte påverkar produktionsbygget och fann att även de höggradiga inte har en direkt effekt på Tezos Snap. Även om detta innebär att det inte finns någon säkerhetsrisk just nu, kan nya funktioner eller nya sårbarheter inträffa i framtiden.

    Mitigation

    Det första steget skulle vara att uppdatera paketen till versionerna där det är möjligt. På en större bildnivå finns det ett behov av ett automatiserat system för att varna om nya sårbarheter och en process bör finnas på plats för att mildra dem när kritiska sådana uppstår.

     

    Magiska siffror

    ID SÄG-02
    Status Fast
    Risk Upplysande
    Plats -
    Business Impact Magiska siffror påverkar kodläsbarheten. Utan inre kunskap verkar de vara ganska godtyckliga.

    BESKRIVNING

    Under vår bedömning märkte vi användningen av till synes godtyckliga konstanter utan förklarande kommentarer:

    I fallet ovan är det svårt att gissa vad som är anledningen till att dividera med 1000 eller multiplicera med 257 utan att veta hur protokollet och själva blockkedjan fungerar

    Mitigation

    Det anses vara god praxis att ge sådana hårdkodade konstanter beskrivande namn, och vid behov lägga till förklarande kommentarer.

     

    Alarmerande metamask-prompt

    ID SÄG-03
    Status Fast
    Risk Upplysande
    Plats -
    Business Impact Den här typen av uppmaning kan avskräcka användare från att installera Snap

    BESKRIVNING

    När du installerar Snap visas följande svårbegripliga metamask-prompt:

    Mitigation

    Det kanske inte är möjligt för Tezos att ändra denna ganska skrämmande uppmaning. Men eftersom det kan vara av intresse, beslutade vi att ta med denna fråga som information.

     

    Alarmerande metamask-prompt

    ID SÄG-04
    Status Fast
    Risk Upplysande
    Plats -
    Business Impact Ingen

    BESKRIVNING

    Under vår bedömning märkte vi denna kommentar, som antyder en viss osäkerhet, som kan peka på ett underliggande större problem

    Vi undersökte och kunde inte verifiera vad som är problemet här som kommentaren hänvisar till.

    Mitigation

    Dessa kommentarer bör ändras eller tas bort på releaseversionen, eller om det finns ett djupare problem här, bör utvecklarna uppdatera logiken för varför detta

    Bilaga A: Säkerhetsutvärderingsfixar

    Efter en granskning av Sayfer-teamet kan vi bekräfta att alla sårbarheter har åtgärdats av Tezos-teamet

    Initial commit hash: 0e0d653b85cbd11365771ad9c2ee5726b10a7d26
    Fixar commit hash: 0d0c9381a1107c54647d927d4fe99694f332e24d

    Du kan hitta mer information om det på vår blogg

    Sayfers blogg fokuserar på webb3, säkerhet och sårbarhetsforskning. Vi tror att det inom cybersäkerhetsbranschen är avgörande att hålla sig uppdaterad om de senaste trenderna och framstegen. För närvarande gillar vårt team av erfarna forskare att forska i banbrytande blockchain- och web3-teknologier.
    Kontakta oss

    Hålla kontakten

    Plats
    Tel Aviv, Israel
    Messengers:
    Kontakta oss gärna, vi svarar gärna!

      Den här webbplatsen är skyddad av reCAPTCHA och Google Integritetspolicy och Användarvillkor tillämpa.
      Hoppa till innehåll