Hacker News Digest

12 октября 2026 г. в 07:28 • simonkoeck.com • ⭐ 238 • 💬 120

Original • HN

#android#firebase#flask#google#itsdangerous#oauth2#pickle#python#rce#vulnerability

I Found a $90k Remote Code Execution Vulnerability in Google

Исследователь безопасности обнаружил критическую уязвимость удалённого выполнения кода на сайтах документации Google для разработчиков. Всё началось с анализа OAuth-потока: при обращении к /oauth2authorize сервер устанавливал сессионную cookie Flask размером около 1200 байт. Поскольку cookie подписываются, но не шифруются, содержимое оказалось доступно для чтения. Внутри лежал сериализованный через pickle объект OAuth2WebServerFlow, содержавший в открытом виде client_id и client_secret OAuth-приложения Google.

Ключевая находка: этот же client_secret использовался как SECRET_KEY для подписи сессий Flask. Исследователь воспроизвёл подпись офлайн через itsdangerous с производным ключом cookie-session — результат совпал байт в байт. Это означало полную потерю целостности сессии: можно было подделать любые значения и получить валидную подпись. Поскольку callback распаковывал объект потока через pickle.loads, атакующий мог подсунуть произвольный pickle с опасным опкодом REDUCE, что давало неаутентифицированное RCE.

Для доказательства без вреда продакшену использовался payload с time.sleep(N) — задержка ответа точно соответствовала заданному числу секунд. Уязвимость затронула несколько хостов DevSite, включая firebase.google.com, developer.android.com и source.android.com. Google выпустил хотфикс в течение суток, а выплата составила $90 000: базовые $75 000 за RCE уровня S0 с коэффициентом 1.2 за качество отчёта. Рекомендации включают ротацию секретов, отдельный SECRET_KEY для каждой инсталляции, хранение OAuth-объекта на сервере и отказ от pickle на границе с клиентом.