Hacker News

Google API ključevi nisu bili tajne, ali onda je Gemini promijenio pravila

Komentari

14 min read Via trufflesecurity.com

Mewayz Team

Editorial Team

Hacker News

Kada "Public by Design" postane sigurnosna obaveza

Gotovo dvije decenije, programeri koji su gradili na Googleovom ekosistemu naučili su suptilnu, ali važnu lekciju: Google API ključevi zapravo nisu tajne. Ako ste ugradili YouTube Data API ključ u JavaScript fajl, Google se nije uzbunio. Ako se vaš Maps API ključ pojavio u javnom GitHub spremištu, sigurnosni odgovor je u suštini bio slijeganje ramenima i podsjetnik za postavljanje ograničenja domene. Cijeli model je izgrađen oko pretpostavke da će ovi ključevi živjeti u kodu na strani klijenta, izložen svakome ko je otvorio DevTools.

Ta filozofija je dugo imala smisla. Maps API ključ izložen bez ograničenja domena mogao bi skupiti iznenađujući račun, ali neće ugroziti kartone pacijenata ili iscrpiti bankovni račun. Radijus eksplozije bio je finansijski i podnošljiv. Google-ov alat — ograničenja upućivača, bela lista IP adresa, ograničenja kvota — dizajniran je da obuzda štetu, a ne da u potpunosti spriječi izlaganje.

Onda su stigli Blizanci i pravila su se promijenila. Problem je što milioni programera nisu dobili dopis.

Naslijeđeni mentalni model koji sada spaljuje programere

Staro iskustvo Googleovog programera bilo je namjerno dopušteno. Kada ste kreirali Maps JavaScript API ključ, dokumentacija vas je praktično ohrabrila da ga ubacite direktno u svoj HTML. Sigurnosni model nije bio tajnost – to je bilo ograničenje. Zaključali biste ključ svoje domene, postavili bi upozorenja o kvotama i krenuli dalje. Ovo je bio pragmatičan inženjering: aplikacije na strani klijenta zaista ne mogu čuvati tajne od odlučnih korisnika, pa je Google izgradio sistem koji je priznao tu realnost.

Ovo je stvorilo generaciju programera — i što je još važnije, generaciju institucionalnih navika — gdje su Google API ključevi zauzimali drugačiju mentalnu kategoriju od, recimo, Stripe tajnog ključa ili AWS akreditiva za pristup. Ne biste zalijepili svoj Stripe tajni ključ u javni repo. Ali vaš ključ Mapa? To je praktično bila konfiguraciona vrednost, a ne tajna. Mnogi timovi su ih pohranili u javne konfiguracijske datoteke, README datoteke, čak i u varijablama okruženja na strani klijenta s prefiksom NEXT_PUBLIC_ ili REACT_APP_ bez razmišljanja.

Istraživači sigurnosti koji su skenirali GitHub u potrazi za otkrivenim vjerodajnicama naučili su i drugačije tretirati Google API ključeve. Ključ Mape koji je procurio bio je nalaz male težine. Procureli ključ Blizanaca je potpuno drugačiji razgovor.

Šta se promijenilo s Blizancima — i zašto je to važno

Googleov Gemini API ne prati staru knjigu. Kada generišete Gemini API ključ putem Google AI Studio-a, kreirate vjerodajnicu s fundamentalno drugačijim profilom rizika od ključa za Mape ili YouTube. Gemini ključevi potvrđuju pristup zaključivanju velikog jezičkog modela — usluga koja košta Googleove stvarne računarske resurse i koja vam naplaćuje tokenom, a ne prikazom stranice.

Još kritičnije, Gemini API ključevi nemaju iste ugrađene mehanizme ograničenja domena koji su omogućili da se izlaganje drugih Google ključeva preživi. Ne postoji jednostavna kontrola "zaključaj ovo na domenu moje web stranice" koja bi spriječila napadača koji je pronašao vaš ključ u javnom spremištu da pokrene sopstvenu aplikaciju i potroši vašu kvotu — ili ograničenje naplate — sa servera u drugoj zemlji.

Opasnost nije samo finansijska. Izloženi ključ Gemini se može koristiti za generiranje štetnog sadržaja, provođenje napada brze injekcije ili pravljenje alata koji krše Googleove uslove korištenja – sve se naplaćuje na vašem računu i može se pratiti do vašeg identiteta.

U 2024., istraživači sigurnosti su identificirali hiljade otkrivenih Gemini API ključeva samo na GitHubu, mnogi od njih u spremištima koja su prethodno bez incidenata hostirala druge Google API ključeve. Programeri nisu bili nesmotreni prema vlastitim istorijskim standardima – oni su primjenjivali mentalni model za koji ih je sam Google obučio. Okruženje se mijenjalo brže nego navike.

Anatomija slučajnog izlaganja

Razumijevanje načina na koji se ove izloženosti dešavaju je prvi korak ka njihovom sprječavanju. Načini neuspjeha su izuzetno konzistentni u timovima svih veličina:

  • Pogrešna klasifikacija varijable okruženja: Programeri navikli na ključeve Google Maps prefiksiraju ključeve Gemini sa NEXT_PUBLIC_ ili VITE_, odmah ih izlažući u paketnom kodu na strani klijenta.
  • Kontaminacija historije spremišta: Ključ se dodaje u konfiguracijski fajl, urezuje, a zatim uklanja — ali historija git-a ostaje pretraživa neograničeno. Napadači koriste alate kao što su truffleHog i gitleaks posebno za kopanje ove historije.
  • Propuštanje prijenosnog računala i prototipa: Naučnici za podatke koji prototipiraju Gemini integracije u Jupyter notebook računarima guraju te bilježnice na GitHub s ključevima ugrađenim u izlaze ćelije.
  • Pogrešna konfiguracija CI/CD-a: Ključevi pohranjeni kao tajne spremišta slučajno se odjekuju u zapisnicima izgradnje koji su javno vidljivi na GitHub Actions ili sličnim platformama.
  • Širenje usluga trećih strana: Programeri lijepe ključeve u analitičke kontrolne ploče, alate bez kodiranja ili integracijske platforme bez pregleda sigurnosnih stavova tih platformi.
  • Kanali za timsku komunikaciju: Ključevi koji se dijele preko Slack-a, Discord-a ili e-pošte završavaju u pretraživanim historijama poruka koje nadžive raspored rotacije.

Zajednička nit nije nemar – to je kolaps konteksta. Ponašanja koja su bila sigurna u jednom kontekstu (razvoj Google mapa) opasna su u drugom (razvoj Gemini), a vizuelna sličnost akreditiva čini razliku lako promašivom.

Izgradnja kulture upravljanja tajnama koja raste

Situacija Blizanaca je korisna forsirajuća funkcija za nešto što su mnogi razvojni timovi odgađali: izgradnju stvarne infrastrukture za upravljanje tajnama, a ne ad-hoc pristupa. Za male timove ovo može izgledati kao pretjerani inženjering, ali trošak izloženosti vjerodajnicama – prijevara u naplati, suspenzija računa, obavještenja o kršenju podataka – uvelike premašuju napor da se ovo uradi kako treba.

Upravljanje modernim tajnama slijedi višestepeni pristup. Na infrastrukturnom nivou, alati kao što su HashiCorp Vault, AWS Secrets Manager ili Google Secret Manager pružaju centraliziranu pohranu vjerodajnica s mogućnošću automatske rotacije. Ovo nije samo za velika preduzeća – usluge kao što su Doppler i Infisical donose iste obrasce timovima od dva ili tri programera po pristupačnim cijenama.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Na nivou koda, disciplina je jednostavnija: vjerodajnice nikada ne dodiruju izvorni kod. Tačka. Ni u prokomentiranim redovima, ni u primjerima datoteka, ni u testovima s lažnim vrijednostima koje se ispostavljaju stvarnim. Pre-commit hooks pokrećući alate kao što su detect-secrets ili gitleaks hvataju kršenja prije nego što dođu do udaljenih spremišta. Ovim kukicama je potrebno nekoliko minuta da se konfiguriraju i godine od vaše anksioznosti u vezi s odgovorom na incident.

Za organizacije koje imaju složene operativne stekove — upravljanje svime, od CRM tokova posla do integracije platnog spiska do sistema rezervacija okrenutih klijentima — centralizovano upravljanje vjerodajnicama postaje još važnije. Platforme kao što je Mewayz, koji objedinjuje 207 poslovnih modula pod jednim operativnim kišobranom, izgrađene su sa ovim principom u svojoj srži: vjerodajnicama i API integracijama se upravlja na nivou platforme, a ne raštrkanim po pojedinačnim modulima ili okruženjima pojedinačnih programera. Kada ključ treba rotirati, to se dešava jednom, na jednom mjestu, a ne u sedamnaest različitih tačaka integracije.

Vektor napada naplate: model prijetnje koji programeri podcjenjuju

Diskusije o sigurnosti se često fokusiraju na kršenje podataka i neovlašteni pristup. Problem izloženosti Blizancima dodaje treći model prijetnje koji zaslužuje jednaku pažnju: prevaru u naplati u velikom obimu.

Zaključivanje modela velikog jezika je skupo. GPT-4 i Gemini Ultra obrađuju tokene po delićima centa svaki, ali na skali - hiljade zahteva, milioni tokena - ti delići se veoma brzo zbrajaju do hiljada dolara. Napadači koji otkriju otkrivene AI API ključeve ne žele nužno vaše podatke. Oni žele besplatno računanje. Koristit će vaše vjerodajnice za pokretanje vlastitih usluga umjetne inteligencije, preprodaju kapaciteta zaključivanja ili testiranje svojih aplikacija na stres – sve dok račun ide vama.

Jedan programer je dokumentirao buđenje do novčanice od 23.000 dolara iz Gemini ključa izloženog u javnom spremištu manje od šest sati. Napadač je odmah automatizirao eksploataciju, kontinuirano izvršavajući zadatke generiranja visoke propusnosti dok ga Google-ovo otkrivanje prijevare nije uhvatilo. Programer je na kraju poništio troškove nakon dugotrajnog procesa spora, ali je račun suspendovan tokom tog perioda, čime je ukinut produkcijski servis.

Zato upozorenja o naplati i ograničenja kvota nisu zamjena za pravilno upravljanje tajnama – oni su posljednja linija odbrane za koju se nadate da vam nikada neće trebati. Postavljanje strogih mjesečnih ograničenja potrošnje na AI API račune sada je ulog u tablici, ali prava zaštita je osiguranje da ti akreditivi nikada ne procure.

Praktični koraci za timove koji vrše tranziciju

Ako je vaš tim gradio Google API integracije prema starom mentalnom modelu i sada dodaje Gemini u stog, evo realne kontrolne liste za popravak:

  1. Odmah izvršite reviziju postojećih spremišta. Pokrenite truffleHog ili gitleaks sa svojom punom git historijom, a ne samo sa trenutnom HEAD. Posebno se fokusirajte na bilo koje spremište koje je u prošlosti koristilo Google API ključ.
  2. Rotirajte sve izložene ključeve. Ako se Gemini ključ ikada pojavio u urezivanju, pretpostavite da je kompromitovan. Opozovite ga i generirajte novi. Ne pokušavajte procijeniti da li ga je neko "zapravo" pronašao.
  3. Implementirajte skeniranje prije urezivanja. Instalirajte kuke za otkrivanje tajnih podataka na svaku mašinu programera i u CI/CD cjevovode kao kapiju koja se ne može zaobići.
  4. Uspostavite ključni inventar. Znajte koje usluge imaju koje vjerodajnice, tko ih posjeduje, kada su zadnji put rotirani i gdje se koriste. Tabela je dobra polazna tačka; upravitelj tajni je odredište.
  5. Postavite upozorenja o naplati i čvrsta ograničenja. Na svakom AI API računu, konfigurirajte upozorenja na 50% i 80% vaše očekivane mjesečne potrošnje i postavite čvrsta ograničenja koja bi spriječila katastrofalne događaje naplate.
  6. Izričito dokumentujte novi mentalni model. Ažurirajte materijale za uključivanje i inženjerski priručnik svog tima kako biste eksplicitno naveli da su Gemini API ključevi visokoosjetljivi akreditivi koji zahtijevaju isti tretman kao i tajne procesora plaćanja.

Šira lekcija za preduzeća zavisna od platforme

Situacija Blizanaca ilustruje obrazac koji utječe na svaki posao koji je duboko integriran s platformama trećih strana: platforme se razvijaju, a zahtjevi za sigurnosno držanje se razvijaju zajedno s njima, ali institucionalne navike timova koji koriste te platforme često ne idu u korak. Ono što je juče bilo sigurno, danas je opasno, a jaz između te dvije države je mjesto gdje se kršenja dešavaju.

Ovo je posebno akutno za preduzeća koja vode složene operativne sisteme. Kompanija koja koristi funkcije zasnovane na umjetnoj inteligenciji u korisničkoj službi, analitici, generiranju sadržaja i preporukama proizvoda mogla bi imati Gemini integracije u desetak različitih konteksta - svaki od njih je potencijalna tačka izloženosti ako se vjerodajnicama rukuje nedosljedno. Rješenje nisu samo bolje individualne navike programera; to je arhitektonsko. Pristup vjerodajnicama treba biti centraliziran, revidiran i upravljan na nivou platforme.

Moderni poslovni operativni sistemi se sve više dizajniraju imajući to na umu. Kada Mewayz integriše mogućnosti umjetne inteligencije u svoj paket – od inteligentnih CRM tokova do automatizirane analitike u svom ekosistemu od 207 modula – upravljanje vjerodajnicama se upravlja na infrastrukturnom sloju, a ne na sloju aplikacije. Individualni programeri modula ne rukuju sirovim API ključevima; oni pristupaju mogućnostima kroz slojeve apstrakcije koji provode politike rotacije, reviziju pristupa i ograničavaju radijus eksplozije ako nešto pođe po zlu. Ovo je arhitektura koju zahtijeva era Blizanaca: ne samo bolje navike, već i bolji sistemi koji prave navike čine jedinom dostupnom opcijom.

Google nije pogriješio kada je napravio model permisivnog API ključa za Mape i YouTube. Taj model je bio prikladan za te usluge. Ali kako se mogućnosti i profili troškova API-ja dramatično razvijaju – i kako AI API-ji predstavljaju možda najoštriju prekretnicu u toj evoluciji – cijela industrija mora resetirati svoje zadane vrijednosti. Programeri koji napreduju u ovom okruženju neće biti oni koji su najbolje naučili stara pravila, već oni koji prepoznaju kada su se pravila iz temelja promijenila.

Često postavljana pitanja

Zašto su se Google API ključevi u prošlosti smatrali sigurnim za javno izlaganje?

Google je dizajnirao mnoge svoje API-je – Mape, YouTube, Places – za upotrebu na strani klijenta, što znači da su ključevi namjerno ugrađeni u front-end kod vidljiv svima. Sigurnosni model se oslanjao na ograničenja upotrebe kao što su liste dozvoljenih domena i provjere upućivača, a ne na tajnost ključa. Godinama se otkriveni ključ smatrao konfiguracijskim problemom, a ne kritičnom ranjivosti koja zahtijeva trenutnu rotaciju.

Šta se promijenilo kada je Google uveo Gemini API ključeve?

Za razliku od naslijeđenih Google API-ja, Gemini API ključevi funkcioniraju više kao tradicionalne tajne – otkrivanje jedne može rezultirati neovlaštenim naplatama vašeg računa za naplatu, zloupotrebom modela ili iscrpljivanjem kvote bez ugrađenog ograničenja domene da vas spasi. Promena znači da programeri sada moraju da tretiraju Gemini ključeve sa istom disciplinom kao i AWS akreditive ili Stripe tajne ključeve, pohranjujući ih na strani servera, a nikada u kodu okrenutom klijentu.

Kako bi programeri danas trebali sigurno upravljati API ključevima za AI usluge?

Najbolja praksa je pohraniti sve AI API ključeve kao varijable okruženja na serveru, nikada u datotekama kontroliranim verzijama ili klijentskim paketima. Koristite upravitelja tajni, redovno rotirajte ključeve i postavite ograničenja potrošnje na nivou provajdera. Platforme kao što je Mewayz — poslovni OS sa 207 modula po cijeni od 19 USD mjesečno dostupan na app.mewayz.com — upravljaju upravljanjem akreditivima API-ja unutar svoje infrastrukture, tako da timovi ručno ne žongliraju ključevima između usluga.

Šta da radim ako sam već slučajno otkrio Gemini API ključ?

Odmah opozovite kompromitovani ključ putem Google Cloud Console i generirajte zamjenu prije nego što učinite bilo šta drugo. Pregledajte svoju kontrolnu tablu za naplatu za neočekivane skokove upotrebe koji bi mogli ukazivati ​​na to da je ključ pokupljen. Zatim pregledajte svoju bazu koda, CI/CD varijable okruženja i sva javna spremišta za druge procurele vjerodajnice. Tretirajte incident kao i svaki otkriveni akreditiv za plaćanje — pretpostavite da je pronađen i postupite u skladu s tim.