Cursor ne pohranjuje API ključeve u zaštićenu pohranu, što znači da im može pristupiti bilo koje proširenje. Cursor je znao za ovu ranjivost, ali je nije popravio.

Sažetak

Sigurnosni istraživači tvrtke LayerX otkrili su da svako proširenje popularnog alata za razvoj umjetne inteligencije Cursor može pristupiti API ključevima i tokenima sesije programera, što dovodi do potpunog kompromitiranja vjerodajnica, bez potrebe za interakcijom ili aktivnošću korisnika. 

LayerX je otkrio da, budući da Cursor ne pohranjuje ključeve u zaštićenu pohranu, Bilo koji Cursor ekstenzija može izvršiti ovaj pristup. Kao rezultat toga, svaki korisnik Cursora je ranjiv na krađu API ključa od strane lažnih Cursor ekstenzija.

Iskorištavanje ove ranjivosti može dovesti do otkrivanja tokena sesije i API ključeva, neovlaštenog pristupa Cursor backend uslugama i krađe podataka putem lažnog predstavljanja korisnika.

LayerX je prijavio ovu ranjivost Cursoru. Cursor je odgovorio da prepoznaju problem, ali da je odgovornost korisnika da definira svoju granicu povjerenja. Cursor do danas nije riješio ovaj problem.

 

Ključevi Cursor API-ja pohranjeni su u otvorenoj, lokalnoj bazi podataka

Cursor, popularno razvojno okruženje pokretano umjetnom inteligencijom, sadrži vrlo ozbiljnu ranjivost kontrole pristupa (CVSS 8.2) koji omogućuje bilo kojem instaliranom proširenju pristup osjetljivim vjerodajnicama pohranjenim lokalno.

Za razliku od standardnih sigurnosnih praksi gdje se tajne poput API ključeva i tokena sesije pohranjuju u zaštićenoj pohrani (npr. privjesci ključeva OS-a), Cursor pohranjuje te vjerodajnice u lokalnu SQLite bazu podataka:

` ~/Knjižnica/Podrška aplikacijama/Kursor/Korisnik/globalStorage/state.vscdb `

Ključno je da Cursor ne nameće granice kontrole pristupa između ekstenzija i ove baze podataka. Kao rezultat toga, bilo koja ekstenzija - bez obzira na deklarirana dopuštenja - može izravno čitati iz nje i izdvajati osjetljive podatke.

To stvara moćan primitiv za napad: zlonamjerno ili kompromitirano Cursor proširenje može tiho ukrasti API ključeve i tokene sesije, omogućujući preuzimanje računa, pristup podacima i financijsku zlouporabu.

 

Utjecaj

Ova ranjivost omogućuje potpuno kompromitiranje vjerodajnica bez interakcije s korisnikom (osim instaliranja proširenja), što dovodi do:

  • Izloženost tokena sesije i API ključeva
  • Neovlašteni pristup Cursor backend uslugama
  • Kompromitiranje integracija trećih strana (npr. OpenAI, Anthropic, Google)
  • Lažno predstavljanje korisnika i pristup podacima

Rizik nizvodno (primjer: krađa OpenAI API ključa)

Ako napadač dobije OpenAI API ključ žrtve, može:

  • Izvršavanje API poziva naplaćenih žrtvi → financijski gubitak
  • Pristupni upiti, dovršeci i metapodaci → izloženost podataka
  • Zloupotreba API-ja za daljnje napade ili automatizaciju
  • Potencijalno zaključivanje o osjetljivim informacijama iz prethodnih interakcija

Budući da ovi ključevi često daju širok pristup, utjecaj se proteže izvan samog Cursora na širi ekosustav umjetne inteligencije i razvoja korisnika.

 

Tehnički pregled

Prođimo kroz realističan scenarij napada iz perspektive napadača.

Slika 1. Tijek iskorištavanja

Korak 1: Priprema zlonamjernog proširenja

Napadač stvara naizgled bezopasno Cursor proširenje - možda alat za produktivnost, temu ili pomoćni program. Ne zahtijeva nikakve sumnjive dozvole i čini se sigurnim za instalaciju.

Iz perspektive korisnika, ništa ne izgleda neobično.

Korak 2: Korisnik instalira proširenje

Programer instalira ekstenziju s tržišta ili GitHub repozitorija.

Tamo je:

  • Bez upozorenja
  • Nema upita za dopuštenje vezanog uz pristup vjerodajnicama
  • Nema naznaka rizika

U ovom trenutku, napadač ima izvršavanje koda unutar okruženja ekstenzije Cursor.

Korak 3: Pristup osjetljivoj pohrani

Cursor pohranjuje osjetljive podatke u gore spomenutoj lokalnoj SQLite bazi podataka. Ova baza podataka sadrži:

  • Tokeni sesije
  • API ključevi (npr. OpenAI)
  • Ostali artefakti za autentifikaciju

Zbog nedostatka provedbe kontrole pristupa, proširenje može izravno otvoriti i slati upite ovoj bazi podataka. Nisu potrebne posebne privilegije.

Korak 4: Izdvajanje vjerodajnica

Proširenje analizira bazu podataka i izdvaja:

  • API ključevi
  • Tokeni sesije
  • Moguće predmemorirana konfiguracija ili metapodaci

Slika 2. Primjer upita baze podataka iz PoC proširenja

Budući da su podaci pohranjeni u običnom tekstu (ili nedovoljno zaštićeni), izdvajanje je jednostavno.

Korak 5: Tiha eksfiltracija

Proširenje šalje ukradene vjerodajnice na poslužitelj kojim upravlja napadač, što se može učiniti jednostavnim dohvaćanjem. To se događa tiho:

  • Nije potrebna interakcija korisnika
  • Nema vidljivih promjena korisničkog sučelja
  • Nema upozorenja

Korak 6: Nakon iskorištavanja

Napadač sada ima valjane vjerodajnice.

Zašto je ovo visoka ozbiljnost

Ova ranjivost je posebno opasna jer:

  • Nisu potrebna dopuštenja
  • Nakon instalacije nije potrebna interakcija korisnika 
  • Niska složenost napada
  • Visok utjecaj na povjerljivost

Kako bismo istaknuli koliko se ovo lako može iskoristiti, stvorili smo PoC proširenje i demo video:

 

Vremenski okvir objave:

Iako izvješće pokazuje da ekstenzije mogu pristupiti lokalnoj SQLite bazi podataka koja sadrži vjerodajnice, taj je pristup ograničen na lokalno računalo na kojem je korisnik već instalirao i dodijelio dozvole za ekstenziju. To predstavlja istu granicu povjerenja kao i bilo koja druga lokalna aplikacija – zlonamjerne ekstenzije s pristupom lokalnom datotečnom sustavu potencijalno bi mogle pristupiti raznim spremištima podataka aplikacije.

  • Ispravak statusaNije popravljeno. Uto, 28. travnja 2026. 

Preporučena sanacija

Da bi se ovaj problem ispravno riješio, Cursor mora:

  • Provedite strogu izolaciju između ekstenzija i osjetljivog prostora za pohranu vjerodajnica.
  • Osjetljivim vjerodajnicama treba upravljati putem sigurnog, šifriranog sloja za pohranu ili privjeska ključeva na razini sustava (npr. privjesak ključeva za macOS, Upravitelj vjerodajnica za Windows).