Ako som hackol samotný systém sledovania chýb spoločnosti Google za odmenu 15 600 dolárov

Jednoduché chyby za ťažké peniaze

Počuli ste už o nástroji na sledovanie problémov Google? Pravdepodobne nie, pokiaľ nie ste zamestnancom spoločnosti Google alebo vývojárom, ktorý nedávno nahlásil chyby v nástrojoch Google. A takisto som to nemal ani ja, kým som si všimol, že moje správy o zraniteľnosti sa teraz okrem bežných e-mailových upozornení riešia aj otvorením nového vlákna.

Okamžite som sa teda začal snažiť to zlomiť.

Čo je to vlastne tento web? Podľa dokumentácie je nástroj Issue Tracker (interne nazývaný Buganizer System) nástroj používaný interne v spoločnosti Google na sledovanie chýb a požiadaviek na funkcie počas vývoja produktu. Je k dispozícii mimo Google na použitie pre externých verejných a partnerských používateľov, ktorí potrebujú spolupracovať s tímami Google na konkrétnych projektoch.

Inými slovami, ak má niekto problém s produktom Google, zobrazí sa v nástroji na sledovanie problémov . Dáva to zmysel, nie? My ako externí používatelia uvidíme iba vrchol ľadovca: malú skupinu vopred schválených kategórií a problémy, keď niekto zo spoločnosti Google výslovne pridal externý účet, napríklad správy o zraniteľnosti . Koľko informácií však leží pod povrchom?

Pozorovaním číselných ID priradených k najnovším verejným vláknam môžeme ľahko odhadnúť, aké veľké využitie tento nástroj interne dostane. V Mountain View sa otvára počas pracovnej doby asi 2 000–3 000 vydaní za hodinu a iba 0,1% z nich je verejných. Zdá sa, že únik údajov v tomto systéme by mal dosť veľký dopad. Poďme to rozbiť!

Pokus č. 1: Získanie zamestnaneckého účtu Google

Jednou z prvých vecí, ktoré som si všimol pri objavení sledovača problémov, bola schopnosť zúčastňovať sa diskusií zasielaním e-mailov na špeciálnu adresu, ktorá vyzerá takto:

buganizer-system + componentID + issueID @ google.com

(v ktorom componentID je číslo predstavujúce kategóriu a issueID je jedinečný identifikátor vlákna, na ktoré odpovedáte)

To mi pripomenulo nedávny nález s názvom Ticket Trick, ktorý umožnil hackerom preniknúť do chatovacích systémov organizácií využitím tohto e-mailového systému. Vzhľadom na to, že sa jedná o e-mailovú adresu @ google.com , pokúsil som sa pomocou nej prihlásiť do tímu Google Slack a stránka s potvrdením, na ktorú som sa dostal, vyzerala veľmi nádejne:

Bohužiaľ, žiadny e-mail od Slacku sa nikdy neobjavil.

Ďalšou najlepšou vecou, ​​na ktorú som si spomenul, bolo získanie účtu Google s hlavnou e-mailovou adresou @ google.com , ktorý by mi, dúfajme, dal nejaké ďalšie privilégiá pre Buganizer. Registrácia takéhoto účtu mimo spoločnosti Google nemala byť povolená:

Našiel som však spôsob, ako tento filter obísť: Ak som sa zaregistroval na akejkoľvek inej falošnej e-mailovej adrese, ale nepodarilo sa mi potvrdiť účet kliknutím na odkaz prijatý e-mailom, bolo mi umožnené zmeniť svoju e-mailovú adresu bez akýchkoľvek obmedzení. Pomocou tejto metódy som zmenil e-mail nového účtu Google na [email protected]gle.com.

Čoskoro potom som dostal potvrdzovací e-mail ako správu na príslušnej stránke s problémom:

Pekný! Klikla som na potvrdzovací odkaz, prihlásila som sa do nástroja na sledovanie problémov a ...

Presmerovali ma na stránku firemného prihlásenia. A nie, moje prihlasovacie údaje k účtu Google tam nefungovali. Bummer.

Napriek tomu mi tento účet priniesol mnoho ďalších výhod na iných miestach po internete, vrátane možnosti stopnúť sa (zadarmo, možno?), Takže to bol stále bezpečnostný problém, ktorý otvoril veľa brán škodlivým používateľom.

Akceptované: 11 hodín | Odmena : 3 133,7 USD | Priorita: P1

Pokus č. 2: Dostávať upozornenia na interné tikety

Ďalšou funkciou sledovania problémov, ktorá ma zaujala pri oboznámení sa s používateľským rozhraním, je schopnosť označovať hviezdičkami položky. Označenie problému hviezdičkou znamená, že vás zaujíma diskutovaný problém a chcete dostávať e-mailové upozornenia vždy, keď niekto pridá komentár.

Zaujímavosťou, ktorú som si na tejto funkcii všimol, bol zreteľný nedostatok chýb pri pokuse o použitie pri problémoch, ku ktorým som nemal prístup. Pravidlá kontroly prístupu sa v tomto koncovom bode nikdy neuplatňovali, takže som sa prihlásil do svojho druhého účtu a pokúsil som sa hviezdičkou označiť správu o zraniteľnosti z môjho hlavného účtu nahradením ID problému v žiadosti. Potom som uvidel túto správu, čo znamená, že akcia bola úspešná:

1 osoba označila tento problém hviezdičkou.

Môže byť také ľahké špehovať otvorené zraniteľnosti Google? Rýchlo som uverejnil komentár k problému, aby som zistil, či bude o mojom účte fiktívneho útočníka informovaný.

Ale opäť sa nikdy neobjavil žiadny e-mail.

Z nejakého dôvodu, ktorý si skutočne nepamätám, som sa rozhodol urobiť ďalšie testovanie tohto. Získal som teda ID nedávneho problému a extrapoloval som niekoľko tisíc ID, ktoré by sa mali zhodovať s najnovšími vydaniami v databáze. Potom som ich všetky zahviezdil.

Moja doručená pošta vyzerala za pár minút takto:

Moja prvá myšlienka pri otvorení doručenej pošty bola „Jackpot!“.

Pri bližšom skúmaní sa však v týchto vláknach nedialo nič zvlášť zaujímavé. Zrejme som mohol odpočúvať iba rozhovory spojené s prekladom, kde by ľudia diskutovali o najlepších spôsoboch vyjadrenia významu frázy v rôznych jazykoch.

Dokonca som zvažoval, že to nebudem hlásiť niekoľko hodín, v nádeji, že nájdem spôsob, ako túto závažnosť vyhrotiť. Nakoniec som si uvedomil, že bezpečnostný tím spoločnosti Google by pravdepodobne mal záujem o nájdenie možných metód a variantov otočenia, a preto som poslal podrobnosti.

Akceptované: 5 hodín | Odmena: 5 000 dolárov | Priorita: P0

Pokus č. 3: Koniec hry

Keď navštívite nástroj na sledovanie problémov ako externý používateľ, väčšina jeho funkcií je odstránená, takže máte mimoriadne obmedzené oprávnenia. Ak chcete vidieť všetko, čo môžu zamestnanci Google robiť, môžete vyhľadať koncové body API v súboroch JavaScript. Niektoré z týchto funkcií sú úplne deaktivované, iné sú jednoducho skryté v rozhraní.

Pri navrhovaní tejto obmedzenej verzie systému bol niekto taký milý, že nechal v našej metóde odstránenie sa zo zoznamu CCs, ak by sme stratili záujem o problém alebo o ňom už nechceli dostávať e-maily. To by sa dalo dosiahnuť odoslaním žiadosti POST takto:

POST /action/issues/bulk_edit HTTP/1.1
{ "issueIds":[ 67111111, 67111112 ], "actions":[ { "fieldName":"ccs", "value":"[email protected]", "actionType":"REMOVE" } ]}

Všimol som si tu však určité nedopatrenia, ktoré viedli k obrovskému problému:

  1. Nesprávne riadenie prístupu:issueIds Pred vykonaním danej akcie nedošlo k nijakej výslovnej kontrole, či mal aktuálny používateľ skutočne prístup k problémom uvedeným v .
  2. Tiché zlyhanie : Ak ste zadali e-mailovú adresu, ktorá sa momentálne nenachádza v zozname CC, koncový bod vráti správu, v ktorej sa uvádza, že e-mail bol úspešne odstránený.
  3. Úplné podrobnosti problému ako odpoveď: Ak sa počas akcie nevyskytli žiadne chyby, iná časť systému predpokladala, že používateľ má správne povolenia. V tele odpovede HTTP by sa teda vrátil každý jeden detail o danom ID problému.

Teraz by som mohol vidieť podrobnosti o každom probléme v databáze nahradením issueIdsvo vyššie uvedenej žiadosti. Bingo!

Skúšal som zobraziť iba niekoľko po sebe idúcich identifikačných údajov, potom som na seba zaútočil z nesúvisiaceho účtu, aby som potvrdil závažnosť tohto problému.

Áno, videl som podrobnosti o správach o zraniteľnosti spolu so všetkým ostatným hosteným v aplikácii Buganizer.

Ešte horšie je, že som mohol exfiltrovať údaje o viacerých tiketoch v jednej požiadavke, takže sledovanie všetkej vnútornej aktivity v reálnom čase by pravdepodobne nespustilo žiadne obmedzovače rýchlosti.

Okamžite som poslal podrobnosti zneužitia spoločnosti Google a ich bezpečnostný tím nechal postihnutý koncový bod deaktivovať o hodinu neskôr. Pôsobivý čas odozvy!

Prijatý: 1 hodina | Odmena: 7 500 dolárov | Priorita: P0

Keď som prvýkrát začal loviť tento únik informácií, predpokladal som, že to bude Svätý grál chýb Google, pretože zverejňuje informácie o všetkých ďalších chybách (napríklad HackerOne platí za niečo podobné 10 000 dolárov).

Ale po nájdení som si rýchlo uvedomil, že dopad bude minimalizovaný, pretože všetky nebezpečné zraniteľnosti sa do hodiny aj tak zneutralizujú.

Som veľmi spokojný s hotovosťou navyše a teším sa, až nájdem chyby v iných produktoch Google.