Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

アカウントの有無によるレスポンス時間の差の調査結果 #6124

Open
ji-eunsoo opened this issue Mar 27, 2024 · 5 comments
Labels
Milestone

Comments

@ji-eunsoo
Copy link
Contributor

ji-eunsoo commented Mar 27, 2024

概要(Overview)

パスワード再発行画面において、アカウントが存在するかどうかによってレスポンス時間が変化するため、
レスポンス速度を確認することで、存在アカウントのチェックが可能です。

再現手順(Procedure)

・結果 (4.2.3で実施した、5回の平均値を記載)

Version 接続先 ユーザー登録あり(ms) ユーザー登録無し(ms)
4.2.3 gmail 3978 649
4.2.3 postfix 151 97

・結論

登録があるユーザーとないユーザーでは実際にResponse時間に明確に差が生じている。

環境(Environment)

EC-CUBE : 4.0.0 ~ 4.2.3
EC-CUBE : 3.x

@ji-eunsoo ji-eunsoo added the bug label Mar 27, 2024
@ji-eunsoo
Copy link
Contributor Author

以下、検討してみました。

A案:全体の処理時間を決め、レスポンスを同じ時間内に処理する(レスポンスの同時性確保)

  • パスワードリセット1件あたりの処理時間がかかる可能性があり、レスポンスの時間がかかるようになる
  • DoS攻撃の影響が出やすい可能性があるため、見送り

B案:登録なしのメールアドレスの場合、ダミーのメールアドレスに実際にメール送信を行う

  • 攻撃が来たことがわかるメリットがあるが、ダミーのメールアドレスのメールボックスが溢れる可能性もある
  • 特定のアカウントに存在しないメールを送ることは避けたいため、見送り

C案:メッセージキューを使用して非同期でメールを送信する

  • 共有レンタルサーバーでの稼動を想定しているため、メッセージキューの利用が難しい
  • 一部の共有レンタルサーバーでは、WebサーバーからPHPのCLI版のコマンドを呼び出せない場合があるため、見送り

@ji-eunsoo
Copy link
Contributor Author

4.2からは新規会員登録画面・パスワード再発行画面にスロットリングを実装しており、リスクを低減できている状態となります。

また、会員の登録有無が特定される問題は、新規会員登録画面においても同様の事象があります。
こちらは、他のサービスとも比較した結果、仕様として情報を公開しております。
#5279

ことから、本件は脆弱性としては扱わず、不具合として今後のバージョンで修正を実施できればと考えております。

是非、修正案についてご意見ください!

@ji-eunsoo ji-eunsoo added this to the 4.3.0 milestone Apr 1, 2024
@mipsparc
Copy link

mipsparc commented Apr 1, 2024

脆弱性報告したものです。

他の画面にもあり、仕様として公開されていて、さらに上記案も難しいようなら、何もできることはなさそうな気もしますね...

@mipsparc
Copy link

ちなみに、スロットリング(IPアドレスごとにレートリミット)は、大量のIPアドレスから試行する方法がありふれているので、なんらかのCAPTCHAを仕込むのがいいと思います

@ji-eunsoo
Copy link
Contributor Author

@mipsparc
ありがとうございます、おっしゃるとおりかと思います。
recapthaはプラグインとしていくつかリリースされており、そちらと合わせて対策されている方もいらっしゃいますね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants