Публікуючи приватний контент в інтернеті потрібно бути готовим, що він може стати публічним. Яскраве тому підтвердження – знайдена діра у YouTube, що дозволяла красти приватні відео. Хоча, швидше за все, розробники з Google просто не могли подумати, що хтось вигадає такий незвичний спосіб крадіжки подібних відео. Адже відео викрадали кадр за кадром через зображення попереднього перегляду за допомогою рекламних оголошень Google.
При завантаженні відео на YouTube користувачі можуть вибрати одну з трьох опцій приватності. Публічна – будь-хто може знайти та переглянути відео. Поза списком – відео доступне лише тим, хто має пряме посилання на нього. Приватна – відео можуть переглянути лише ті акаунти, яким власник відео це дозволив.
Зацікавлений у перегляді експерт спершу завантажив відео на свій канал YouTube в приватному режимі, щоб протестувати можливість стороннього доступу до нього. Він пробував усі знайомі йому способи, з різних браузерів, підробляючи запити HTTP з ідентифікатором відео тощо. Однак YouTube залишався непробивним і не показував відео, сповіщаючи, що воно захищене налаштуваннями приватності.
Коли не вдається вирішити проблему «в лоб» буває часто озирнутися навколо. Експерт так і зробив, почавши аналізувати сервіси та продукти Google, які не були основною ціллю, але якимось чином взаємодіяли з YouTube. У них міг виявитися не такий стійкий захист, як у YouTube і при цьому вони могли мати доступ до приватного контенту.
Слабкою ланкою виявилася власна рекламна система Google Ads. Вона дозволяє вбудовувати рекламу в відео YouTube. Рекламодавці ж могли бачити список відео, в яких демонструвалися їхні оголошення.
Клацнувши на відео з такого списку можна було перейти в розділ аналітики, який мав опцію «Моменти». Вона дозволяє рекламодавцям обирати точний момент початку демонстрації реклами. При цьому аналітика виводила кадр із відео для попереднього перегляду.
Маніпулюючи часовою міткою в «Моментах» можна було отримати кадр із відео. При цьому аналітика не перевіряла чи поточне відео приватне і виводила кадр для будь-якого ролику за його ідентифікатором.
Підставивши ідентифікатор приватного ролику та вказавши потрібний момент можна було отримати кадр із приватного відео YouTube. Залишалося лише автоматизувати процес, створивши скрипт, який збільшує часову мітку на 33 мілісекунди (частота кадрів 24 fps), зберігає отриманий кадр та «зшиває» їх у одне відео.
У запропонованого методу є один недолік – відео не має звуку. Однак відеоряд доступний в повному обсязі, хоча й в невисокій роздільній здатності.
Баг був знайдений ще в 2019 році і експерт сповістив Google про нього і запитав як виявилося можливим існування такої діри. Пошуковий гігант не надав відповіді, але прийняв баг в роботу та в січні 2021 року повідомив про його закриття. Google спершу просто відключив опцію «Моменти», доопрацювавши її, щоб вона перевіряла права доступу до відео.
За старання експерт отримав $5000, а за кілька днів – опублікував цю історію.
За матеріалами: bugs.xdavidhu.me