SneakPeek: Claude Code Desktop lekket SSH-nøkler fra HTML-filer over 256 KB
torsdag 15. oktober · KI-generert · Kilde: Noma Security
Oppdater Claude Desktop til 1.30096.1 eller nyere, for en HTML-fil over 256 KB i en klonet repo kunne lese hjemmekatalogen din gjennom forhåndsvisningen.
Noma Labs, forskningsavdelingen i Noma Security, har publisert detaljene om SneakPeek, en exploit-kjede i forhåndsvisningspanelet i Claude Code Desktop. Anthropic satte selv alvorlighetsgraden til CVSS 8.7 (High) og behandlet konsekvensen som likeverdig med kodekjøring på maskinen. Angrepet krevde bare at du klonet en offentlig repo og ba Claude se på en fil.
Panelet viser HTML-filer automatisk når Claude leser eller redigerer dem, rendret med Electrons Chromium-motor. Filer under 256 KB lastes som data:-URL-er med en Content Security Policy som blokkerer JavaScript. Filer over grensen skrives til en temp-fil og lastes som file://-URL, og den veien fikk aldri CSP-en. I tillegg var request-filteret som skulle stoppe file://-lesing bare aktivt når panelet proxyet en kjørende dev-server, ikke når det viste en statisk fil rett fra disk.
Noma pakket nyttelasten inn i en coverage-rapport på over 256 KB, en filtype som ofte er stor fordi den bundler source maps og CSS. Når offeret ber Claude se på rapporten, rendres den, og scriptet henter SSH-nøkler, AWS-nøkler, npm- og GitHub-tokens, Kubernetes-credentials og Docker-auth med fetch(). Deretter sender navigator.sendBeacon() alt til angriperens server. Ifølge Noma lekket også Claudes egne OAuth-tokens og din ekte IP-adresse via WebRTC.
«Offeret trenger ikke å godkjenne eller gi Claude Desktop tilgang til noe.» — Noma Labs
Anthropics første patch kom 24. juli og blokkerte fetch() og XMLHttpRequest mot file://-stier fra hovedsiden. Samme dag viste Noma at lesingen kunne flyttes inn i en Web Worker laget fra en blob:-URL, og da gikk forespørslene utenom filteret. Anthropic bekreftet 3. august at fiksen var ufullstendig, og den endelige rettelsen kom 17. august i Claude Desktop 1.30096.1, levert via auto-update. CVE og GitHub-advisory er ennå ikke publisert.
Det viktigste for deg som bygger med agenter er hvor angrepet skjedde. Scriptet kjørte i rendringsprosessen, ikke som en handling modellen utførte, så ingen tillatelsesdialog ble utløst. Crystal Morin i Sysdig sier til CSO Online at agent-logger ikke nødvendigvis fanger dette, og at fillesingen og de utgående forbindelsene bare synes på runtime-nivå.
«Beskyttelsen var ekte, den dekket bare ikke alle veier.» — Eli Ainhorn, Noma Security, til CSO Online
Hva bør du gjøre?
- Sjekk at Claude Desktop står på 1.30096.1 eller nyere. Auto-update skal ha ordnet det, men en maskin som har stått avslått siden august kan henge etter.
- Bytt ut langlivede nøkler i ~/.aws og ~/.ssh med kortlivede, avgrensede tokens der du kan, slik Ainhorn anbefaler.
- Behandle HTML-filer i fremmede repoer som kjørbar kode, også når de ser ut som testrapporter.
Bakgrunn
Claude Code Desktop er en Electron-app, så hele brukerflaten kjører i en full Chromium-motor med tilgang til alle vanlige web-API-er. Det er derfor sendBeacon() kunne sende data ut uten at noe stoppet den.