{"id":345269,"date":"2026-09-05T19:50:07","date_gmt":"2026-09-05T19:50:07","guid":{"rendered":"https:\/\/www.europesays.com\/no\/345269\/"},"modified":"2026-09-05T19:50:07","modified_gmt":"2026-09-05T19:50:07","slug":"trezor-cve-2026-65058-test-ethereum-signering-2026","status":"publish","type":"post","link":"https:\/\/www.europesays.com\/no\/345269\/","title":{"rendered":"Trezor CVE-2026-65058: Test Ethereum-signering [2026]"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Sommeren 2026 fikk Trezor-brukere en p\u00e5minnelse om at en hardware-lommebok bare er s\u00e5 sikker som firmwaren som kj\u00f8rer p\u00e5 den. En s\u00e5rbarhet kalt CVE-2026-65058 gjorde det mulig for en ondsinnet vertsapplikasjon \u00e5 endre innholdet i en Ethereum-transaksjon etter at brukeren hadde bekreftet den p\u00e5 skjermen. Feilen rammet Trezor Safe 3, Safe 5 og Safe 7, og den br\u00f8t akkurat det prinsippet hardware-lommeb\u00f8ker selger seg inn p\u00e5: at det du ser p\u00e5 skjermen, er det du signerer. Denne guiden viser deg, steg for steg, hvordan du selv tester om enheten din er s\u00e5rbar, hvordan du oppdaterer riktig, og hvordan du bygger et lite prosjekt som lar deg verifisere Ethereum-signering fra en Trezor p\u00e5 egen h\u00e5nd.<\/p>\n<ol class=\"ti-toc-list\">\n<li><a href=\"#bakgrunn-dette-gjorde-cve-2026-65058-med-ethereum-signeringen\">Bakgrunn: dette gjorde CVE-2026-65058 med Ethereum-signeringen<\/a><\/li>\n<li><a href=\"#what-you-see-is-what-you-sign-prinsippet-feilen-brot\">What-You-See-Is-What-You-Sign: prinsippet feilen br\u00f8t<\/a><\/li>\n<li><a href=\"#hvorfor-dette-angar-norske-og-nordiske-trezor-brukere\">Hvorfor dette ang\u00e5r norske og nordiske Trezor-brukere<\/a><\/li>\n<li><a href=\"#forutsetninger-verktoy-og-versjoner-du-trenger\">Forutsetninger: verkt\u00f8y og versjoner du trenger<\/a><\/li>\n<li><a href=\"#trezor-safe-3-safe-5-og-safe-7-hva-betyr-modellvalget-for-testen\">Trezor Safe 3, Safe 5 og Safe 7: hva betyr modellvalget for testen<\/a><\/li>\n<li><a href=\"#steg-1-2-sjekk-enhet-og-oppdater-til-riktig-firmware\">Steg 1-2: sjekk enhet og oppdater til riktig firmware<\/a><\/li>\n<li><a href=\"#steg-3-4-sett-opp-trezor-suite-og-et-ethereum-testnett\">Steg 3-4: sett opp Trezor Suite og et Ethereum-testnett<\/a><\/li>\n<li><a href=\"#steg-5-deploy-en-enkel-test-smartkontrakt-pa-sepolia\">Steg 5: deploy en enkel test-smartkontrakt p\u00e5 Sepolia<\/a><\/li>\n<li><a href=\"#steg-6-7-bygg-et-signeringsskript-med-ethers-js-og-trezor-connect\">Steg 6-7: bygg et signeringsskript med ethers.js og Trezor Connect<\/a><\/li>\n<li><a href=\"#steg-8-verifiser-confirmation-binding-med-et-dekodingsskript\">Steg 8: verifiser confirmation-binding med et dekodingsskript<\/a><\/li>\n<li><a href=\"#steg-9-10-simuler-et-host-angrep-og-bekreft-at-patchen-stopper-det\">Steg 9-10: simuler et host-angrep og bekreft at patchen stopper det<\/a><\/li>\n<li><a href=\"#steg-11-automatiser-firmwareovervaking\">Steg 11: automatiser firmwareoverv\u00e5king<\/a><\/li>\n<li><a href=\"#steg-12-herding-bitcoin-only-firmware-og-fysisk-sikkerhet\">Steg 12: herding \u2014 Bitcoin-only firmware og fysisk sikkerhet<\/a><\/li>\n<li><a href=\"#komplett-testprosjekt-mappestruktur\">Komplett testprosjekt: mappestruktur<\/a><\/li>\n<li><a href=\"#andre-sikkerhetshull-trezor-har-rettet-i-2026\">Andre sikkerhetshull Trezor har rettet i 2026<\/a><\/li>\n<li><a href=\"#vanlige-fallgruver\">Vanlige fallgruver<\/a><\/li>\n<li><a href=\"#feilsoking-8-vanlige-problemer-og-losninger\">Feils\u00f8king: 8 vanlige problemer og l\u00f8sninger<\/a><\/li>\n<li><a href=\"#avanserte-tips-for-videre-sikkerhet\">Avanserte tips for videre sikkerhet<\/a><\/li>\n<li><a href=\"#ofte-stilte-sporsmal\">Ofte stilte sp\u00f8rsm\u00e5l<\/a><\/li>\n<ol class=\"ti-toc-sub\">\n<li><a href=\"#er-min-trezor-fortsatt-sarbar-for-cve-2026-65058\">Er min Trezor fortsatt s\u00e5rbar for CVE-2026-65058?<\/a><\/li>\n<li><a href=\"#pavirket-sarbarheten-ogsa-bitcoin-signering\">P\u00e5virket s\u00e5rbarheten ogs\u00e5 Bitcoin-signering?<\/a><\/li>\n<li><a href=\"#trenger-jeg-a-flytte-midlene-mine-hvis-jeg-har-brukt-en-sarbar-firmwareversjon\">Trenger jeg \u00e5 flytte midlene mine hvis jeg har brukt en s\u00e5rbar firmwareversjon?<\/a><\/li>\n<li><a href=\"#kan-jeg-bruke-samme-testoppsett-pa-ledger-enheter\">Kan jeg bruke samme testoppsett p\u00e5 Ledger-enheter?<\/a><\/li>\n<li><a href=\"#hvor-ofte-bor-jeg-kjore-denne-testen-pa-nytt\">Hvor ofte b\u00f8r jeg kj\u00f8re denne testen p\u00e5 nytt?<\/a><\/li>\n<li><a href=\"#er-bitcoin-only-firmware-bedre-for-sikkerheten-min\">Er Bitcoin-only firmware bedre for sikkerheten min?<\/a><\/li>\n<li><a href=\"#hvem-oppdaget-cve-2026-65058\">Hvem oppdaget CVE-2026-65058?<\/a><\/li>\n<li><a href=\"#ma-jeg-installere-universell-firmware-for-a-teste-ethereum-signering\">M\u00e5 jeg installere universell firmware for \u00e5 teste Ethereum-signering?<\/a><\/li>\n<\/ol>\n<\/ol>\n<p class=\"wp-block-paragraph\">Du trenger ingen forkunnskaper utover litt erfaring med terminalen og JavaScript. Alt du bygger underveis kj\u00f8rer mot Sepolia-testnettet, s\u00e5 du risikerer ingen ekte midler mens du l\u00e6rer.<\/p>\n<p class=\"wp-block-paragraph\">Guiden dekker hele l\u00f8pet fra \u00e5 identifisere firmwareversjonen din, via \u00e5 bygge et lite Node.js-prosjekt som snakker direkte med enheten, til \u00e5 simulere selve angrepsscenarioet p\u00e5 en trygg testkontrakt. Underveis l\u00e6rer du hvordan Ethereum-signering p\u00e5 en hardware-lommebok faktisk fungerer under panseret, ikke bare hvordan du klikker \u201cbekreft\u201d. Det gj\u00f8r deg i stand til \u00e5 vurdere fremtidige sikkerhetsvarsler selv, i stedet for \u00e5 m\u00e5tte stole blindt p\u00e5 produsentens egne forsikringer.<\/p>\n<p>Bakgrunn: dette gjorde CVE-2026-65058 med Ethereum-signeringen<\/p>\n<p class=\"wp-block-paragraph\">N\u00e5r en Trezor signerer en Ethereum-kontraktstransaksjon, sendes kalldataene fra verten (Trezor Suite, MetaMask eller en annen klient) til enheten i flere biter. Hver bit hasjes inn i transaksjonsdigesten som til slutt signeres. Problemet l\u00e5 i at enheten bare viste den f\u00f8rste biten med kalldata til brukeren for bekreftelse, mens den fortsatte \u00e5 hasje inn resten av bitene uten noe tilsvarende varsel. Signaturen som til slutt ble produsert, dekket alts\u00e5 langt mer data enn det brukeren faktisk fikk se og godkjenne.<\/p>\n<p class=\"wp-block-paragraph\">SentinelOne beskriver feilen som en \u201cconfirmation-binding\u201d-svakhet i signeringsflytene sign_tx og sign_tx_eip1559, klassifisert under CWE-358 (Improperly Implemented Security Check for Standard). En angriper med kontroll over vertsapplikasjonen, for eksempel en kompromittert lommebok-klient eller en ondsinnet dApp-kobling, kunne vise en ufarlig transaksjon p\u00e5 skjermen mens den faktiske signaturen dekket en helt annen mottaker, et annet bel\u00f8p eller andre ABI-kodede parametere. Trezor selv beskriver s\u00e5rbarheten p\u00e5 sitt sikkerhetsportal som en feil i SLIP-24-grenen for verifiserte swap-transaksjoner, der en beskyttelse mot ekstra kalldata ikke var aktiv i produksjonsfirmware.<\/p>\n<p class=\"wp-block-paragraph\">Feilen ble rapportert 16. mai 2026 av en forsker med brukernavnet LoopGhost, publisert til NVD 21. juli 2026, og rettet i commit 70c9b0c07748 i trezor-firmware-repoet p\u00e5 GitHub. Fiksen endrer core\/src\/apps\/ethereum\/layout.py slik at kalldata bekreftes underveis i hasjingen, ikke bare i det f\u00f8rste steget. Dermed blir de bytene som vises p\u00e5 skjermen, alltid de samme bytene som til slutt signeres.<\/p>\n<p>What-You-See-Is-What-You-Sign: prinsippet feilen br\u00f8t<\/p>\n<p class=\"wp-block-paragraph\">Hardware-lommeb\u00f8ker bygger p\u00e5 et enkelt l\u00f8fte som ofte forkortes WYSIWYS: det du ser p\u00e5 skjermen, er det du signerer. L\u00f8ftet finnes fordi datamaskinen eller mobilen som snakker med enheten aldri kan stoles fullt ut. Nettleseren kan ha en ondsinnet utvidelse, en dApp kan ha byttet ut RPC-endepunktet sitt, eller selve wallet-klienten kan v\u00e6re kompromittert. Hardware-lommeboken er det siste sikkerhetslaget, det stedet der brukeren fysisk kan se etter og godkjenne hva som faktisk skjer, uavhengig av hva verten sier.<\/p>\n<p class=\"wp-block-paragraph\">For enkle overf\u00f8ringer er dette prinsippet lett \u00e5 h\u00e5ndheve. Mottaker og bel\u00f8p passer p\u00e5 en liten skjerm uten problemer. Kontraktskall er vanskeligere, siden kalldata ofte er hundrevis av byte kodet i hexadesimal form, umulig \u00e5 lese for et menneske uten videre tolkning. Trezor og andre produsenter l\u00f8ser dette ved \u00e5 tolke funksjonssignaturer der det er mulig, og vise en forkortet oppsummering av parameterne. Feilen i CVE-2026-65058 oppsto nettopp i grenseflaten mellom denne tolkningen og selve signeringen: enheten viste en oppsummering av starten p\u00e5 dataene, men signerte alt som kom etterp\u00e5 uten \u00e5 knytte de to sammen kryptografisk p\u00e5 riktig m\u00e5te.<\/p>\n<p class=\"wp-block-paragraph\">Det tekniske begrepet SentinelOne bruker, confirmation-binding, beskriver akkurat dette gapet. En sikker implementasjon m\u00e5 garantere at hasjen som til slutt signeres er beregnet over n\u00f8yaktig de samme bytene brukeren fikk presentert, verken mer eller mindre. N\u00e5r den garantien mangler, spiller det ingen rolle hvor pen eller tillitvekkende bekreftelsesskjermen ser ut. Dette er grunnen til at testen du bygger i denne guiden fokuserer p\u00e5 \u00e5 sammenligne r\u00e5 byte-for-byte data, ikke bare \u00e5 se at \u201cen dialog dukket opp\u201d.<\/p>\n<p>Hvorfor dette ang\u00e5r norske og nordiske Trezor-brukere<\/p>\n<p class=\"wp-block-paragraph\">Hardware-lommeb\u00f8ker har blitt standardanbefalingen for alle som oppbevarer krypto over lengre tid i Norden, nettopp fordi de flytter signeringsn\u00f8kkelen bort fra en internettkoblet PC eller mobil. Poenget forsvinner delvis hvis selve signeringsflyten kan manipuleres av en kompromittert klient p\u00e5 den samme PC-en. Mange nordiske brukere kobler Trezor-en sin til DeFi-protokoller, NFT-markedsplasser og bro-tjenester p\u00e5 Ethereum, alts\u00e5 n\u00f8yaktig de kontraktsinteraksjonene som CVE-2026-65058 rammet.<\/p>\n<p class=\"wp-block-paragraph\">S\u00e5rbarheten krevde riktignok en kompromittert vert, ikke bare fysisk tilgang til enheten. Det gj\u00f8r den mer relevant for folk som bruker mange forskjellige nettsider og wallet-connect-integrasjoner, og mindre relevant for noen som kun sender BTC fra en isolert maskin. Poenget med denne guiden er ikke \u00e5 skape frykt, men \u00e5 gi deg et konkret verkt\u00f8y for \u00e5 teste at oppdateringen faktisk virker hos deg, i stedet for bare \u00e5 stole p\u00e5 at \u201cdet er fikset n\u00e5\u201d.<\/p>\n<p class=\"wp-block-paragraph\">Det er ogs\u00e5 en praktisk grunn til at nordiske brukere spesielt b\u00f8r ta eierskap til denne typen verifisering selv. Norge, Sverige, Danmark og Finland ligger h\u00f8yt p\u00e5 b\u00e5de kryptoadopsjon og teknologisk selvhjulpenhet sammenlignet med resten av Europa, noe som betyr at mange her kombinerer en hardware-lommebok med aktiv bruk av DeFi-protokoller, layer 2-broer og NFT-markedsplasser i stedet for \u00e5 bare la kryptoen ligge ur\u00f8rt. Hver ekstra kontraktsinteraksjon er en ny mulighet for et signeringsavvik \u00e5 slippe gjennom ubemerket, og da er det bedre \u00e5 ha et testoppsett liggende klart enn \u00e5 stole p\u00e5 at man ville lagt merke til noe unormalt med det blotte \u00f8yet.<\/p>\n<p>Forutsetninger: verkt\u00f8y og versjoner du trenger<\/p>\n<p class=\"wp-block-paragraph\">Sett av 45-60 minutter til hele oppsettet. Du trenger f\u00f8lgende verkt\u00f8y installert f\u00f8r du starter:<\/p>\n<tr>Verkt\u00f8yVersjon brukt i denne guidenForm\u00e5l<\/tr>\n<tr>\n<td>Trezor Safe 3, 5 eller 7<\/td>\n<td>Firmware 2.12.4 (utgitt 19. august 2026) eller nyere<\/td>\n<td>Enheten som skal testes<\/td>\n<\/tr>\n<tr>\n<td>Trezor Suite<\/td>\n<td>Nyeste stabile versjon fra trezor.io<\/td>\n<td>Firmwareoppdatering og enhetsstyring<\/td>\n<\/tr>\n<tr>\n<td>trezorctl (python-trezor)<\/td>\n<td>Nyeste versjon via pip<\/td>\n<td>Kommandolinjeverkt\u00f8y for \u00e5 lese firmwaredetaljer<\/td>\n<\/tr>\n<tr>\n<td>Node.js<\/td>\n<td>20 LTS eller nyere<\/td>\n<td>Kj\u00f8re testskript<\/td>\n<\/tr>\n<tr>\n<td>ethers.js<\/td>\n<td>v6<\/td>\n<td>Bygge og sende Ethereum-transaksjoner<\/td>\n<\/tr>\n<tr>\n<td>@trezor\/connect<\/td>\n<td>Nyeste versjon fra npm<\/td>\n<td>Kommunisere med Trezor fra JavaScript<\/td>\n<\/tr>\n<tr>\n<td>Sepolia-testnett<\/td>\n<td>\u2013<\/td>\n<td>Testmilj\u00f8 uten ekte midler<\/td>\n<\/tr>\n<p class=\"wp-block-paragraph\">Du trenger ogs\u00e5 litt Sepolia-ETH fra en faucet for \u00e5 betale gebyr p\u00e5 testkontrakten. Bruk aldri hovedlommeboken din eller ekte midler til denne testen. Hele poenget er \u00e5 \u00f8ve p\u00e5 en isolert transaksjon der du uansett ikke taper noe hvis noe g\u00e5r galt.<\/p>\n<p>Trezor Safe 3, Safe 5 og Safe 7: hva betyr modellvalget for testen<\/p>\n<p class=\"wp-block-paragraph\">Alle tre modellene ble rammet av CVE-2026-65058, og alle tre kan testes med n\u00f8yaktig samme prosjekt i denne guiden, siden @trezor\/connect abstraherer bort de fleste maskinvareforskjellene. Det er likevel greit \u00e5 vite hva som faktisk skiller dem, spesielt fordi skjermst\u00f8rrelse p\u00e5virker hvor mye av kalldataene du realistisk kan lese f\u00f8r du bekrefter.<\/p>\n<tr>ModellSkjermSikkerhetsarkitekturRelevans for denne testen<\/tr>\n<tr>\n<td>Trezor Safe 3<\/td>\n<td>0,96\u2033 monokrom OLED, 128\u00d764 piksler, to knapper<\/td>\n<td>Ett EAL6+ Secure Element, ekstern ARM Cortex M4-mikrokontroller p\u00e5 180MHz<\/td>\n<td>Minst skjermplass, viktigst \u00e5 lese kalldata-oppsummeringen n\u00f8ye<\/td>\n<\/tr>\n<tr>\n<td>Trezor Safe 5<\/td>\n<td>1,54\u2033 fargeskjerm, 240\u00d7240 piksler, touch med haptisk tilbakemelding<\/td>\n<td>NDA-fritt EAL6+ Secure Element, Gorilla Glass 3-overflate<\/td>\n<td>Bedre lesbarhet for lengre kalldata-strenger<\/td>\n<\/tr>\n<tr>\n<td>Trezor Safe 7<\/td>\n<td>2,5\u2033 fargeskjerm, 520\u00d7380 piksler, touch<\/td>\n<td>To Secure Elements pluss egen MCU (\u201ctre lag maskinvaresikkerhet\u201d), kvantesikkerhetsklar arkitektur<\/td>\n<td>Best egnet til \u00e5 vise fullstendige, komplekse kontraktskall<\/td>\n<\/tr>\n<p class=\"wp-block-paragraph\">Safe 7 skiller seg mest ut arkitektonisk, med to separate Secure Elements og tr\u00e5dl\u00f8s Bluetooth 5.0-tilkobling i tillegg til USB-C, samt et LiFePO4-batteri p\u00e5 3,2V og 330mAh som lades tr\u00e5dl\u00f8st via Qi2. Trezor markedsf\u00f8rer den som sin f\u00f8rste enhet bygget med en arkitektur klargjort for fremtidige kvantesikre oppdateringer. For denne guiden spiller det likevel mindre rolle hvilken modell du bruker enn at du faktisk kj\u00f8rer en fikset firmwareversjon, siden confirmation-binding-feilen l\u00e5 i den delte Ethereum-signeringskoden som alle tre modellene baserer seg p\u00e5.<\/p>\n<p>Steg 1-2: sjekk enhet og oppdater til riktig firmware<\/p>\n<p class=\"wp-block-paragraph\">Det f\u00f8rste du skal gj\u00f8re er \u00e5 finne ut n\u00f8yaktig hvilken firmwareversjon enheten din kj\u00f8rer n\u00e5. Koble Trezor-en til med USB-C-kabelen som fulgte med, og kj\u00f8r f\u00f8lgende kommando i terminalen:<\/p>\n<p>pip install trezor<br \/>\ntrezorctl device features | grep -i version<\/p>\n<p class=\"wp-block-paragraph\">Et typisk svar ser slik ut:<\/p>\n<p>major_version: 2<br \/>\nminor_version: 12<br \/>\npatch_version: 2<br \/>\nmodel: T2B1<\/p>\n<p class=\"wp-block-paragraph\">Hvis patch_version viser 2 eller lavere p\u00e5 2.12-grenen, kj\u00f8rer du en versjon som ble sluppet f\u00f8r eller rett rundt CVE-fiksen, og du b\u00f8r oppdatere umiddelbart. Trezors egen changelog viser at 2.12.2 kom 22. juli 2026, dagen etter at CVE-en ble publisert til NVD, mens 2.12.3 og 2.12.4 fulgte 24. juli og 19. august 2026. For \u00e5 v\u00e6re helt sikker p\u00e5 at du har med fiksen fra commit 70c9b0c07748, oppdater til minst 2.12.4.<\/p>\n<p class=\"wp-block-paragraph\">\u00c5pne Trezor Suite, koble til enheten, og klikk p\u00e5 varselet om tilgjengelig firmwareoppdatering. Bekreft handlingen p\u00e5 selve enhetens skjerm, ikke bare i appen. Vent til Suite viser \u201cFirmware er oppdatert\u201d f\u00f8r du kobler fra kabelen.<\/p>\n<p class=\"wp-block-paragraph\">Legg merke til at Suite som regel bare tilbyr den nyeste tilgjengelige versjonen, ikke et fullstendig historisk oversikt over hvilken versjon som faktisk fikset hvilken s\u00e5rbarhet. Derfor er det verdt \u00e5 kjenne changelog-siden fra trinn 1, slik at du selv kan bekrefte at versjonen du havner p\u00e5 faktisk ligger etter fiksepunktet. Hvis enheten din av en eller annen grunn ikke tilbyr oppdatering automatisk, kan du laste ned firmware-filen direkte fra Trezors GitHub-repo og installere den manuelt via \u201cLegg til firmware fra fil\u201d i Suite sine avanserte innstillinger.<\/p>\n<p>Steg 3-4: sett opp Trezor Suite og et Ethereum-testnett<\/p>\n<p class=\"wp-block-paragraph\">Med oppdatert firmware p\u00e5 plass, g\u00e5 inn i Trezor Suite og aktiver testnett-visning under innstillinger. Legg til en Ethereum Sepolia-konto. Suite genererer en ny adresse basert p\u00e5 samme seed som resten av lommeboken, men p\u00e5 en egen avledningssti, s\u00e5 du blander aldri test-midler med ekte midler.<\/p>\n<p class=\"wp-block-paragraph\">G\u00e5 deretter til en Sepolia-faucet og be om testeter til den nye adressen. De fleste fauceter gir mellom 0,05 og 0,5 Sepolia-ETH per foresp\u00f8rsel, mer enn nok til de transaksjonene du skal gj\u00f8re i denne guiden.<\/p>\n<p class=\"wp-block-paragraph\">Grunnen til at du bygger et eget skript i stedet for bare \u00e5 bruke MetaMask direkte, er kontroll. N\u00e5r du selv konstruerer transaksjonsobjektet i kode, ser du n\u00f8yaktig hvilke felter som sendes til enheten, i motsetning til en nettleserlommebok som skjuler mye av byggeprosessen bak et grensesnitt. Det gj\u00f8r det lettere \u00e5 b\u00e5de forst\u00e5 hva som skjer og \u00e5 bevisst introdusere avvik senere n\u00e5r du skal simulere angrepsscenarioet.<\/p>\n<p class=\"wp-block-paragraph\">Installer deretter Node.js-avhengighetene du trenger for resten av prosjektet:<\/p>\n<p>mkdir trezor-eth-signeringstest &amp;&amp; cd trezor-eth-signeringstest<br \/>\nnpm init -y<br \/>\nnpm install ethers@6 @trezor\/connect<\/p>\n<p>Steg 5: deploy en enkel test-smartkontrakt p\u00e5 Sepolia<\/p>\n<p class=\"wp-block-paragraph\">For \u00e5 teste kontraktssignering trenger du en kontrakt \u00e5 sende kalldata til. Bruk denne minimale Solidity-kontrakten, som bare lagrer en verdi og logger hvem som satte den. Den er bevisst enkel, siden form\u00e5let er \u00e5 teste signeringsflyten, ikke kontraktslogikken.<\/p>\n<p>\/\/ SPDX-License-Identifier: MIT<br \/>\npragma solidity ^0.8.24;<\/p>\n<p>contract SigningTestbed {<br \/>\n    uint256 public storedValue;<br \/>\n    address public lastCaller;<\/p>\n<p>    event ValueSet(address indexed caller, uint256 value);<\/p>\n<p>    function setValue(uint256 _value) external {<br \/>\n        storedValue = _value;<br \/>\n        lastCaller = msg.sender;<br \/>\n        emit ValueSet(msg.sender, _value);<br \/>\n    }<br \/>\n}<\/p>\n<p class=\"wp-block-paragraph\">Deploy kontrakten til Sepolia med Remix eller Hardhat, slik du normalt ville gjort. Noter deg kontraktsadressen, du trenger den i neste steg. Hele poenget med \u00e5 bruke en egen testkontrakt fremfor en ekte DeFi-protokoll er at du vet n\u00f8yaktig hva kalldataene skal inneholde, og dermed lett kan oppdage avvik.<\/p>\n<p class=\"wp-block-paragraph\">Du kan gj\u00f8re kontrakten litt mer realistisk ved \u00e5 legge til en funksjon som tar imot flere argumenter, for eksempel en adresse og et bel\u00f8p i tillegg til verdien. Det speiler bedre hvordan ekte kontraktskall til en DEX eller en utl\u00e5nsprotokoll ser ut, med flere ABI-kodede parametere pakket inn i de samme kalldataene. Jo mer kalldataene ligner det du faktisk signerer i hverdagen, desto mer relevant blir testen.<\/p>\n<p>Steg 6-7: bygg et signeringsskript med ethers.js og Trezor Connect<\/p>\n<p class=\"wp-block-paragraph\">N\u00e5 bygger du selve testskriptet. Det konstruerer en transaksjon som kaller setValue p\u00e5 testkontrakten, sender kalldataene til Trezor via @trezor\/connect, og logger b\u00e5de hva som ble sendt til enheten og hva den faktiske signaturen til slutt dekket.<\/p>\n<p>import { ethers } from &laquo;ethers&raquo;;<br \/>\nimport TrezorConnect from &laquo;@trezor\/connect&raquo;;<\/p>\n<p>const CONTRACT_ADDRESS = &laquo;0xDinTestkontraktAdresseHer&raquo;;<br \/>\nconst provider = new ethers.JsonRpcProvider(&laquo;https:\/\/rpc.sepolia.org&raquo;);<\/p>\n<p>async function signAndSend() {<br \/>\n  await TrezorConnect.init({<br \/>\n    manifest: { email: &laquo;<a href=\"https:\/\/shattered.io\/cdn-cgi\/l\/email-protection\" class=\"__cf_email__\" data-cfemail=\"20444556604558414d504c450e434f4d\" rel=\"nofollow noopener\" target=\"_blank\">[email\u00a0protected]<\/a>&laquo;, appUrl: &laquo;https:\/\/example.com&raquo; },<br \/>\n  });<\/p>\n<p>  const iface = new ethers.Interface([<br \/>\n    &laquo;function setValue(uint256 _value)&raquo;,<br \/>\n  ]);<br \/>\n  const calldata = iface.encodeFunctionData(&laquo;setValue&raquo;, [42]);<\/p>\n<p>  const nonce = await provider.getTransactionCount(<br \/>\n    &laquo;0xDinTestAdresseHer&raquo;,<br \/>\n    &laquo;pending&raquo;<br \/>\n  );<br \/>\n  const feeData = await provider.getFeeData();<\/p>\n<p>  const tx = {<br \/>\n    to: CONTRACT_ADDRESS,<br \/>\n    value: &laquo;0x0&raquo;,<br \/>\n    data: calldata,<br \/>\n    chainId: 11155111, \/\/ Sepolia<br \/>\n    nonce: &laquo;0x&raquo; + nonce.toString(16),<br \/>\n    gasLimit: &laquo;0x186a0&raquo;,<br \/>\n    maxFeePerGas: feeData.maxFeePerGas.toString(16),<br \/>\n    maxPriorityFeePerGas: feeData.maxPriorityFeePerGas.toString(16),<br \/>\n  };<\/p>\n<p>  console.log(&laquo;Kalldata sendt til enheten:&raquo;, calldata);<\/p>\n<p>  const result = await TrezorConnect.ethereumSignTransaction({<br \/>\n    path: &laquo;m\/44&#8217;\/1&#8217;\/0&#8217;\/0\/0&raquo;,<br \/>\n    transaction: tx,<br \/>\n  });<\/p>\n<p>  console.log(&laquo;Signatur mottatt:&raquo;, result.payload);<br \/>\n}<\/p>\n<p>signAndSend();<\/p>\n<p class=\"wp-block-paragraph\">Kj\u00f8r skriptet med node signer.js. P\u00e5 Trezor-skjermen skal du n\u00e5 se en bekreftelsesdialog som viser mottakeradresse, verdi og en tolkning av funksjonskallet setValue(42). Bekreft transaksjonen fysisk p\u00e5 enheten.<\/p>\n<p class=\"wp-block-paragraph\">Legg merke til stien m\/44&#8217;\/1&#8217;\/0&#8217;\/0\/0 i koden. Coin type 1 i BIP-44-standarden er reservert for testnett, uavhengig av hvilken kjede det gjelder, mens Ethereum mainnet bruker coin type 60. Denne separasjonen p\u00e5 avledningsniv\u00e5 er en ekstra sikkerhetsmekanisme i seg selv: selv om noe skulle g\u00e5 galt i testskriptet ditt, kan det i praksis aldri ber\u00f8re n\u00f8klene som styrer hovedlommeboken din, fordi de ligger p\u00e5 en helt annen gren av samme seed.<\/p>\n<p>Steg 8: verifiser confirmation-binding med et dekodingsskript<\/p>\n<p class=\"wp-block-paragraph\">Dette er kjernen i testen. Du skal bevise for deg selv at kalldataene enheten viste p\u00e5 skjermen er n\u00f8yaktig de samme bytene som endte opp i den signerte transaksjonen, ikke bare den f\u00f8rste biten av dem. Lag en fil som dekoder den signerte, serialiserte transaksjonen og sammenligner kalldataene med det du sendte inn.<\/p>\n<p>import { ethers } from &laquo;ethers&raquo;;<\/p>\n<p>function verifiserCalldata(sentCalldata, signedRawTx) {<br \/>\n  const parsed = ethers.Transaction.from(signedRawTx);<br \/>\n  const signedCalldata = parsed.data;<\/p>\n<p>  console.log(&laquo;Sendt kalldata:   &laquo;, sentCalldata);<br \/>\n  console.log(&laquo;Signert kalldata: &laquo;, signedCalldata);<\/p>\n<p>  if (sentCalldata.toLowerCase() !== signedCalldata.toLowerCase()) {<br \/>\n    console.error(<br \/>\n      &laquo;AVVIK: Signaturen dekker andre kalldata enn det som ble vist!&raquo;<br \/>\n    );<br \/>\n    process.exit(1);<br \/>\n  }<\/p>\n<p>  console.log(&laquo;OK: Vist og signert kalldata er identiske byte for byte.&raquo;);<br \/>\n}<\/p>\n<p class=\"wp-block-paragraph\">Kj\u00f8r denne funksjonen etter hver signering. Forventet resultat p\u00e5 en riktig oppdatert enhet er:<\/p>\n<p>Sendt kalldata:    0x7b8d56e3000000000000000000000000000000000000000000000000000000000000002a<br \/>\nSignert kalldata:  0x7b8d56e3000000000000000000000000000000000000000000000000000000000000002a<br \/>\nOK: Vist og signert kalldata er identiske byte for byte.<\/p>\n<p class=\"wp-block-paragraph\">Hvis de to verdiene noen gang skiller seg, uansett hvor liten forskjellen er, skal du stoppe og ikke sende transaksjonen videre til nettverket. Det er n\u00f8yaktig dette scenarioet CVE-2026-65058 gjorde mulig f\u00f8r fiksen.<\/p>\n<p class=\"wp-block-paragraph\">Du kan gj\u00f8re denne sjekken enda strengere ved \u00e5 dekode kalldataene p\u00e5 nytt med samme ABI-interface du brukte til \u00e5 bygge dem, og sammenligne de tolkede argumentene (ikke bare den r\u00e5 hex-strengen) mot det du opprinnelig sendte inn. Det fanger opp tilfeller der noen har manipulert dataene p\u00e5 en m\u00e5te som fortsatt gir gyldig hex, men med et annet meningsinnhold, for eksempel ved \u00e5 bytte om rekkef\u00f8lgen p\u00e5 argumenter i en funksjon med flere parametere av samme type.<\/p>\n<p>Steg 9-10: simuler et host-angrep og bekreft at patchen stopper det<\/p>\n<p class=\"wp-block-paragraph\">For virkelig \u00e5 forst\u00e5 hva som ble fikset, kan du simulere angrepsscenarioet p\u00e5 en trygg m\u00e5te. Endre testskriptet slik at det bygger kalldata for setValue(1), viser denne verdien i loggen (simulerer det brukeren \u201cville sett\u201d), men i en egen test-gren bytter det ut kalldataene med setValue(999999) rett f\u00f8r de sendes til TrezorConnect.ethereumSignTransaction.<\/p>\n<p>const visningsKalldata = iface.encodeFunctionData(&laquo;setValue&raquo;, [1]);<br \/>\nconst faktiskKalldata = iface.encodeFunctionData(&laquo;setValue&raquo;, [999999]);<\/p>\n<p>console.log(&laquo;Det brukeren tror hen signerer:&raquo;, visningsKalldata);<\/p>\n<p>const tx = {<br \/>\n  to: CONTRACT_ADDRESS,<br \/>\n  value: &laquo;0x0&raquo;,<br \/>\n  data: faktiskKalldata, \/\/ Simulerer manipulasjon<br \/>\n  chainId: 11155111,<br \/>\n  nonce: &laquo;0x&raquo; + nonce.toString(16),<br \/>\n  gasLimit: &laquo;0x186a0&raquo;,<br \/>\n  maxFeePerGas: feeData.maxFeePerGas.toString(16),<br \/>\n  maxPriorityFeePerGas: feeData.maxPriorityFeePerGas.toString(16),<br \/>\n};<\/p>\n<p class=\"wp-block-paragraph\">P\u00e5 en enhet med oppdatert firmware (2.12.4 eller nyere) skal skjermen vise n\u00f8yaktig setValue(999999), alts\u00e5 de reelle kalldataene, uansett hva loggen din later som brukeren \u201ctror\u201d. Det er bevis p\u00e5 at confirmation-binding-fiksen virker: enheten kan ikke lures til \u00e5 signere noe annet enn det den faktisk viser. Dette er en test du gj\u00f8r for \u00e5 bekrefte oppf\u00f8rsel, ikke et reelt angrep mot noen andre, og du kj\u00f8rer det utelukkende mot din egen testkontrakt p\u00e5 Sepolia.<\/p>\n<p class=\"wp-block-paragraph\">Det er verdt \u00e5 presisere hva denne simuleringen faktisk beviser, og hva den ikke beviser. Den beviser at kalldataene som vises p\u00e5 skjermen alltid samsvarer med det som signeres, uavhengig av hva et testskript \u201clater som\u201d p\u00e5 egen logg. Den beviser ikke at Trezor er immun mot alle fremtidige svakheter i visningslogikken, for eksempel feiltolkning av kompliserte ABI-typer eller uklar fremstilling av store tall. Derfor er testen ment som en gjentakbar rutine, ikke en engangsbekreftelse du gj\u00f8r \u00e9n gang og glemmer.<\/p>\n<p>Steg 11: automatiser firmwareoverv\u00e5king<\/p>\n<p class=\"wp-block-paragraph\">Siden Trezor har sluppet flere sikkerhetsoppdateringer gjennom hele 2026, er det verdt \u00e5 sette opp et lite vaktskript som varsler deg n\u00e5r det kommer en ny release. Dette scriptet henter changelog-siden og sammenligner nyeste versjon med den du sist bekreftet.<\/p>\n<p>#!\/bin\/bash<br \/>\nSISTE_KJENTE=&raquo;2.12.4&#8243;<br \/>\nSIDE=$(curl -s &laquo;https:\/\/trezor.io\/other\/product-updates\/trezor-firmware-changelog-all-versions-and-release-dates&raquo;)<br \/>\nNYESTE=$(echo &laquo;$SIDE&raquo; | grep -oP &#8216;\\d+\\.\\d+\\.\\d+&#8217; | head -1)<\/p>\n<p>if [ &laquo;$NYESTE&raquo; != &laquo;$SISTE_KJENTE&raquo; ]; then<br \/>\n  echo &laquo;Ny firmwareversjon tilgjengelig: $NYESTE (du har $SISTE_KJENTE)&raquo;<br \/>\nelse<br \/>\n  echo &laquo;Du kj\u00f8rer nyeste kjente versjon: $SISTE_KJENTE&raquo;<br \/>\nfi<\/p>\n<p class=\"wp-block-paragraph\">Legg skriptet inn i crontab slik at det kj\u00f8rer ukentlig, for eksempel hver mandag klokken 09:00. Da f\u00e5r du et varsel i terminalloggen din i stedet for \u00e5 stole p\u00e5 at du husker \u00e5 sjekke selv.<\/p>\n<p>crontab -e<br \/>\n# Legg til denne linjen:<br \/>\n0 9 * * 1 \/sti\/til\/check-firmware.sh &gt;&gt; \/sti\/til\/firmware.log 2&gt;&amp;1<\/p>\n<p class=\"wp-block-paragraph\">Vil du ha et tydeligere varsel enn en loggfil, kan du utvide skriptet til \u00e5 sende en e-post eller en push-melding n\u00e5r det oppdager en ny versjon, i stedet for bare \u00e5 skrive til terminalen. Poenget er ikke verkt\u00f8yet i seg selv, men at du f\u00e5r et signal du faktisk legger merke til, uavhengig av om du husker \u00e5 sjekke Trezor Suite manuelt den uken.<\/p>\n<p>Steg 12: herding \u2014 Bitcoin-only firmware og fysisk sikkerhet<\/p>\n<p class=\"wp-block-paragraph\">Hvis du prim\u00e6rt oppbevarer Bitcoin og bare av og til trenger Ethereum-funksjonalitet, b\u00f8r du vurdere hvor mye angrepsflate du faktisk trenger. Trezor Safe 3 og Safe 5 tilbyr en egen Bitcoin-only firmware som fjerner all st\u00f8tte for Ethereum og andre altcoins fra enheten. F\u00e6rre signeringsflyter betyr f\u00e6rre steder en fremtidig feil kan gjemme seg. Bytt til denne firmwarevarianten via Trezor Suite hvis Ethereum-signering ikke er noe du bruker jevnlig.<\/p>\n<p class=\"wp-block-paragraph\">Uansett hvilken firmwarevariant du velger, er det verdt \u00e5 huske at alle Trezor-enheter bruker et sertifisert EAL6+ Secure Element sammen med en ekstern mikrokontroller. Signeringslogikken for enkelte operasjoner kj\u00f8rer delvis utenfor selve det sertifiserte elementet, noe som gj\u00f8r fysisk sikkerhet like viktig som firmwareoppdateringer. Oppbevar enheten et sted uvedkommende ikke har tilgang til, bruk PIN og eventuelt passordfrase, og unng\u00e5 \u00e5 la enheten ligge ubevoktet p\u00e5 reise.<\/p>\n<p class=\"wp-block-paragraph\">PIN-koden p\u00e5 Trezor Safe 7 kan v\u00e6re opptil 50 sifre, langt mer enn de fire til ni sifrene mange brukere fortsatt n\u00f8yer seg med. En lengre PIN koster deg noen ekstra sekunder ved hver innlogging, men gj\u00f8r et brute force-fors\u00f8k mot enheten praktisk talt h\u00e5pl\u00f8st innenfor rimelig tid. Kombiner dette med en passordfrase lagret et annet sted enn selve seed-backupen, slik at et fysisk tyveri av bare enheten eller bare backupkortene ikke er nok til \u00e5 t\u00f8mme lommeboken.<\/p>\n<p class=\"wp-block-paragraph\">Til slutt, hold et \u00f8ye med hvilke tredjeparts dApp-tilkoblinger du godkjenner. CVE-2026-65058 krevde nettopp en kompromittert vert for \u00e5 kunne utnyttes, noe som betyr at den beste beskyttelsen utover oppdatert firmware er sunn skepsis til hvilke nettsider og wallet-connect-foresp\u00f8rsler du kobler enheten din til i utgangspunktet.<\/p>\n<p>Komplett testprosjekt: mappestruktur<\/p>\n<p class=\"wp-block-paragraph\">N\u00e5r du har fulgt alle stegene over, b\u00f8r prosjektmappen din se omtrent slik ut. Dette gir deg et gjenbrukbart oppsett du kan kj\u00f8re igjen etter hver fremtidige firmwareoppdatering.<\/p>\n<p>trezor-eth-signeringstest\/<br \/>\n\u251c\u2500\u2500 package.json<br \/>\n\u251c\u2500\u2500 contracts\/<br \/>\n\u2502   \u2514\u2500\u2500 SigningTestbed.sol<br \/>\n\u251c\u2500\u2500 scripts\/<br \/>\n\u2502   \u251c\u2500\u2500 signer.js          # Steg 6-7: bygger og sender transaksjonen<br \/>\n\u2502   \u251c\u2500\u2500 verify-calldata.js # Steg 8: sammenligner vist vs. signert data<br \/>\n\u2502   \u2514\u2500\u2500 simulate-attack.js # Steg 9-10: tester confirmation-binding<br \/>\n\u251c\u2500\u2500 monitor\/<br \/>\n\u2502   \u2514\u2500\u2500 check-firmware.sh  # Steg 11: ukentlig firmwaresjekk<br \/>\n\u2514\u2500\u2500 README.md<\/p>\n<p class=\"wp-block-paragraph\">README-filen b\u00f8r inneholde adressen til testkontrakten din, hvilken avledningssti du brukte, og datoen for siste vellykkede test. Da har du et konkret loggpunkt \u00e5 vise til neste gang du oppdaterer firmware.<\/p>\n<p class=\"wp-block-paragraph\">Legg gjerne til noen faste npm-skript i package.json, slik at hele testrutinen kan kj\u00f8res med \u00e9n kommando i stedet for at du m\u00e5 huske rekkef\u00f8lgen p\u00e5 filene selv:<\/p>\n<p>{<br \/>\n  &laquo;scripts&raquo;: {<br \/>\n    &laquo;sign&raquo;: &laquo;node scripts\/signer.js&raquo;,<br \/>\n    &laquo;verify&raquo;: &laquo;node scripts\/verify-calldata.js&raquo;,<br \/>\n    &laquo;simulate&raquo;: &laquo;node scripts\/simulate-attack.js&raquo;,<br \/>\n    &laquo;test:full&raquo;: &laquo;npm run sign &amp;&amp; npm run verify &amp;&amp; npm run simulate&raquo;<br \/>\n  }<br \/>\n}<\/p>\n<p class=\"wp-block-paragraph\">Med dette oppsettet kj\u00f8rer du hele verifiseringsl\u00f8pet med npm run test:full etter hver firmwareoppdatering, uten \u00e5 m\u00e5tte huske de enkelte trinnene manuelt hver gang.<\/p>\n<p>Andre sikkerhetshull Trezor har rettet i 2026<\/p>\n<p class=\"wp-block-paragraph\">CVE-2026-65058 var ikke den eneste s\u00e5rbarheten Trezors sikkerhetsportal offentliggjorde i 2026. Selskapet driver et l\u00f8pende program der forskere rapporterer funn som blir unders\u00f8kt og rettet f\u00f8r de publiseres. Tabellen under viser et utvalg av s\u00e5rbarhetene som ble l\u00f8st i samme periode.<\/p>\n<tr>S\u00e5rbarhetDato rapportert\/l\u00f8stKort beskrivelse<\/tr>\n<tr>\n<td>Ethereum SLIP-24 calldata-bekreftelse (CVE-2026-65058)<\/td>\n<td>16. mai 2026<\/td>\n<td>Bare f\u00f8rste kalldata-bit ble vist, resten signert usett<\/td>\n<\/tr>\n<tr>\n<td>Solana token-overf\u00f8ring, mottaker-spoofing via Address Lookup Table<\/td>\n<td>1. juni 2026<\/td>\n<td>Mottakeradresse kunne fremst\u00e5 annerledes enn den reelle<\/td>\n<\/tr>\n<tr>\n<td>CoinJoin-koordineringsgebyr ikke vist ved autorisasjon<\/td>\n<td>3. juni 2026<\/td>\n<td>Gebyrtaket ble ikke tydelig presentert for brukeren<\/td>\n<\/tr>\n<tr>\n<td>Solana signeringsvisning, forbedring<\/td>\n<td>12. juni 2026<\/td>\n<td>Uklar visning av signerte Solana-detaljer<\/td>\n<\/tr>\n<tr>\n<td>Solana kontoopprettelse, bekreftelse ufullstendig<\/td>\n<td>14. juni 2026<\/td>\n<td>Ikke all relevant informasjon vist ved kontoopprettelse<\/td>\n<\/tr>\n<tr>\n<td>Desktop-oppdatering kunne installeres f\u00f8r signaturverifisering var fullf\u00f8rt<\/td>\n<td>16. juni 2026<\/td>\n<td>Rekkef\u00f8lgefeil i oppdateringsprosessen for Trezor Suite<\/td>\n<\/tr>\n<tr>\n<td>THP-paring kunne fullf\u00f8res uten paringskode<\/td>\n<td>22. juni 2026<\/td>\n<td>Svakhet i parringsprotokollen mellom enhet og vert<\/td>\n<\/tr>\n<p class=\"wp-block-paragraph\">M\u00f8nsteret er tydelig: de fleste feilene handler om avstanden mellom det som faktisk signeres eller autoriseres, og det brukeren f\u00e5r se p\u00e5 skjermen. Det underbygger hvorfor testen du nettopp har bygget er verdt \u00e5 gjenta etter hver fremtidige firmwareoppdatering, ikke bare denne ene gangen.<\/p>\n<p class=\"wp-block-paragraph\">Trezor publiserer disse funnene \u00e5pent p\u00e5 sitt sikkerhetsportal i stedet for \u00e5 tie dem i hjel, med status merket \u201cl\u00f8st\u201d for hver enkelt sak sammen med rapporteringsdato. Den samme \u00e5penheten gjelder GitHub-repoet, der du selv kan lese commit-historikken og se n\u00f8yaktig hvilke linjer kode som ble endret for \u00e5 lukke CVE-2026-65058. Denne graden av innsyn er en av grunnene til at det i det hele tatt er mulig \u00e5 bygge en uavhengig verifiseringstest slik du har gjort i denne guiden, i stedet for \u00e5 m\u00e5tte stole blindt p\u00e5 produsentens egne p\u00e5stander.<\/p>\n<p>Vanlige fallgruver<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>\u00c5 stole p\u00e5 Trezor Suite-versjonen alene.<\/strong> Suite-versjonen sier ingenting om hvilken firmware selve enheten kj\u00f8rer. Sjekk alltid firmwareversjonen direkte p\u00e5 enheten eller via trezorctl.<\/li>\n<li><strong>\u00c5 teste med ekte midler.<\/strong> Bruk alltid Sepolia eller et annet testnett n\u00e5r du utforsker signeringsatferd du ikke er hundre prosent sikker p\u00e5 virker som forventet.<\/li>\n<li><strong>\u00c5 bekrefte transaksjoner uten \u00e5 lese skjermen p\u00e5 enheten.<\/strong> Hele poenget med en hardware-lommebok forsvinner hvis du klikker \u201cbekreft\u201d p\u00e5 reflex uten \u00e5 sjekke adresse og bel\u00f8p.<\/li>\n<li><strong>\u00c5 blande avledningsstier mellom test og produksjon.<\/strong> Bruk en tydelig egen sti for testkontoer, slik at du aldri ved et uhell sender en testtransaksjon fra hovedlommeboken.<\/li>\n<li><strong>\u00c5 anta at universell firmware er tryggere fordi den st\u00f8tter flere mynter.<\/strong> Flere st\u00f8ttede signeringsflyter betyr flere steder en fremtidig feil kan oppst\u00e5. Bitcoin-only er et reelt herdingsvalg, ikke en begrensning.<\/li>\n<li><strong>\u00c5 ignorere varsler fra Trezor Suite om ny firmware.<\/strong> Flere av 2026-rettelsene kom med bare uker eller dager mellom rapportering og patch. Den beskyttelsen hjelper deg f\u00f8rst n\u00e5r du faktisk installerer den.<\/li>\n<li><strong>\u00c5 bruke offentlig wifi eller en delt maskin til firmwareoppdateringer.<\/strong> Selve oppdateringspakken er signert og verifisert av enheten, men en kompromittert vertsmaskin kan likevel skape forvirring eller avbrudd midt i prosessen. Oppdater fra en maskin du stoler p\u00e5.<\/li>\n<li><strong>\u00c5 glemme \u00e5 teste etter en fremtidig firmwareoppdatering.<\/strong> En ny versjon kan i teorien introdusere en ny regresjon selv om den fikser en annen s\u00e5rbarhet. Gjenta testsuiten hver gang, ikke bare f\u00f8rste gang.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">Felles for de fleste av disse fallgruvene er at de handler om vaner, ikke om tekniske ferdigheter. \u00c5 bygge testprosjektet krever litt innsats f\u00f8rste gang, men \u00e5 faktisk bruke det konsekvent etter hver oppdatering er den delen mange hopper over i praksis. Sett derfor av tid til \u00e5 gj\u00f8re testrutinen til en fast vane, ikke bare en engangs\u00f8velse du gjorde mens artikkelen var fersk.<\/p>\n<p>Feils\u00f8king: 8 vanlige problemer og l\u00f8sninger<\/p>\n<p class=\"wp-block-paragraph\">De fleste problemene du st\u00f8ter p\u00e5 underveis handler om tilkobling, timing eller sm\u00e5 feil i hvordan kalldata bygges, ikke om selve sikkerhetslogikken. Tabellen under dekker de vanligste tilfellene som dukker opp f\u00f8rste gang noen setter opp dette prosjektet.<\/p>\n<tr>ProblemSannsynlig \u00e5rsakL\u00f8sning<\/tr>\n<tr>\n<td>trezorctl finner ikke enheten<\/td>\n<td>Manglende USB-tilgang eller udev-regler (Linux)<\/td>\n<td>Installer udev-reglene fra python-trezor sitt GitHub-repo, koble til p\u00e5 nytt<\/td>\n<\/tr>\n<tr>\n<td>Firmwareoppdatering henger p\u00e5 \u201cInstallerer\u201d<\/td>\n<td>USB-kabelen leverer for lite str\u00f8m eller data er ustabil<\/td>\n<td>Bruk kabelen som fulgte med enheten, koble direkte til datamaskinen, ikke via hub<\/td>\n<\/tr>\n<tr>\n<td>TrezorConnect.init() feiler med manifest-feil<\/td>\n<td>Manifest-objektet mangler gyldig e-post eller URL<\/td>\n<td>Fyll inn et gyldig e-postfelt og en faktisk URL, selv i test<\/td>\n<\/tr>\n<tr>\n<td>Signeringsforesp\u00f8rselen timer ut<\/td>\n<td>Enheten venter p\u00e5 fysisk bekreftelse som ikke blir gitt innen tidsfristen<\/td>\n<td>Trykk bekreft p\u00e5 enheten raskere, eller \u00f8k timeout i skriptet<\/td>\n<\/tr>\n<tr>\n<td>Sepolia RPC svarer med feil eller er nede<\/td>\n<td>Offentlig RPC-endepunkt er overbelastet<\/td>\n<td>Bytt til en alternativ Sepolia RPC-leverand\u00f8r eller kj\u00f8r egen node<\/td>\n<\/tr>\n<tr>\n<td>Kalldata i skjermen matcher ikke det du forventet<\/td>\n<td>Feil i ABI-encoding eller feil funksjonssignatur i skriptet<\/td>\n<td>Dobbeltsjekk interface-definisjonen mot kontraktens faktiske funksjon<\/td>\n<\/tr>\n<tr>\n<td>verify-calldata.js rapporterer avvik selv med korrekt firmware<\/td>\n<td>Feil i egen sammenligningslogikk, for eksempel store\/sm\u00e5 bokstaver i hex<\/td>\n<td>Normaliser begge strenger til sm\u00e5 bokstaver f\u00f8r sammenligning<\/td>\n<\/tr>\n<tr>\n<td>trezorctl viser feil modellnavn<\/td>\n<td>Flere Trezor-enheter tilkoblet samtidig<\/td>\n<td>Koble fra alle andre enheter og pr\u00f8v igjen med kun \u00e9n tilkoblet<\/td>\n<\/tr>\n<p>Avanserte tips for videre sikkerhet<\/p>\n<p class=\"wp-block-paragraph\">N\u00e5r grunnoppsettet fungerer, kan du utvide testprosjektet videre. Legg til flere testkontrakter med mer kompleks ABI-koding, inkludert n\u00f8stede structs og dynamiske arrays, siden dette er datatyper der visningslogikk historisk har v\u00e6rt vanskeligere \u00e5 f\u00e5 riktig. Test ogs\u00e5 EIP-1559-transaksjoner spesifikt, siden det var en av de to signeringsflytene som CVE-2026-65058 rammet direkte.<\/p>\n<p class=\"wp-block-paragraph\">Vurder \u00e5 sette opp testen som en del av en CI-pipeline hvis du utvikler en wallet-integrasjon selv. Da kj\u00f8res confirmation-binding-sjekken automatisk hver gang du endrer kode som bygger transaksjoner, i stedet for at noen m\u00e5 huske \u00e5 teste det manuelt. En praktisk fallgruve her er at CI-servere sjelden har en fysisk Trezor koblet til, s\u00e5 du m\u00e5 enten kj\u00f8re denne delen av testsuiten lokalt f\u00f8r merge, eller sette opp en dedikert testmaskin med en enhet reservert kun til dette form\u00e5let.<\/p>\n<p class=\"wp-block-paragraph\">Hvis du jobber i et team, er det verdt \u00e5 dele testprosjektet som et internt verkt\u00f8y i stedet for at hver utvikler bygger sin egen variant. Det sikrer at alle bruker samme testkontrakt, samme sjekker og samme forventede resultat, noe som gj\u00f8r det langt enklere \u00e5 oppdage om en ny firmwareversjon faktisk endrer oppf\u00f8rsel fra forrige gang dere testet.<\/p>\n<p class=\"wp-block-paragraph\">Til slutt, sett en fast rutine: hver gang Trezor slipper ny firmware, kj\u00f8r hele testsuiten din p\u00e5 nytt f\u00f8r du stoler p\u00e5 enheten til nye kontraktsinteraksjoner. Det tar under fem minutter n\u00e5r prosjektet f\u00f8rst er bygget, og det er langt billigere enn \u00e5 oppdage et avvik etter at en ekte transaksjon er sendt.<\/p>\n<p class=\"wp-block-paragraph\">Byggeklossene i denne guiden er ikke unike for Trezor. Prinsippet, \u00e5 sammenligne det som vises p\u00e5 en tillitsenhet med det som faktisk godkjennes kryptografisk, gjelder for enhver hardware-lommebok, enhver signeringsprotokoll og i prinsippet enhver godkjenningsmekanisme der et menneske skal godkjenne noe en maskin har generert. Har du f\u00f8rst forst\u00e5tt og bygget denne testen for Ethereum-signering, er det et lite steg videre til \u00e5 teste tilsvarende for Solana-transaksjoner eller for autorisasjonsmeldinger i andre protokoller du bruker.<\/p>\n<p class=\"wp-block-paragraph\">Kilder: <a href=\"https:\/\/trezor.io\/vulnerability\/ethereum-s-slip-24-payment-request-branch-in-production-firmware-signs-attacker-calldata-under-cover-of-verified-swap-ui\" target=\"_blank\" rel=\"noopener nofollow\">Trezors sikkerhetsportal<\/a>, <a href=\"https:\/\/www.sentinelone.com\/vulnerability-database\/cve-2026-65058\/\" target=\"_blank\" rel=\"noopener nofollow\">SentinelOnes CVE-database<\/a>, <a href=\"https:\/\/trezor.io\/other\/product-updates\/trezor-firmware-changelog-all-versions-and-release-dates\" target=\"_blank\" rel=\"noopener nofollow\">Trezors firmware-changelog<\/a>, <a href=\"https:\/\/trezor.io\/trezor-safe-3\" target=\"_blank\" rel=\"noopener nofollow\">Trezor Safe 3 spesifikasjoner<\/a> og <a href=\"https:\/\/docs.ethers.org\/v6\/\" target=\"_blank\" rel=\"noopener nofollow\">ethers.js v6-dokumentasjonen<\/a>.<\/p>\n<p>Ofte stilte sp\u00f8rsm\u00e5l<\/p>\n<p>Er min Trezor fortsatt s\u00e5rbar for CVE-2026-65058?<\/p>\n<p class=\"wp-block-paragraph\">Ikke hvis du kj\u00f8rer firmware 2.12.4 eller nyere p\u00e5 Safe 3, Safe 5 eller Safe 7. Sjekk versjonen med trezorctl slik beskrevet i steg 1-2, og oppdater via Trezor Suite hvis du er usikker.<\/p>\n<p>P\u00e5virket s\u00e5rbarheten ogs\u00e5 Bitcoin-signering?<\/p>\n<p class=\"wp-block-paragraph\">Nei. If\u00f8lge Trezors egen beskrivelse og SentinelOnes tekniske analyse var feilen isolert til Ethereum-signeringsflytene sign_tx og sign_tx_eip1559, alts\u00e5 kontraktsinteraksjoner p\u00e5 Ethereum, ikke Bitcoin-transaksjoner.<\/p>\n<p>Trenger jeg \u00e5 flytte midlene mine hvis jeg har brukt en s\u00e5rbar firmwareversjon?<\/p>\n<p class=\"wp-block-paragraph\">S\u00e5rbarheten krevde en kompromittert vertsapplikasjon som aktivt utnyttet feilen under en signering, den ga ikke en angriper direkte tilgang til seed eller n\u00f8kler i etterkant. Har du bekreftet transaksjoner som faktisk gikk gjennom med forventet mottaker og bel\u00f8p, er det ingen automatisk grunn til \u00e5 flytte midler. Er du usikker p\u00e5 om en tidligere transaksjon var korrekt, b\u00f8r du sjekke den historiske transaksjonen p\u00e5 en blokkutforsker som Etherscan, og sammenligne mottaker og bel\u00f8p mot det du selv husker \u00e5 ha godkjent.<\/p>\n<p>Kan jeg bruke samme testoppsett p\u00e5 Ledger-enheter?<\/p>\n<p class=\"wp-block-paragraph\">Ikke direkte. Denne guiden bruker @trezor\/connect, som er spesifikt for Trezor-enheter. Ledger har et eget SDK med annen API-struktur, men selve prinsippet, \u00e5 sammenligne vist kalldata med signert kalldata, kan gjenbrukes uansett produsent.<\/p>\n<p>Hvor ofte b\u00f8r jeg kj\u00f8re denne testen p\u00e5 nytt?<\/p>\n<p class=\"wp-block-paragraph\">Etter hver firmwareoppdatering, og gjerne som en fast vane et par ganger i \u00e5ret selv uten oppdateringer. Vaktskriptet fra steg 11 hjelper deg \u00e5 huske n\u00e5r en ny versjon er tilgjengelig.<\/p>\n<p>Er Bitcoin-only firmware bedre for sikkerheten min?<\/p>\n<p class=\"wp-block-paragraph\">Hvis du ikke trenger Ethereum eller andre altcoins p\u00e5 enheten, reduserer Bitcoin-only firmware angrepsflaten ved \u00e5 fjerne de signeringsflytene som ikke gjelder Bitcoin. Det er ikke en universell l\u00f8sning for alle, men et reelt herdingsvalg for brukere med et smalere behov. Husk at du kan bytte tilbake til universell firmware senere hvis behovet ditt endrer seg, uten \u00e5 miste tilgang til midlene dine, siden seed-en forblir den samme uavhengig av hvilken firmwarevariant enheten kj\u00f8rer.<\/p>\n<p>Hvem oppdaget CVE-2026-65058?<\/p>\n<p class=\"wp-block-paragraph\">If\u00f8lge Trezors sikkerhetsportal ble s\u00e5rbarheten rapportert av en forsker med brukernavnet LoopGhost 16. mai 2026, gjennom selskapets program for ansvarlig rapportering av s\u00e5rbarheter.<\/p>\n<p>M\u00e5 jeg installere universell firmware for \u00e5 teste Ethereum-signering?<\/p>\n<p class=\"wp-block-paragraph\">Ja. Bitcoin-only firmware st\u00f8tter ikke Ethereum-signeringsflytene i det hele tatt, s\u00e5 du m\u00e5 kj\u00f8re universell firmware p\u00e5 enheten mens du gjennomf\u00f8rer testene i denne guiden. Bytt tilbake til Bitcoin-only etterp\u00e5 hvis det er det du normalt bruker.<\/p>\n","protected":false},"excerpt":{"rendered":"Sommeren 2026 fikk Trezor-brukere en p\u00e5minnelse om at en hardware-lommebok bare er s\u00e5 sikker som firmwaren som kj\u00f8rer&hellip;\n","protected":false},"author":2,"featured_media":345270,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_share_on_mastodon":"0"},"categories":[57],"tags":[30,28,29,65,63,64,66,70,69,67,68],"class_list":["post-345269","post","type-post","status-publish","format-standard","has-post-thumbnail","category-vitenskap-og-teknologi","tag-no","tag-norge","tag-norway","tag-science","tag-science-and-technology","tag-scienceandtechnology","tag-technology","tag-teknologi","tag-vitenskap","tag-vitenskap-og-teknologi","tag-vitenskapteknologi"],"share_on_mastodon":{"url":"https:\/\/pubeurope.com\/@no\/117220175068383309","error":""},"_links":{"self":[{"href":"https:\/\/www.europesays.com\/no\/wp-json\/wp\/v2\/posts\/345269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europesays.com\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.europesays.com\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/no\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/no\/wp-json\/wp\/v2\/comments?post=345269"}],"version-history":[{"count":0,"href":"https:\/\/www.europesays.com\/no\/wp-json\/wp\/v2\/posts\/345269\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/no\/wp-json\/wp\/v2\/media\/345270"}],"wp:attachment":[{"href":"https:\/\/www.europesays.com\/no\/wp-json\/wp\/v2\/media?parent=345269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.europesays.com\/no\/wp-json\/wp\/v2\/categories?post=345269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.europesays.com\/no\/wp-json\/wp\/v2\/tags?post=345269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}