S3 presigned アップロードURLが key を無検証で受理

優先度: 中 セキュリティ / ハードニング

概要

共通サーバーアクション apps/user/actions/s3/get-upload-url.ts は、 認証チェック(action() ラッパー)は行うが、クライアントから渡される key一切検証せず、そのまま presigned PUT URL を発行している。 このため認証済みユーザーであれば、バケット内の任意のオブジェクトキーに対する書き込み用URLを取得でき、 他組織・他ユーザーの画像を含む任意オブジェクトを上書きし得る。

対象

補足:keyMD5(画像データ) によるコンテンツアドレスのため衝突は基本的に「同一内容=同一キー」で実害は出にくいが、 任意キーを指定できること自体が問題(接頭辞外への書き込み・上書きが原理上可能)。

先送りとした理由

想定する対応

優先度

。即時の実害は限定的だが、認証済みユーザーによる任意キー書き込みを許す設計であり、 アップロード経路を増やす前にサーバー側のキー管理・検証へ寄せておきたい。

関連