Cursorin laajennuskaupassa jaettiin torstaina 29. lokakuuta noin yhdentoista tunnin ajan Anthropicin Claude Code -laajennuksen versioita, joihin oli upotettu SSH-takaovi. Haitalliset versiot 2.1.312 ja 2.1.313 eivät olleet Anthropicin tekemiä. Ne koskivat macOS- ja Windows-käyttäjiä, jotka asensivat tai päivittivät laajennuksen Cursor Marketplacesta kyseisenä aikana.
Tapauksen havaitsi tietoturvayhtiö Phorion, joka julkaisi haittakoodista yksityiskohtaisen analyysin. Cursor vahvisti tapauksen omassa tietoturvatiedotteessaan ja poisti versiot kaupasta. Kehittäjän editoriin asennettu laajennus toimii käyttäjän oikeuksin, joten se pääsee suoraan lähdekoodiin, tiedostoihin ja kehitystyökaluihin.
Yksitoista tuntia väärennettyä laajennusta
Cursorin mukaan haitallinen versio oli saatavilla Tyynenmeren aikaa kello 2.27:stä 13.35:een. Suomen aikaa se tarkoittaa noin kello 11.30–22.30. Laajennus näytti tavalliselta: sen paketissa olivat Claude Coden normaali käyttöliittymäkoodi ja aktivointifunktiot.
Ero piili paketin alussa. Pienennetyn extension.js-tiedoston eteen oli lisätty heti suoritettava funktio, joka käynnistyi jo silloin, kun Node.js latasi tiedoston. Käyttäjän ei siis tarvinnut avata laajennusta tai klikata mitään.
Cursor sulki koko laajennuskaupan varotoimena, tarkisti muut laajennukset ja vaihtoi avaimensa ennen kuin palautti kaupan käyttöön. Yhtiön mukaan muita laajennuksia ei ollut peukaloitu. Myöskään laajennuksen virallisen jakelukanavan muista versioista ei ole löytynyt viitteitä haittakoodista.
Cursorin tiedote rajaa altistuneet macOS- ja Windows-asennuksiin. Haittakoodissa oli kuitenkin valmiina myös Linuxin asennus- ja pysyvyyslogiikka. Siksi myös Linux-koneilla Cursoria käyttävien kannattaa tehdä samat tarkistukset, jos laajennus päivittyi kyseisenä päivänä.

Näin takaovi yritti avata yhteyden
Haittakoodi lisäsi ensin hyökkääjän julkisen avaimen käyttäjän authorized_keys-tiedostoon. Avaimen tunnisteena oli svc-telemetry. Sen jälkeen koodi yritti käynnistää koneen oman SSH-palvelun: Linuxissa systemctl-komennolla, macOS:ssä Remote Login -asetuksella ja Windowsissa asentamalla OpenSSH-palvelimen.
Seuraavaksi kone avasi käänteisen SSH-tunnelin hyökkääjän palvelimelle. Käänteinen tunneli tarkoittaa, että uhrin kone ottaa yhteyden ulospäin, ja hyökkääjä pääsee saman yhteyden kautta takaisin koneen SSH-porttiin. Näin palomuurit eivät estä sisääntuloa, koska yhteys näyttää lähtevältä liikenteeltä.
Pysyvyys hoidettiin alustakohtaisesti. macOS:ssä koodi kirjoitti LaunchAgentin, joka naamioitiin Applen järjestelmäpalveluksi nimellä com.apple.sysmond. Windowsissa se yritti luoda SysMon-nimisen ajastetun tehtävän ja tarvittaessa käynnistysskriptin. Tunneli yritti uudelleen minuutin välein myös editorin sulkemisen jälkeen.
Lopuksi laajennus lähetti hyökkääjälle tiedot koneesta: käyttäjänimen, Git-sähköpostin, julkisen IP-osoitteen ja enintään 40 ympäristömuuttujan nimeä, joissa esiintyi esimerkiksi KEY, TOKEN tai AWS. Arvoja se ei lähettänyt, mutta lista kertoi, millä koneilla on kiinnostavia tunnuksia.

Hyökkääjän omat virheet rajasivat vahinkoa
Phorionin analyysi löysi koodista bugin, joka katkaisi hyökkäysketjun useimmilla Mac-koneilla. Skripti tarkisti Remote Login -tilan ilman ylläpitäjän oikeuksia. Tavallisena käyttäjänä komento palauttaa virheilmoituksen eikä sanaa Off, joten SSH-palvelun käynnistysyritys jäi kokonaan väliin.
Windowsin puolella vastaava virhe syntyi siitä, että PowerShell-komento ajettiin /bin/sh-tulkin kautta. Tulkkia ei normaalissa Windows-asennuksessa ole. Linuxin crontab-käsittelyssä oli puolestaan virhe, joka saattoi toistuvilla ajoilla tyhjentää käyttäjän muut ajastetut tehtävät.
Cursorin mukaan SSH-palvelun käynnistys onnistui vain poikkeustilanteissa, kuten jos editori oli käynnistetty ylläpitäjän oikeuksin. Hyökkääjän palvelin on myös suljettu yhteistyössä pilvipalveluntarjoajan kanssa. Avain, pysyvyysmekanismi ja koneen tiedot ehdittiin silti asentaa tai lähettää, joten tapausta ei voi kuitata harmittomana.

Mitä kehittäjien ja ylläpidon kannattaa tehdä
Helpoin tarkistus on etsiä svc-telemetry-merkkijonoa omasta authorized_keys-tiedostosta. Cursor julkaisi tähän valmiit komennot macOS:lle ja Windowsille sekä erilliset poistoskriptit. Phorion suosittelee vertaamaan myös avaimen sormenjälkeä, koska pelkkä kommenttikenttä on helppo muuttaa.
Pelkkä laajennuksen poistaminen ei riitä, sillä haittakoodi jätti jälkeensä erilliset skriptit kansioon ~/.config sekä LaunchAgentin tai ajastetun tehtävän. Jos merkkejä löytyy, kone kannattaa eristää, poistaa avain ja pysyvyys sekä harkita koko koneen uudelleenasennusta.
Kaikki tunnukset, joihin koneelta on ollut pääsy, on syytä vaihtaa puhtaalta laitteelta. Organisaatioiden kannattaa lisäksi käydä läpi laajennusten asennuslokit ja verkkoliikenne. Tapaus muistuttaa, että tekoälyavusteiset koodaustyökalut ovat nyt yhtä houkutteleva hyökkäyskohde kuin npm- tai PyPI-paketit.
Pitkällä aikavälillä riskiä pienentää laajennusversioiden lukitseminen ja automaattisten päivitysten hallinta kehittäjäkoneilla. Kun laajennus päivittyy hiljaa taustalla, muutos pääsee koneelle ennen kuin kukaan ehtii arvioida sitä. Moni yritys valvoo jo palvelinten paketteja, mutta editorien laajennukset jäävät usein valvonnan ulkopuolelle.

Yhteenveto
Cursorin laajennuskaupassa jaetut Claude Code -versiot 2.1.312 ja 2.1.313 asensivat SSH-takaoven, pysyvyyden ja tiedustelun macOS- ja Windows-koneille. Hyökkääjän koodivirheet ja palvelimen nopea alasajo estivät todennäköisesti varsinaisen etäkäytön useimmilla koneilla.
Laajennuksen ajanjaksolla asentaneiden kannattaa silti tarkistaa koneensa, poistaa jäljet ja vaihtaa tunnukset. Suurempi kysymys koskee laajennuskauppojen jakeluketjua: kun koodausagentit saavat yhä laajemmat oikeudet kehittäjän koneella, niiden toimitusketjun turvallisuus nousee ratkaisevaksi.
