10 poin oleh GN⁺ 4 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Studi kasus peneliti keamanan yang menyuruh AI untuk secara otomatis terus-menerus menusuk API Google, lalu meraih hadiah bug bounty sebesar 500 ribu dolar dalam 3 bulan
  • Dengan menggabungkan API key yang dikumpulkan dari lebih dari 60.000 aplikasi Android dan spesifikasi API Google (discovery document), ia mengamankan lebih dari 1.500 API sebagai target pengujian, termasuk yang tidak banyak diketahui publik
  • AI berbasis Claude dihubungkan ke alat pengujian API agar dapat mengirim permintaan seperti manusia dan secara otomatis menemukan kerentanan kontrol akses yang tidak memiliki pemeriksaan izin
  • Ditemukan banyak kerentanan serius seperti pembajakan akun Google Voice, kebocoran video privat YouTube, paparan kunci Widevine DRM, dan pelacakan identitas pemilik perangkat Nest
  • Sebagian besar bukan berasal dari serangan canggih, melainkan dari kesalahan dasar yang berulang seperti pemeriksaan izin yang hilang, API tanpa autentikasi, dan lingkungan pengujian yang mengekspos data nyata apa adanya

Titik awal riset

  • Pada Oktober 2025, setelah undangan ke bugSWAT Mexico, fokus riset terhadap Google kembali diperdalam; fakta bahwa sebagian kode sumber Google bisa dilihat menjadi pemicu ketertarikan
  • Selama setahun terakhir, sambil membuat proyek-proyek kecil dengan Claude, ia menilai bahwa AI sangat berpotensi dipakai untuk menguji API Google secara otomatis dalam skala besar
  • Titik masuk utamanya adalah discovery document — dokumen ala Swagger versi Google yang mendeskripsikan semua endpoint, parameter, dan metode agar dapat dibaca mesin
    • Sebagian bersifat publik seperti YouTube Data API, tetapi ada juga untuk API internal seperti Internal People API
    • Sebagian bisa diakses begitu saja, tetapi kebanyakan memerlukan API key yang valid

Mengumpulkan API key

  • Kunci yang ditemukan di satu layanan sering kali juga aktif di banyak API lain dalam proyek GCP yang sama, sehingga makin banyak kunci yang terkumpul, makin luas pula cakupan API yang bisa diakses
  • Pengumpulan kunci dilakukan bersama temannya, Michael
    • Mengunduh dan mengekstrak 61.200 APK Android yang mencakup semua versi dari semua aplikasi Google, lalu mencari API key di dalamnya
    • Menggunakan ekstensi berbasis Chrome Debugger API untuk menyadap trafik, lalu mengunjungi sekitar 2.800 domain web Google yang sudah diketahui guna mengumpulkan key dari request secara real-time
    • Juga menganalisis aplikasi Google di iOS (IPA) yang telah didekripsi serta binary Google lain yang bisa diperoleh
  • Menyaring hanya key milik Google

    • Untuk tetap berada dalam cakupan VRP, Cloud Marketplace API dipakai untuk melihat informasi proyek yang terhubung ke key dan membuang key non-Google
    • Jika key dipakai pada API yang tidak mengizinkan akses, error yang dikembalikan akan mengekspos nomor proyek (contoh: ...in project 244648151629...)
    • Dengan nomor ini, field company memberi tahu domain pemilik proyek, sehingga semua key di luar google.com (serta perusahaan akuisisi seperti nest.com, fitbit.com, wing.com) dibuang

Menemukan domain API Google yang masih aktif

  • Kandidat domain dikumpulkan dari domain yang direkam ekstensi, pembuatan brute-force berbasis kata kunci, dan certificate transparency log
  • Setiap domain lalu diuji; bila header Server bernilai ESF, GSE, atau scaffolding on HTTPServer2, domain itu dianggap sebagai API Google aktif yang valid

Mengikis sampai spesifikasi tersembunyi

  • Pada Juli 2025, Google menghapus jalur /$discovery/rest dari sebagian besar API, tetapi beberapa masih bisa dilewati dengan trik tertentu
  • Endpoint tersembunyi lewat Visibility Label

    • Proyek tertentu mengaktifkan visibility label, sehingga endpoint tersembunyi hanya bisa diakses bila parameter labels diberikan
    • Jika spesifikasi Service Management API diminta tanpa label ukurannya 253KB, tetapi dengan ?labels=GOOGLE_INTERNAL naik menjadi 329KB dan mengekspos banyak dokumen tersembunyi
    • Karena label hanya bisa diterima satu per satu, diperlukan volume request yang sangat besar untuk menguji semua kombinasi label, key, dan API
  • Dengan cara ini, didapatkan spesifikasi lebih dari 1.500 API, lalu digabungkan dengan dokumen dari riset sebelumnya untuk menyiapkan pengujian otomatis berbasis AI

Menyelesaikan masalah autentikasi

  • API key menyelesaikan soal “izin”, tetapi banyak endpoint juga membutuhkan autentikasi terpisah untuk memastikan siapa pemanggilnya
  • Bearer token terikat ke proyek GCP, sehingga jika dicampur dengan API key akan muncul error “proyek berbeda”, dan tidak ada bypass yang diketahui
  • First Party Authentication (FPA)

    • Banyak API mendukung skema autentikasi khas Google bernama FPA, yang bisa bekerja bersama API key
    • Request web menyertakan Cookie sesi dan nilai Authorization yang dihitung darinya, lalu dikirim ke host *.clients6.google.com
    • Beberapa API seperti drivefrontend-pa memerlukan header FPA v2 yang lebih lengkap, yang memasukkan pengenal pengguna seperti email ke dalam hash
    • Michael menemukan sourcemap yang sempat bocor secara tidak sengaja dari Google, sehingga kode pembuat header FPA v2 dari library internal gapix bisa didapat
  • Struktur token dan Gaia ID

    • Format token adalah <timestamp>_<hash>_<kunci_pengenal>, dan input SHA1-nya adalah email:gaiaId timestamp sessionCookie origin
    • Kunci pengenal hanya tiga: e (email), u (Gaia ID yang diobfuscate), dan a (domain Workspace); huruf lain diabaikan backend
    • Gaia adalah singkatan dari “Google Accounts and ID Administration”, dan setiap akun punya Gaia ID berurutan tanpa obfuscation (misalnya 131337133377) serta ID obfuscate yang lebih panjang
  • Whitelist Origin dan pembatasan key

    • Banyak API memiliki daftar Origin yang diizinkan; jika memakai origin yang tidak diizinkan, error yang muncul adalah SESSION_COOKIE_INVALID, seolah-olah masalahnya ada di cookie
    • Key memiliki empat jenis pembatasan: Server, Browser, Android, iOS. Browser memerlukan Referer, iOS memerlukan X-Ios-Bundle-Identifier, dan Android memerlukan X-Android-Package serta fingerprint sertifikat yang cocok
    • Saat mengumpulkan key, nilai-nilai ini juga disimpan agar brute-force bisa diintegrasikan ke program yang sama
    • Origin *.corp.google.com tidak memiliki pembatasan; API seperti ini kemungkinan adalah API internal yang tidak dimaksudkan untuk publik dan biasanya penuh bug — salah satunya menghasilkan hadiah $9.000 karena kerentanan kontrol akses

Memetakan alur request dan membuat alat uji sendiri

  • Dibuat program untuk mengklasifikasikan pada tahap mana request ditolak — mulai dari interpretasi metode, validitas key, pembatasan key, autentikasi, pemeriksaan origin, label, dan sebagainya — sehingga terbentuk peta pasangan key dan API mana yang saling cocok
  • API Explorer milik Google hanya mendukung API publik dan tidak tersedia untuk API privat, sehingga dibuat API Explorer sendiri dalam sekitar seminggu, termasuk dukungan hingga FPA v2
    • Spesifikasi diparse di sisi klien untuk otomatis membentuk JSON request/response yang valid, serta menyediakan UI untuk cepat menguji payload sembarang
    • Endpoint yang dipakai dalam demo menghasilkan hadiah $6.000 karena bug kontrol akses yang membocorkan assignedTams (technical account managers)

Menyusun pengujian otomatis dengan AI

  • Tujuannya adalah membuat AI secara otomatis menemukan isu kontrol akses dasar, lalu manusia dapat mengembangkannya menjadi kerentanan yang lebih serius
  • Kode parsing JSON di frontend dihubungkan ke AI sebagai alat MCP, sehingga AI bisa menguji API seperti manusia
  • Lebih teliti, lebih senyap

    • Awalnya AI hanya menusuk beberapa kali lalu cepat selesai, sehingga ditambahkan Ralph Wiggum loop agar proses hanya bisa berakhir setelah setiap endpoint diuji minimal sekali
    • Endpoint terlebih dahulu dikelompokkan secara logis, lalu diuji per grup, dan temuan dari grup awal dibagikan ke grup berikutnya
    • Input probe_api disederhanakan agar fokus pada endpoint, path, dan body, sementara autentikasi FPA yang kompleks ditangani backend sehingga AI bisa fokus pada penulisan payload
    • Karena respons bisa berbeda untuk tiap key, request yang sama otomatis dikirim dengan semua key, lalu respons identik dikelompokkan berdasarkan hash
    • Error membingungkan seperti “Method not found” diterjemahkan menjadi MISSING_REQUIRED_VISIBILITY_LABEL dan sejenisnya agar AI tidak bingung
  • Mengatasi noise dan masalah verifikasi

    • Di awal, bug asli tenggelam di bawah 90% noise; dua masalah utama adalah sulit diverifikasi dan terlalu banyak false positive
    • Laporan diberi operation ID yang menunjuk ke request nyata, sehingga bisa direproduksi dari frontend dengan tombol “Play” dan menghasilkan bukti yang tidak bisa dimanipulasi
    • Selama lebih dari sebulan, system prompt terus disempurnakan agar kriteria pelaporan jelas — hanya menerima akses ke data pengguna lain atau respons 2xx pada kondisi yang seharusnya 4xx, sementara enumerasi keberadaan semata tidak dihitung sebagai kerentanan
    • Setelah itu, AI mulai menemukan bug dalam jumlah besar dengan akurasi lebih dari 50%, dan satu-satunya batas nyata adalah jumlah API key yang dimiliki

Kerentanan utama yang ditemukan

  • Dalam waktu kurang dari 3 bulan, ditemukan bug senilai $500.000; berikut contoh utama yang sudah diperbaiki
  • Pembajakan akun Google Voice

    • gfibervoice-pa sama sekali tidak memiliki kontrol akses, sehingga dengan satu baris curl tanpa autentikasi, seluruh PII korban seperti nomor telepon dan alamat notifikasi bisa di-dump selama mengetahui unobfuscated Gaia ID korban
    • Respons bahkan dapat menampilkan nomor telepon pemulihan akun Google milik korban (hanya dalam kondisi tertentu; syarat pastinya tidak diungkap Google)
    • Ada juga endpoint yang bisa memaksa penetapan nomor Voice ke akun arbitrer (meski muncul error 500, nomor tetap benar-benar ditambahkan), dan endpoint dengan potensi SIM swap juga ditemukan
    • Diklasifikasikan P0/S0, ditambal dalam hitungan jam, dan menghasilkan hadiah $20.000
    • Tepat setelah patch, ditemukan paparan zhandler khusus intranet seperti /btz; bila mencapai /flagz, API key dapat diekstrak dari layanan yang berjalan
  • Pengambilalihan akun AdExchange

    • Ditemukan endpoint yang dengan satu request bisa me-dump seluruh daftar akun AdExchange
    • Endpoint akun yang diblokir di produksi ternyata berjalan tanpa kontrol akses di lingkungan staging, dan staging tersebut menunjuk ke data produksi nyata
    • Peneliti juga bisa menambahkan dirinya sebagai ADMIN ke akun arbitrer; total dua laporan ini menghasilkan $30.000
  • eldar.corp.google.com

    • API dari Eldar, situs internal khusus Googler untuk pengelolaan penilaian privasi, terekspos ke luar sehingga non-Googler bisa melihat informasi sensitif seperti permintaan akses log internal
    • Setelah diblokir, masih diberi tahu bahwa layanan itu dapat dicapai lewat alamat sandbox lain; total hadiah $26.674
  • Kebocoran video privat YouTube

    • Nama asset yang dibuat saat unggah video berbentuk Auto generated asset - <video_id>, sehingga cukup dengan pencarian, ID video privat bocor dan videonya bisa ditonton
    • Dengan request tiap 30 detik, bisa diperoleh feed real-time video privat unggahan partner — ancaman nyata yang dapat disalahgunakan untuk taruhan orang dalam di pasar prediksi, memanfaatkan fakta bahwa perusahaan sering mengunggah video pengumuman produk lebih dulu secara privat
    • Menghasilkan hadiah $12.000 (kualitas laporan sangat baik)
  • Paparan kunci Widevine DRM

    • API portal partner untuk Widevine, DRM berskala sangat besar yang dipakai Disney, Netflix, dan lainnya, bisa diakses publik
    • Seluruh daftar organisasi bisa di-dump, kunci PGP dan AES milik organisasi tertentu dapat dilihat dan didekripsi, dan peneliti bahkan bisa menambahkan dirinya ke organisasi arbitrer untuk mengelola perangkat
    • Menghasilkan hadiah $16.004,40 (kualitas laporan sangat baik)
  • plx.corp.google.com

    • API DataHub yang menjadi dasar platform analitik internal karyawan PLX terekspos, sehingga metadata tabel informasi karyawan aktif bisa dilihat
    • Di API staging, setIamPolicy memungkinkan menambahkan diri sendiri sebagai admin dataset, sehingga data YouTube rahasia bisa di-dump, termasuk tabel hingga 2,1PB
    • Diakui sebagai P0/S0 dalam 1 jam; dua kerentanan ini masing-masing menghasilkan $12.000

Kerentanan lintas tenant di Translation Hub

  • Ditemukan banyak isu kontrol akses pada Translation Hub, produk pengelolaan terjemahan dokumen skala besar
  • ListOperations bekerja tanpa OAuth token, sehingga membocorkan nama service account internal, nama bucket GCS, dan nama tabel internal
  • Dengan bearer token dari akun Google mana pun, data proyek lain bisa dibaca, termasuk email penerjemah dan nama file rahasia pekerjaan
  • Dengan UpdateProjectConfig, jika konfigurasi korban diubah ke jalur GCS arbitrer, maka hak akses service account bersama bisa disalahgunakan untuk menarik objek GCS privat dalam bentuk base64
  • Total tiga bug ini menghasilkan $36.500

YouTube TV CMS

  • Pada API untuk akun YouTube CMS yang dapat melakukan strike, claim, atau monetisasi video arbitrer, endpoint campaign sama sekali tidak memeriksa hubungan pemanggil
  • GET /v1/campaigns melakukan dump global semua campaign dalam sistem tanpa scoping, dan campaign bisa diubah, disalin, atau dihapus hanya dengan ID
  • Sebagai efek samping, email akun CMS sensitif ikut bocor; hadiah $24.000 (kualitas laporan sangat baik)

Vertex AI Search for Commerce

  • conversationalSearchCustomizationConfig dari produk pencarian dan rekomendasi ritel memungkinkan pembacaan dan perubahan konfigurasi proyek arbitrer tanpa kontrol akses
  • Saat dibaca, system prompt pelanggan (model preamble) serta contoh klasifikasi dengan memo kebijakan internal ikut terekspos
  • Saat ditulis, system prompt AI pencarian yang berhadapan langsung dengan pelanggan dapat disisipi payload prompt injection, menghasilkan hadiah $30.000

Cloud Console GraphQL

  • Layanan internal yang tidak dipublikasikan ke internet pun masih bisa dijangkau secara tidak langsung lewat permukaan proxy, dan Cloud Console (nama kode Pantheon) mem-proxy backend gRPC lewat GraphQL
  • Bypass verifikasi tanda tangan

    • Setiap request memverifikasi tanda tangan query (querySignature) agar sulit dimanipulasi, tetapi ditemukan bahwa query tanpa autentikasi di staging tidak memverifikasi tanda tangan
    • Lewat introspection, 3.448 skema berhasil dikikis dan diarsipkan ke GitHub, lalu konsep “query path” diperkenalkan untuk mengintegrasikan GraphQL ke infrastruktur fuzzing AI yang sudah ada
  • Log request App Engine

    • GetDashboardAppStats mengembalikan log App Engine 24 jam milik proyek arbitrer tanpa verifikasi IAM, bahkan tanpa perlu autentikasi
    • Karena URL request dapat memuat tautan reset password atau token, temuan ini menghasilkan $18.000 dan diberi CVE-2026-8934
  • Vertex Assistant

    • Dengan menganalisis 5GB frontend JS, ditemukan fitur eksperimen tersembunyi Vertex Assistant, lalu feature flag-nya dipaksa aktif lewat DevTools
    • Semua query terkait bekerja tanpa autentikasi hanya dengan userId, sehingga cukup mengetahui email target untuk melihat dan mengubah daftar sesi serta seluruh riwayat percakapan, menghasilkan $30.000
  • Kredit billing Maps Platform

    • ListBillingAccountCredits bekerja tanpa pemeriksaan izin, dan dengan wildcard dapat mengembalikan informasi kredit milik banyak pelanggan
    • PII pelanggan yang ditulis pegawai Google saat memberi persetujuan terekspos mentah di field justification, menghasilkan hadiah $12.000

Penutup dan pelajaran

  • Dalam 3 bulan, setelan ini menghasilkan bounty lebih dari $500.000, dan yang dipublikasikan hanyalah sebagian kecil
  • Sebagian besar bug Google bukan soal eksploit yang canggih, melainkan ketekunan; pola rusak yang sama berulang di mana-mana — cek IAM yang hilang, GraphQL tanpa autentikasi, endpoint debug di produksi, sandbox yang menunjuk ke data nyata
  • Peran AI di sini bukan pada kebaruan, melainkan pada kemampuannya untuk tanpa lelah memverifikasi hal-hal yang jelas secara berulang di permukaan yang terlalu luas untuk ditangani manusia sampai tuntas
  • Inti pembelajarannya
    • Sistem reproduksi berbasis operation_id adalah faktor penentu yang membuat alur kerja produktif — tanpa verifikasi satu klik, output AI hanyalah noise tak berguna
    • Jika discovery doc, GraphQL SDL, dan proto berhasil diperoleh, AI dapat memahami input yang bermakna untuk diuji
    • Permukaan server-side Google sangat terstandarisasi, sehingga bila kekhususan infrastrukturnya diabstraksikan dari AI, fokus bisa lebih diarahkan ke pengujian API yang sesungguhnya

1 komentar

 
j2sus91 8 menit lalu

Ini benar-benar konsep pendapatan baru dari vibe coding.