de Alex Birsan

Cum am piratat sistemul de urmărire a erorilor Google în sine cu 15.600 de dolari în recompense

Bug-uri ușoare pentru numerar greu

Ați auzit vreodată de Google Issue Tracker? Probabil că nu, cu excepția cazului în care sunteți un angajat Google sau un dezvoltator care a raportat recent erori în instrumentele Google. Și nici eu, până nu am observat că rapoartele mele de vulnerabilitate erau acum gestionate prin deschiderea unui nou fir acolo, pe lângă notificările obișnuite prin e-mail.

Așa că am început imediat să încerc să o rup.

Cum am piratat sistemul de urmarire a erorilor Google in

Deci, ce este exact acest site web? Conform documentației, Issue Tracker (numit intern Buganizer System) este un instrument utilizat în cadrul companiei Google pentru a urmări erorile și a solicita caracteristici în timpul dezvoltării produsului. Este disponibil în afara Google pentru utilizare de către publicul extern și utilizatorii parteneri care trebuie să colaboreze cu echipele Google la proiecte specifice.

Cu alte cuvinte, atunci când cineva are un problema cu un produs Google, merge în problema tracker. Are sens, nu? Noi, ca utilizatori externi, putem vedea doar vârful aisbergului: un mic set de categorii pre-aprobate și probleme în care cineva de la Google a adăugat în mod explicit un cont extern, cum ar fi rapoarte de vulnerabilitate. Dar câtă informație se află sub suprafață?

Cum am piratat sistemul de urmarire a erorilor Google in

Prin observarea ID-urilor numerice atribuite ultimelor fire publice, putem estima cu ușurință cât de mult utilizează acest instrument pe plan intern. Sunt cam 2000-3000 de numere pe oră fiind deschis în timpul orelor de lucru în Mountain View și numai 0,1% dintre ele sunt publice. Se pare că o scurgere de date în acest sistem ar avea un impact destul de mare. Să o rupem!

Încercarea nr. 1: obținerea unui cont de angajat Google

Unul dintre primele lucruri pe care le-am observat la descoperirea urmăritorului de probleme a fost abilitatea de a participa la discuții prin trimiterea de e-mailuri la o adresă specială, care arată astfel:

buganizer-system +componentID+issueID@ google.com

(in care componentID este un număr care reprezintă o categorie și issueID este un identificator unic pentru firul la care răspundeți)

Acest lucru mi-a amintit de o descoperire recentă numită trucul biletului, care le-a permis hackerilor să se infiltreze în sistemele de chat ale organizațiilor prin utilizarea acestui tip de sistem de e-mail. Având în vedere că acesta este un @ google.com adresa de e-mail, am încercat să mă înscriu la echipa Google Slack folosind-o, iar pagina de confirmare la care am ajuns părea foarte promițătoare:

1612085468 773 Cum am piratat sistemul de urmarire a erorilor Google in

Din păcate, nu a apărut niciodată un e-mail de la Slack.

Cel mai bun lucru la care m-am putut gândi a fost să obțin un cont Google cu un @ google.com adresa de e-mail principală, care, sperăm, mi-ar oferi câteva privilegii suplimentare pe Buganizer. Înregistrarea unui astfel de cont din afara Google nu trebuia permisă:

1612085468 583 Cum am piratat sistemul de urmarire a erorilor Google in

Cu toate acestea, am găsit o metodă pentru a ocoli acest filtru: dacă m-am înscris cu orice altă adresă de e-mail falsă, dar nu am reușit să confirm contul făcând clic pe un link primit prin e-mail, mi s-a permis să-mi schimb adresa de e-mail fără nicio limită. Folosind această metodă, am schimbat adresa de e-mail a unui cont Google nou în buganizer-system+123123+67111111@google.com.

La scurt timp, am primit e-mailul de confirmare ca mesaj pe pagina corespunzătoare a problemei:

1612085468 352 Cum am piratat sistemul de urmarire a erorilor Google in

Grozav! Am făcut clic pe linkul de confirmare, m-am conectat la Urmărirea problemelor și …

1612085469 687 Cum am piratat sistemul de urmarire a erorilor Google in

Am fost redirecționat către pagina de autentificare corporativă. Și nu, acreditările contului meu Google nu au funcționat acolo. Păcat.

Cu toate acestea, acest cont mi-a oferit o mulțime de beneficii suplimentare în alte locuri de pe internet, inclusiv posibilitatea de a faceți o plimbare (gratuit, poate?), deci a fost încă o problemă de securitate care a deschis o mulțime de uși pentru utilizatorii rău intenționați.

Admis: 11 ore | Recompensă: 3.133,7 dolari | Prioritate: P1

Încercarea 2: Primirea unei notificări despre biletele interne

O altă funcție de urmărire a problemelor care mi-a atras atenția în timp ce mă familiarizam cu interfața de utilizare este abilitatea de a stea obiecte. În rolurile principale o problemă înseamnă că sunteți interesat de problema discutată și doriți să primiți notificări prin e-mail ori de câte ori cineva adaugă un comentariu.

1612085469 950 Cum am piratat sistemul de urmarire a erorilor Google in

Interesantul pe care l-am observat despre această funcționalitate a fost lipsa distinctă de erori când am încercat să o folosesc pe probleme la care nu aveam acces. Regulile de control al accesului nu păreau niciodată aplicate la acest punct final, așa că m-am conectat la al doilea cont și am încercat să afișez un raport de vulnerabilitate din contul meu principal, înlocuind ID-ul problemei în cerere. Am văzut apoi acest mesaj, ceea ce înseamnă că acțiunea a avut succes:

O persoană a marcat cu stea această problemă.

Ar putea fi atât de ușor să spionezi vulnerabilitățile Google deschise? Am postat rapid un comentariu cu privire la această problemă pentru a vedea dacă contul meu de atacator fictiv va primi o notificare cu privire la aceasta.

1612085469 87 Cum am piratat sistemul de urmarire a erorilor Google in

Dar, din nou, nu a apărut niciodată un e-mail.

Din anumite motive pe care cu adevărat nu mi le amintesc, am decis să mai fac câteva teste pe acesta. Așa că am primit un ID al numărului recent și am extrapolat o serie de câteva mii de ID-uri, care ar trebui să coincidă cu ultimele numere din baza de date. I-am jucat apoi pe toți.

În câteva minute, căsuța de e-mail a arătat astfel:

1612085470 567 Cum am piratat sistemul de urmarire a erorilor Google in

Primul meu gând la deschiderea căsuței de e-mail a fost „Jackpot!”.

Cu toate acestea, la o inspecție mai atentă, nu s-a întâmplat nimic deosebit de interesant în acele fire. Aparent, nu puteam să ascult decât conversații legate de traducere, unde oamenii ar dezbate cele mai bune modalități de a transmite sensul unei expresii în diferite limbi.

Chiar m-am gândit să nu raportez acest lucru timp de câteva ore, sperând că voi găsi o modalitate de a escalada severitatea. La final, mi-am dat seama că echipa de securitate Google ar fi probabil interesată să găsească posibile metode și variante de pivotare, așa că am trimis detaliile.

Admis: 5 ore | Recompensă: 5.000 USD | Prioritate: P0

Încercarea # 3: Jocul s-a încheiat

Când vizitați aplicația de urmărire a problemelor ca utilizator extern, cea mai mare parte a funcționalității sale este eliminată, lăsându-vă privilegii extrem de limitate. Dacă doriți să vedeți toate lucrurile interesante pe care le pot face angajații Google, puteți căuta puncte finale API în fișierele JavaScript. Unele dintre aceste funcții sunt dezactivate complet, altele sunt pur și simplu ascunse în interfață.

La proiectarea acestei versiuni limitate a sistemului, cineva a fost suficient de drăguț să lase într-o metodă pentru noi să ne eliminăm din lista CC, în cazul în care pierdem interesul pentru o problemă sau nu mai dorim să primim e-mailuri despre aceasta. Acest lucru ar putea fi realizat prin trimiterea unei cereri POST ca aceasta:

POST /action/issues/bulk_edit HTTP/1.1
{   "issueIds":[      67111111,      67111112   ],   "actions":[      {         "fieldName":"ccs",         "value":"test@example.com",         "actionType":"REMOVE"      }   ]}

Cu toate acestea, am observat câteva neglijări care au dus la o problemă uriașă:

  1. Controlul accesului necorespunzător: Nu a existat nici o verificare explicită a faptului că utilizatorul actual a avut efectiv acces la problemele specificate în issueIds înainte de a încerca să efectueze acțiunea dată.
  2. Eșec tăcut: Dacă ați furnizat o adresă de e-mail care nu se află în prezent în lista CC, punctul final va returna un mesaj care să ateste că e-mailul a fost eliminat cu succes.
  3. Detalii complete despre număr ca răspuns: Dacă nu au apărut erori în timpul acțiunii, o altă parte a sistemului a presupus că utilizatorul avea permisiunile corespunzătoare. Astfel, fiecare detaliu despre ID-ul problemei date va fi returnat în corpul de răspuns HTTP.

Acum am putut vedea detalii despre fiecare problemă din baza de date prin înlocuire issueIds în cererea de mai sus. Bingo!

Am încercat doar să văd câteva ID-uri consecutive, apoi m-am atacat dintr-un cont nelegat pentru a confirma gravitatea acestei probleme.

Da, aș putea vedea detalii despre rapoartele de vulnerabilitate, împreună cu orice altceva găzduit pe Buganizer.

Și mai rău, aș putea exfiltra date despre mai multe bilete într-o singură cerere, astfel încât monitorizarea întregii activități interne în timp real probabil nu ar fi declanșat niciun limitator de tarif.

Am trimis prompt detaliile despre exploatare la Google, iar echipa de securitate a dezactivat punctul final afectat o oră mai târziu. Timp de răspuns impresionant!

Admis: 1 oră | Recompensă: 7.500 USD | Prioritate: P0

Când am început să vânez această scurgere de informații, am presupus că va fi Sfântul Graal de bug-uri Google, deoarece dezvăluie informații despre orice alte bug-uri (de exemplu, HackerOne plătește un minim 10.000 USD pentru ceva similar).

Dar după ce l-am găsit, mi-am dat seama rapid că impactul va fi redus la minimum, deoarece oricum toate vulnerabilitățile periculoase se neutralizează în decurs de o oră.

Sunt foarte mulțumit de banii suplimentari și aștept cu nerăbdare să găsesc erori în alte produse Google.