Ledelsesoversigt
Tezos kontaktede Sayfer Security for at udføre en sikkerhedsrevision på Tezos MetaMask Snap.
Før vi vurderede ovenstående tjenester, holdt vi et kickoff-møde med Tezos tekniske team og fik et overblik over systemet og målene for denne forskning.
I løbet af undersøgelsesperioden på 2 uger opdagede vi 4 fund i systemet.
Som konklusion bør flere rettelser implementeres efter rapporten, men systemets sikkerhedsposition er kompetent.
Sårbarheder efter risiko
Høj – Direkte trussel mod vigtige forretningsprocesser.
Medium – Indirekte trussel mod vigtige forretningsprocesser eller delvis trussel mod forretningsprocesser.
Lav - Der er ingen direkte trussel. Sårbarheden kan udnyttes ved hjælp af andre sårbarheder.
Informational – Denne konstatering indikerer ikke sårbarhed, men angiver en kommentar, der giver besked om designfejl og ukorrekt implementering, der kan forårsage et problem i det lange løb.
Tilgang
Sikkerhedsvurderingsmetode
Sayfer bruger OWASP WSTG som vores tekniske standard ved gennemgang af webapplikationer. Efter at have fået en grundig forståelse af systemet besluttede vi, hvilke OWASP-tests der kræves for at evaluere systemet.
Sikkerhedsvurdering
Efter at have forstået og defineret omfanget, udført trusselsmodellering og evalueret de korrekte test, der kræves for fuldt ud at kontrollere applikationen for sikkerhedsfejl, udførte vi vores sikkerhedsvurdering.
Beskrivelse af problemtabel
Udgavetitel
| ID | Problemets OWASP ID. Yderligere test, som vi udfører og ikke er inkluderet i OWASP-tabellen, vil have Sayfer ID. Eksempel-id: WSTG-INFO-002 WSTG – Testvejledning til websikkerhed. INFO – En stenografi for det emne, som spørgsmålet hører under. 002 – Udstedelsesnummer. |
| Risiko | Repræsenterer problemets risikofaktor. For yderligere beskrivelse henvises til Sårbarheder efter risiko sektion. |
| Påkrævet færdighed | Beskriver det færdighedsniveau, der kræves for at udføre vellykket udnyttelse. Jo lavere færdighedsniveauet er, desto lettere er udnyttelsesprocessen. |
| OWASP Henvisning |
Et link til den relevante OWASP-side for yderligere viden. |
| Lokation | Webadressen, hvor dette problem blev opdaget. Problemer uden placering har ingen bestemt placering og refererer til produktet som helhed. |
| Værktøjer | De værktøjer, der bruges til at opdage problemet. |
Beskrivelse
Her giver vi en kort beskrivelse af problemet og hvordan det opstod, de trin, vi tog for at finde eller udnytte det, sammen med proof of concept (hvis det er til stede), og hvordan dette problem kan påvirke produktet eller dets brugere. .
Mitigation
Foreslåede løsningsmuligheder for dette problem og links til anbefalede websteder for yderligere afhjælpning.
Sikkerhedsvurdering
Følgende test blev udført under revision af systemet
Information Indsamling
| Information Indsamling | Testnavn |
| WSTG-INFO-01 | Udfør søgemaskineopdagelse for informationslækage |
| WSTG-INFO-02 | Fingeraftryk webserver |
| WSTG-INFO-03 | Gennemgå webservermetafiler for informationslækage |
| WSTG-INFO-04 | Opregn applikationer på webserver |
| WSTG-INFO-05 | Gennemgå websideindhold for informationslækage |
| WSTG-INFO-06 | Identificer applikationsindgangspunkter |
| WSTG-INFO-07 | Kortlæg udførelsesstier gennem applikationen |
| WSTG-INFO-08 | Fingerprint Web Application Framework |
| WSTG-INFO-09 | Webapplikation med fingeraftryk |
| WSTG-INFO-10 | Kortapplikationsarkitektur |
Konfiguration og implementering af ledelsestest
| Konfiguration og implementering af ledelsestest | Testnavn |
| WSTG-CONF-01 | Test netværksinfrastrukturkonfiguration |
| WSTG-CONF-02 | Test applikationsplatformens konfiguration |
| WSTG-CONF-03 | Test filudvidelseshåndtering for følsomme oplysninger |
| WSTG-CONF-04 | Gennemgå gamle sikkerhedskopier og filer uden reference for følsomme oplysninger |
| WSTG-CONF-05 | Opregn infrastruktur- og applikationsadministrationsgrænseflader |
| WSTG-CONF-06 | Test HTTP-metoder |
| WSTG-CONF-07 | Test HTTP Strict Transport Security |
| WSTG-CONF-08 | Test RIA-politik på tværs af domæner |
| WSTG-CONF-09 | Test filtilladelse |
| WSTG-CONF-10 | Test for subdomæneovertagelse |
| WSTG-CONF-11 | Test Cloud Storage |
Identitetsstyringstest
| Identitetsstyringstest | Testnavn |
| WSTG-IDNT-01 | Testrolledefinitioner |
| WSTG-IDNT-02 | Test brugerregistreringsproces |
| WSTG-IDNT-03 | Test kontoprovisioneringsproces |
| WSTG-IDNT-04 | Test for kontooptælling og gættelig brugerkonto |
| WSTG-IDNT-05 | Tester for svag eller uhåndhævet brugernavnpolitik |
Autentificeringstest
| Autentificeringstest | Testnavn |
| WSTG-ATHN-01 | Test af legitimationsoplysninger transporteret over en krypteret kanal |
| WSTG-ATHN-02 | Test for standardlegitimationsoplysninger |
| WSTG-ATHN-03 | Test for svag låsemekanisme |
| WSTG-ATHN-04 | Test for omgåelse af godkendelsesskema |
| WSTG-ATHN-05 | Test for sårbare Husk adgangskode |
| WSTG-ATHN-06 | Test for svagheder i browsercache |
| WSTG-ATHN-07 | Test for svag adgangskodepolitik |
| WSTG-ATHN-08 | Test for svagt sikkerhedsspørgsmål svar |
| WSTG-ATHN-09 | Test for svag adgangskodeændring eller nulstilling af funktioner |
| WSTG-ATHN-10 | Test for svagere autentificering i alternativ kanal |
Autorisationstest
| Autorisationstest | Testnavn |
| WSTG-ATHZ-01 | Test af kataloggennemløbsfil inkluderer |
| WSTG-ATHZ-02 | Test for omgåelse af autorisationsskema |
| WSTG-ATHZ-03 | Test for privilegie-eskalering |
| WSTG-ATHZ-04 | Test for usikre direkte objektreferencer |
Sessionsstyringstest
| Sessionsstyringstest | Testnavn |
| WSTG-SESS-01 | Test for Session Management Schema |
| WSTG-SESS-02 | Test for cookies-attributter |
| WSTG-SESS-03 | Test for sessionsfiksering |
| WSTG-SESS-04 | Test for eksponerede sessionsvariabler |
| WSTG-SESS-05 | Test for forfalskning af anmodninger på tværs af websteder |
| WSTG-SESS-06 | Test for logout funktionalitet |
| WSTG-SESS-07 | Timeout for testsession |
| WSTG-SESS-08 | Test for Session Puzzle |
| WSTG-SESS-09 | Test for sessionskapring |
Datavalideringstest
| Datavalideringstest | Testnavn |
| WSTG-INPV-01 | Test af reflekteret scripting på tværs af websteder |
| WSTG-INPV-02 | Test for Stored Cross Site Scripting |
| WSTG-INPV-03 | Test af HTTP-udsagnsordsmanipulation |
| WSTG-INPV-04 | Test for HTTP-parameterforurening |
| WSTG-INPV-05 | Test for SQL Injection |
| WSTG-INPV-06 | Test for LDAP-injektion |
| WSTG-INPV-07 | Test for XML-injektion |
| WSTG-INPV-08 | Test for SSI-injektion |
| WSTG-INPV-09 | Test for XPath-injektion |
| WSTG-INPV-10 | Test for IMAP SMTP-injektion |
| WSTG-INPV-11 | Test for kodeinjektion |
| WSTG-INPV-12 | Test for kommandoinjektion |
| WSTG-INPV-13 | Test for Format String Injection |
| WSTG-INPV-14 | Test for inkuberet sårbarhed |
| WSTG-INPV-15 | Test for HTTP-smugling |
| WSTG-INPV-16 | Test for indgående HTTP-anmodninger |
| WSTG-INPV-17 | Test for Host Header Injection |
| WSTG-INPV-18 | Test af skabeloninjektion på serversiden |
| WSTG-INPV-19 | Test for server-side anmodningsforfalskning |
Fejlhåndtering
| Fejlhåndtering | Testnavn |
| WSTG-ERRH-01 | Test for forkert fejlhåndtering |
| WSTG-ERRH-02 | Test af stakspor |
Kryptografi
| Kryptografi | Testnavn |
| WSTG-CRYP-01 | Test for svag transportlagssikkerhed |
| WSTG-CRYP-02 | Test af polstring Oracle |
| WSTG-CRYP-03 | Test for følsomme oplysninger sendt via ukrypterede kanaler |
| WSTG-CRYP-04 | Test for svag kryptering |
Test af forretningslogik
| Test af forretningslogik | Testnavn |
| WSTG-BUSL-01 | Test Business Logic Data Validering |
| WSTG-BUSL-02 | Test evne til at forfalske anmodninger |
| WSTG-BUSL-03 | Test integritetstjek |
| WSTG-BUSL-04 | Test for procestiming |
| WSTG-BUSL-05 | Test Antal gange, en funktion kan bruges Grænser |
| WSTG-BUSL-06 | Test for omgåelse af arbejdsgange |
| WSTG-BUSL-07 | Test forsvar mod applikationsmisbrug |
| WSTG-BUSL-08 | Test upload af uventede filtyper |
| WSTG-BUSL-09 | Test upload af ondsindede filer |
Test på klientsiden
| Test på klientsiden | Testnavn |
| WSTG-CLNT-01 | Test af DOM-baseret Cross Site Scripting |
| WSTG-CLNT-02 | Test af JavaScript-udførelse |
| WSTG-CLNT-03 | Test for HTML-injektion |
| WSTG-CLNT-04 | Test af URL-omdirigering på klientsiden |
| WSTG-CLNT-05 | Test for CSS-injektion |
| WSTG-CLNT-06 | Test for klientsideressourcemanipulation |
| WSTG-CLNT-07 | Test Cross Origin-ressourcedeling |
| WSTG-CLNT-08 | Test for Cross Site Flashing |
| WSTG-CLNT-09 | Test for Clickjacking |
| WSTG-CLNT-10 | Test af WebSockets |
| WSTG-CLNT-11 | Test webmeddelelser |
| WSTG-CLNT-12 | Test af browserlagring |
| WSTG-CLNT-13 | Test for Cross Site Script-inkludering |
API-testning
| API-testning | Testnavn |
| WSTG-APIT-01 | Test af GraphQL |
Bestil revision hos Sayfer
Sikkerhedsvurderingsresultater
Afhængigheder med kendte sårbarheder
| ID | SIG-01 |
| Status | Fast |
| Risiko | Lav |
| Lokation | - |
| Virksomhedseffekt | Brug af sårbare versioner af nodemoduler kan udsætte tjenesten for forskellige angreb, nogle af dem mindre kritiske, men andre alvorlige. |
Beskrivelse
NPM-revisionen returnerer flere resultater for kendte sårbarheder i de installerede pakker:
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 validerede hver enkelt af dem for at sikre, at det ikke påvirker produktionsopbygningen, og fandt ud af, at selv de strenge ikke har en direkte effekt på Tezos Snap. Selvom det betyder, at der ikke er nogen sikkerhedsrisiko lige nu, kan der opstå nye funktioner eller nye sårbarheder i fremtiden.
Mitigation
Det første skridt ville være at opdatere pakkerne til versionerne, hvor det er muligt. På et større billede er der behov for et automatiseret system til at advare om nye sårbarheder, og en proces bør være på plads til at afbøde dem, når kritiske opstår.
Magiske tal
| ID | SIG-02 |
| Status | Fast |
| Risiko | Informational |
| Lokation | - |
| Virksomhedseffekt | Magiske tal påvirker kodelæsbarheden. Uden indvendig viden ser de ud til at være ret vilkårlige. |
Beskrivelse
Under vores vurdering bemærkede vi brugen af tilsyneladende vilkårlige konstanter uden forklarende kommentarer:

I ovenstående tilfælde er det svært at gætte, hvad der er årsagen til at dividere med 1000 eller gange med 257 uden at vide, hvordan protokollen og selve blockchain fungerer
Mitigation
Det anses for god praksis at give sådanne hårdkodede konstanter beskrivende navne og om nødvendigt tilføje forklarende kommentarer.
Alarmerende metamask-prompt
| ID | SIG-03 |
| Status | Fast |
| Risiko | Informational |
| Lokation | - |
| Virksomhedseffekt | Denne form for prompt kan afholde brugere fra at installere Snap |
Beskrivelse
Når du installerer Snap, vises følgende svære at forstå metamask-prompt:

Mitigation
Det er muligvis ikke muligt for Tezos at ændre denne ret skræmmende prompt. Men da det kan være af interesse, besluttede vi at inkludere dette emne som information.
Alarmerende metamask-prompt
| ID | SIG-04 |
| Status | Fast |
| Risiko | Informational |
| Lokation | - |
| Virksomhedseffekt | Ingen |
Beskrivelse
Under vores vurdering bemærkede vi denne kommentar, hvilket antyder en vis usikkerhed, som kan pege på et underliggende større problem

Vi undersøgte og kunne ikke bekræfte, hvad der er problemet her, som kommentaren henviser til.
Mitigation
Disse kommentarer bør ændres eller fjernes på udgivelsesversionen, eller hvis der er et dybere problem her, bør udviklerne opdatere logikken for, hvorfor dette
Bilag A: Rettelser til sikkerhedsevaluering
Efter en gennemgang fra Sayfer-teamet kan vi bekræfte, at alle sårbarheder er blevet rettet af Tezos-teamet
Indledende commit hash: 0e0d653b85cbd11365771ad9c2ee5726b10a7d26
Retter commit hash: 0d0c9381a1107c54647d927d4fe99694f332e24d




