Ledningssammanfattning
Peersyst kontaktade Sayfer Security för att utföra penetrationstestning på Peersysts MetaMask Snap i augusti 2024.
Innan vi utvärderade ovanstående tjänster höll vi ett kickoff-möte med Peersysts tekniska team och fick en översikt över systemet och målen för denna forskning.
Under forskningsperioden på två veckor upptäckte vi två sårbarheter i systemet.
Sammanfattningsvis bör flera korrigeringar implementeras efter rapporten, men systemets säkerhetsställning är kompetent.
Efter en granskning av Sayfer-teamet intygar vi att alla säkerhetsproblem som nämns i denna rapport har åtgärdats av Peersyst-teamet.
Riskmetodik
På Sayfer har vi åtagit oss att leverera penetrationstestning av högsta kvalitet till våra kunder. Det är därför vi har implementerat en omfattande riskbedömningsmodell för att utvärdera hur allvarliga våra fynd är och ge våra kunder bästa möjliga rekommendationer för begränsning.
Vår riskbedömningsmodell bygger på två nyckelfaktorer: IMPACT och SANNOLIKHET. Påverkan hänvisar till den potentiella skada som kan bli följden av ett problem, såsom ekonomisk förlust, skada på rykte eller ett icke-operativt system. Sannolikhet avser sannolikheten att ett problem kommer att inträffa, med hänsyn till faktorer som attackens komplexitet och antalet potentiella angripare.
Genom att kombinera dessa två faktorer kan vi skapa en heltäckande förståelse för risken för en viss fråga och ge våra kunder en tydlig och handlingsbar bedömning av problemets allvar. Detta tillvägagångssätt gör att vi kan prioritera våra rekommendationer och säkerställa att våra kunder får bästa möjliga råd om hur de kan skydda sin verksamhet.
Risk definieras enligt följande:

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.
Tillvägagångssätt
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 tester 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 | SÄGA-??: Ett ID för enkel kommunikation om varje sårbarhet |
| Status | Öppen/Fastad/Bekräftad |
| Risk | Representerar riskfaktorn för problemet. För ytterligare beskrivning se Sårbarheter efter risk sektion. |
| Business Impact | Den största risken för sårbarheten på affärsnivå. |
| Plats | URL:en eller filen där problemet upptäcktes. Problem utan plats har ingen speciell plats och hänvisar till produkten som helhet. |
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
Säkerhetsbedömningsresultat
Användning av föråldrade funktioner
| ID | SÄG-01 |
| Status | Erkänd |
| Risk | Upplysande |
| Business Impact | Potentiell framtida inkompatibilitet. |
| Plats | – snap/src/dialog |
BESKRIVNING
Snappen använder metoder från snaps-sdk bibliotek, som t.ex avdelare, rubrik, panel, text och kopierbar, som markeras som föråldrade när du skapar dialoger.
Metamask föreslår att de byts ut mot nya JSX-komponenter. Att använda kod som inte längre stöds av dess skapare anses vara en dålig säkerhetspraxis.
Mitigation
Vi föreslår att du följer Metamasks förslag och använder JSX-komponenter som de stöder som en del av deras SDK.
Saknar validering i ChangeNetworkHandler
| ID | SÄG-02 |
| Status | Fast |
| Risk | Upplysande |
| Business Impact | Detta fynd är rent informativt och har ingen inverkan på snappens säkerhetsställning. |
| Plats | – src/handler/network/ChangeNetworkHandler.ts |
BESKRIVNING
ChangeNetworkHandler tillåter ändring av den blockkedja som stöds, men bekräftar inte att det nya nätverket skiljer sig från det gamla.
Mitigation
När det gamla och det nya nätverket är identiska bör användaren få feedback som informerar dem om att deras åtgärd inte kommer att ha någon effekt.




