HeadlinesBriefing HeadlinesBriefing.com

Googleで見つけた9万ドルのRCE脆弱性

Hacker News •
×

セキュリティ研究者が、Googleの開発者向けドキュメントサイトにおけるリモートコード実行の脆弱性を発見しました。これらのサイトで共有されているOAuthフローを調べていたところ、研究者は /oauth2authorize エンドポイントが、CSRFトークンやリターンURLに必要な量をはるかに超える、約1,200バイトという異常に大きなFlaskセッションCookieを設定していることに気づきました。FlaskのセッションCookieは署名されていますが暗号化されていないため、Cookieを持つ者なら誰でも中身を読むことができました。

Cookieをデコードすると、GoogleのOAuth client_idとclient_secretが平文で含まれた、pickleでシリアル化されたオブジェクトが見つかりました。さらに研究者は、client secretがFlaskのSECRET_KEYとしても使われていたことを発見しました。つまり同じ値が署名の生成と検証の両方を担っていたのです。署名鍵がCookie自体の中で露出していたため、研究者はオフラインで有効な署名を再計算し、任意のセッションデータを偽造できました。

コールバックエンドポイントはセッションからOAuthフローのデータを読み取り、それを pickle.loads に渡します。偽造したセッションがあれば、攻撃者は悪意のあるpickleペイロードを供給でき、これは認証不要のリモートコード実行経路となりえました。研究者は、time.sleepを呼び出すだけのペイロードを用いて安全に問題を検証し、Googleの本番システム上でコマンドを実行することは避けました。

この発見は、クライアント側のセッションデータに秘密情報を保存することと、信頼できないpickleデータを逆シリアル化することが組み合わさると、重大な脆弱性に発展しうることを示しています。このバグには9万ドルの報奨金が支払われました。

出典: Hacker News · 要約:HeadlinesBriefing