fujiokayu / S4

simple serverless secure storage
MIT License
1 stars 0 forks source link

email が未認証の状態(half-open)でクライアントサイドの制御をバイパスすることが可能 #20

Closed fujiokayu closed 3 years ago

fujiokayu commented 3 years ago

email で登録できるが、email の真正性検証をしていないのでメール送信 + 確認のフローが必要

fujiokayu commented 3 years ago

79f95fcf09e414bf5cba5519e0ca3feb3c6dccab で実装し、https://github.com/fujiokayu/lobster/issues/6 の見解と同じく close する

fujiokayu commented 3 years ago

クライアントサイドの制御だから改変することで half open attack が成立するはず。 ただし攻撃するには予め招待済みの e-mail アドレスを知っている必要があり、真正なユーザーがサインアップすると成立しなくなるため、攻撃として成立する可能性は非常に低い。

対策するとすれば、upload API で firebase.auth().currentUser.emailVerified() を検証することで、サインインできたとしても無害化することができる。 Firebase を利用している場合に起こり得る問題だと思うので、本質的には Firebase auth や各種 Security Rules が対応しておくべき問題にも思える。

fujiokayu commented 3 years ago

Security Rules で auth.token.email_verified を検証すればこれも対策が可能