概要
- Zoomにおいてパスワード認証に関連する脆弱性を見つけました。
- 特徴はリモートから、Zoomのサービスを利用しているユーザに対して、秘匿性に影響する内容です。
- 自己診断したCVSSスコアは6.5です。
- CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L/E:H/RL:O/RC:R
背景
前提となる知識を説明します。
- Zoomにおいてミーティングの部屋を作成すると、新しい部屋のIDとパスワードが生成されます。
- また、その部屋のIDとパスワードの情報が含まれたURLも生成されます。
- このURLにアクセスすることによってZoomのミーティング部屋にアクセス可能になります。(以下に例。過去の時間に有効だったURLです)
https://zoom.us/j/98459262939?pwd=K1J6VjdFd2NpTWpaenJ6WE0zWml0QT09
98459262939
の部分は部屋のIDです。おそらく連番で発行されている感じです。- このURLの後半にある
pwd
パラメータにあるK1J6VjdFd2NpTWpaenJ6WE0zWml0QT09
はパスワードを意味しています。
問題
- このパスワードは、アルファベット大文字小文字と数字の組み合わせによっていできています。
- 文字の長さは32文字です。最後の2桁は固定されている様子。
- よって、パターンは(26+26+10)^30個となります。(内訳:a-z, A-Z, 0-9)
しかしながら、Zoomのサーバサイドの処理において、この大文字と小文字の区別をしていないので、実際には(26+10)^30個の組み合わせしか無いです。
よって、おそらくですがZoom社が想定している暗号強度の10^30倍弱い状態になってしまっています。
再現したときの動画
動画内の手順
- 正規のURLにアクセスします
- pwdパラメータの文字をすべて大文字にしてアクセスします。本来は入れないはずですが入れてしまいます。
感想
- Zoom社のsecurity insident窓口にメールを送ったのですが、窓口の担当者が理解してくれなかったので書いてみました。
- 実装ではよくある間違いで、ストレージエンジン(データベースなど)にこのパスワードとなる文字列が保存されており、URLにあるpwdパラメータと一致するかで評価していると思います。しかしながら、ストレージエンジンが大文字と小文字を区別しないので認証が通ってしまっていると考えます。実装レベルではよくある間違いです。
- 暗号強度が10^30倍弱くなったとしてもまだ充分に強度はあるので実質問題は無いと思います。
Comments