ec-cube
ec-cube copied to clipboard
重要操作時の再認証機能
概要(Overview)
現状ではファイルのアップロードなどの操作時に再認証がない。 他のXSSなどの脆弱性を組み合わせることで、不正な機能をアップロードする攻撃手法が報告されている。
ファイルのアップロードなどの重要な操作に再認証の機能を追加できれば、 XSS で不正なスクリプトが実行されても、ファイルアップロード前で弾くことができる。
期待する内容(Expect) or 要望 (Requirement)
重要操作時に再認証を入れる。
- ファイルのアップロード
- テンプレートの編集
- プラグインのインストールなど
- メンバー管理
- 権限管理
- セキュリティ管理
重要操作の洗い出しは別途必要。
実現可能性
調査が必要
Symfony の remember me などでできるかもしれない。 https://symfony.com/doc/current/security/remember_me.html
難しい場合は独自で実装が必要。
対応できるバージョン
4.1 以降で検討。 マイナーバージョンで実現可能かは不明。
2021/6/17 セキュリティ対策検討会より
認証が一定時間有効な仕様が考えられる。 攻撃者が巧みに誘導すると回避されるリスクはある。
実現する方向で検討。
- RememberMe の流用は難しそう。RememberMe に似た機能を独自に実装する必要がありそう
- 以下仕様案
- 前提として、認証の有効期間を定めた cookie を使用する
- 認証が必要な機能を GET でリクエストした際に、 cookie の有無をチェック
- cookie が無い、または有効期限切れの場合は認証画面を表示
- 認証が必要な機能の操作完了後、cookie を削除する
GitHub の sudo mode の仕様が参考になる https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/sudo-mode
Symfony にも提案があがっている https://github.com/symfony/symfony/issues/33955
ユーザービリティの観点と実装難易度から、引き続き検討する。 特に、ファイルアップロード時の再認証は実装を進めたい。