Недавно я нашел странную особенность в Google Drive. Определенная последовательность действий в Google Drive веб интерфейсе приводит к тому, что каждый может загрузить файлы любого объема в свою учетную запись и при этом не потратить ни одного байта на их хранение.
Конечно, я сразу решил сообщить об этом в Google через программу bughunter.withgoogle.com. Но, к моему сожалению, потратив неделю на общение со специалистами Google мне так и не удалось убедить их, что это баг. Сотрудник не смог воспроизвести этот баг и я получил ответ, что «это не баг, а фича» и меня отправили в RTFM. В конце концов Google просто закрыл тикет и перестал отвечать на мои письма.
Так как переписка с Google зашла в тупик, я решил публично рассказать о этой «фиче» и, возможно, наконец привлечь внимание сотрудников Google к этой проблеме или хотя-бы понять, что я делаю не так. Ниже под катом история переписки с Google и proof of concept.
Вот отчет, который я отправил в Google.
Summary: Service abuse: Free unlimited file storage, space counting error
Steps to reproduce:
1. Create a new google drive account
2. File «Getting started» appeared
3. Right click on the file, click on «Manage Versions»
4. Upload any amount of files as a new version of «Getting started», no space counting, even with «keep forever» checked for that file.Browser/OS: Any
Attack scenario:
Any regular user can do that with google drive user interface or experienced user via google drive api. A user can upload unlimited amount of files without any payments and store files forever for free.
Как ясно из текста, чтобы воспроизвести проблему, необходимо создать новую учетную запись. После чего перейти в google drive и найти файл «Getting started», который создается автоматически в каждом новом аккаунте.
Первое, что мне сразу бросилось в глаза, что размер этого файла 1MB, но занимает он 0 байт.
Это было странно, так как PDF это не нативный формат хранения Google Drive и должен использовать общий лимит. Было понятно, что сервис каким-то образом исключает этот файл из списка на подсчет места. Простое копирование файла приводило к тому, что файл начинал весить реальный мегабайт.
Однако, как оказалось, если вместо копирования файла просто загружать новую версию, то эта новая версия всеравно будет занимать 0 байт.
Перед тем как опубликовать эту статью, я повторил эксперимент с новой учетной записью и без всяких проблем успешно загрузил 17GB в аккаунт с лимитом 15GB.
В Google Drive можно выбрать опцию «сохранять все версии», я проверил, если ее выбрать, то все версии файла сохраняются и не тратят лимит места.
Таким образом, путем нехитрых ухищрений можно хранить сколько угодно файлов любого размера в Google Drive.
К сожалению, сотрудник Google не смог воспроизвести эту проблему и попросил меня сделать видео:
Hey,
We're closing this bug, as you didn't provide enough details for us to determine what the security issue you're reporting. Feel free to update this report with additional details.
We tried to replicate it and wasn't able to, if you think you were able to feel free to share a proof of concept in a video.
If you didn't provide this yet, please include the reproduction steps (https://sites.google.com/site/bughunteruniversity/improve/help-us-reproduce-the-bug), an attack scenario (https://sites.google.com/site/bughunteruniversity/improve/writing-the-perfect-attack-scenario) and a short explanation why do you believe this is a technical security vulnerability.
Thanks!
Google Trust & Safety
Я сделал видео со своего тестового аккаунта в моем домене Google Apps с лимитом 15GB.
И через некоторое время получил вот такой ответ:
Hello,
Thanks for the POC, we noticed in the video you shared it is associated with Gsuite account visible on the right top of the video screen.
For more information on G suite storage limit please visit. support.google.com/a/answer/172541?hl=enYour report is now *closed*
Thanks!
Google Trust & Safety
Дальнейшие мои попытки связаться с Google не увенчались успехом, я попробовал написать еще один комментарий, приложил еще раз видео с POC с обычного акаунта, но в ответ только тишина.
В заключение, хочу сказать, что я достаточно много участвовал в Yandex BugBounty и всегда получал отличную обратную связь по всем моим отправленным отчетам. К сожалению, в Google, на мой взляд, очень странно относятся к таким сообщениям. Скорее всего, это моя первая и последняя попытка отправить информацию о баге в приложениях Google при такой обратной связи.
P.S. Ссылка на report, если на хабре вдруг присутствуют сотрудники Google issuetracker.google.com/issues/149622702, возможно они смогут прояснить, что я сделал не так.
Автор: aig