В сентябре 2017 года, изучая пачку сервисов Google, я наткнулся на https://talkgadget.google.com/ , на котором удалось обнаружить интересную уязвимость — если вбить в форму поиска какое-нибудь слово, например — user, admin, etc, то в ответ вываливается список пользователей
При выполнении POST-запроса, меня заинтересовал один из передаваемых параметров pageSize, значение которого было равно 15, то есть на страницу вываливало 15 человек из поиска. Изменив значение на 100, в респонсе я получил 100 человек, далее 1000, и т.д, выкрутив значение на 1000000, в респонсе удалось получить порядка 8 Мб данных! «хммм» — подумал я… неужели всё так просто и банально?!
А сам респонс выглядит примерно так:
В котором содержится достаточное количество полей с более чем интересной и вкусной информацией — name, photo (link), email, nickname, organization, location, gender, phone, etс. Конечно же, эта информация является публичной и в пользовательском соглашении Гугла это отражается в полной мере, но я решил проверить сколько пользовательских данных мне удастся нарыбачить =)
Накидав небольшой скриптец, я запустил его на десять минут в один поток, и дёрнул порядка 863 Мб данных, хм интересно, как быстро сервер отдаёт, ему совсем не жалко пользовательских данных для одного IP и сессии xD
Слив 863 Мб данных, сразу же захотелось узнать сколько валидных эмейлов можно выдернуть с этого дампа
Грепнув регулярочкой, увидел порядка ~117k валидных эмейлов, для меня сразу открылся вектор, и в голове возникла куча вопросов — а что если в несколько потоков? а что если не 10 минут, а сутки? сколько можно слить? почему не превентят слив данных? почему в гугле всё так по мудакски? и т.д. и т.п.
Решено было накатать отчёт в Google VRP ибо я классифицировал это как узвимость «Information leak».
Пишу отчёт
Здесь я уберу скриншоты добаленные ранее, чтобы не дублировать их. Собственно текст отчёта:
Hi Google!
I’be discovered a vulnerability that allows to get huge amount of users’ data. And it can be automated.
Steps for reproducing the vulnerability:
Checking Google Hangouts website: https://talkgadget.google.com/ I discovered, that during the user search 15 user profiles were downloaded by “autocomplete” box.
The request looks like this:
POST /v2/people/autocomplete HTTP/1.1
Host: people-pa.clients6.google.com
———- Other necessary headers ———-
query=user&client=HANGOUTS&pageSize=15
If we change the pageSize parameter with a bigger one, we will get much more data. I tried to change it from 1 to 1000000 with a successful outcome.
Then we could substitute “user” value from query parameter, and we will get different results, containing personal data like Google (Hangouts) — name, photo (link), email, nickname, organization, location.
I wrote a script for PoC demonstration (autocomplete.sh can be found on GDrive), where pageSize=1000000, and the query parameter is getting from the dictionary file: wordlist.txt (~1000 lines, can be found on GDrive as well).
As an outcome of running autocomplete.sh — leaked at least 863 Mb of users’ data (in ~10 minutes), and among the data ~117K are e-mails with user’s data.
And what if I leave the script running for an hour.. or a day..? I believe I’ll get a plethora of users’ data.. (10 min = ~1Gb, 2 hour = ~100 Gb, etc..)
As a next step, the attacker, using another vulnerability (or a feature, if you want..), could extract from the leaked.json users’ e-mails and build a dictionary with just grabbed e-mails (gmail_list.txt). Then, using lookup.sh, and the dictionary data as a value of the id parameter, we could get some more useful data in addition (e.g: gender, phone number, address, legacyFields, etc.). See: lookup.json (~150 MB — it is only a small part of the data leaked as a proof).
And who could be interested in such kind of info?
Spammers — for target e-mailings, because of the real users data (name, photo (link), email, nickname, organization, location, gender, phone, etc). Moreover, the leakage could hit Google’s reputation and so on and so forth.
Отчёт отправлен и принят на рассмотрение.
Дальнейший диалог с Google
- Стандартный ответ от Security-команды на любую багу:
Hey,
Just letting you know that your report was triaged and we’re currently looking into it. You should receive a response in a couple of days, but it might take up to a week if we’re particularly busy.
Thanks,
Google Security Team
- Неделю спустя:
Hey — we looked at your report. While it’s not what we usually accept for the Google VRP, we nevertheless decided to route it internally to a team that deals with similar issues. They will take a look and you’ll be hearing back from them. As such cases are usually more complex to investigate, they might take a bit longer than usual to respond. Thanks for understanding.
Rgds
Google Security Team
- Как и следовало ожидать — Гугл предложил мне отвалить со своей багой сославшись на то, что стянутая информация является публичной, об этом написано в пользовательском соглашении и т.д.
Hey,
Thanks for your bug report and research to keep our users secure! We’ve investigated your submission and made the decision not to track it as a security bug.
Your method to extract users only includes users that have opted-in to be discoverable across our products via their name, email, etc…
If you look at https://aboutme.google.com, you can see and control what information is also discoverable across our products.
This report will unfortunately not be accepted for our VRP. Only first reports of technical security vulnerabilities that substantially affect the confidentiality or integrity of our users’ data are in scope, and we feel the issue you mentioned does not meet that bar 😦
Bummer, we know. Nevertheless, we’re looking forward to your next report! To maximize the chances of it being accepted, check out Bughunter University and learn some secrets of Google VRP.
Cheers,
Hi!
Do you really believe that it is not a vulnerability?) At the moment an attacker can get tons of real users’ data at once (even if it is a public data). I’m sure, that it is not a good idea to let anyone to get such kind of data in that kind of volumes. E.g. I got up to ~150 Gb of users’ data in ~24 hours.
- На что Гугл ответил:
- Через пару дней ещё один ответ, где они наконец-таки осознали суть проблемы))
Hi Alexander,
Nice catch! I’ve filed a bug based on your report. The panel will evaluate it at the next VRP panel meeting and we’ll update you once we’ve got more information. All you need to do now is wait. If you don’t hear back from us in 2-3 weeks or have additional information about the vulnerability, let us know!
Regards,
Marc, Google Trust & Safety