Meety脆弱性 2022-11
文責 mala
経緯:
- Meety退会しようと思ったがアカウントがなかったので、退会するためにアカウントを作ることにした。
免責:
- 気になった範囲ですぐに見つかったもののうち、悪用可能なものを記載しています。
- 好ましくないが仕様だろうというものは書いていません。
- 他の脆弱性が無いことを保証するものではないです。
これはsecret gistです 11/24 時点で未修正の脆弱性情報が含まれています。修正されたらpublicに変更する予定です。
- 近しい人向けの注意喚起と、開発元への報告を兼ねて書いています。
- 悪用を教唆したり、悪用しそうな人に情報を共有することは避けてください。
- 自分の所有していないアカウントの情報を書き換えると法に触れるので、そのような行為は絶対にやめてください。
11/25 Publicにしました
- 以下2件については修正されていることを簡単ですが確認しています。他の脆弱性が無いことを保証するものではありません。
認証cookieにsecure属性が使われていない
- ログインするとユーザーを識別するために mm_s という名前のcookieに保存される。
- このcookieにはsecure属性が使われていないため、 http://meety.net に接続するとネットワーク上に平文で認証cookieが流れる。
- この認証cookieを使って、ユーザー情報の取得や変更などが可能であることを確認した。
- 信用できないWiFiを利用した場合などに、meetyに登録している情報や、meety上でのやり取りの履歴がネットワーク上の中間者から窃取可能になる
- メールアドレスや、非公開に設定しているプロフィール情報が漏洩するおそれがある。
修正方法
- cookieにsecure属性をつける
ユーザー側での自衛方法
- Meetyを利用しない、または、信用できないネットワークでMeetyを利用しない。
- 公開されると差し障りがある情報をMeetyに登録しない。
修正状況
- 11/25 セッション情報は mm_s2 というsecure属性付きのcookieにJWTで保存されるようになった。
- 前日まで有効だった mm_s ではログインが維持されていないことを確認。
他人のポートフォリオ、職歴を書き換え可能
- ユーザーAでログインし、ポートフォリオを保存する際のリクエストをブラウザの開発者ツールを使ってcopy as curlなどでコピーする。
- ユーザーBの認証cookieに差し替えて上記のリクエストを実行すると成功する。(応答はユーザーBのプロフィールが返る)
- リクエスト本文を書き換えて、ポートフォリオのリンク先を変更してリクエストを送ると、ユーザーAのプロフィールが書き換わる。
- ユーザーBの認証cookieによって、ユーザーAのプロフィール情報が変更可能になっている。
APIのURL
ポートフォリオの場合は、以下のようなJSONで保存が行われている。
'{"user_portfolios":[{"id":36728,"created_at":"2022-11-24T00:18:55+09:00","updated_at":"2022-11-24T00:18:55+09:00","deletedAt":null,"user_id":35782,"portfolio_type":1,"value":"https://example.com/"}],
他のユーザーの user_id や、portfolios のidは、公開されているカジュアル面談のページから確認することが出来る。そのため、meety上に公開されているユーザーのポートフォリオのリンク先や、職歴を任意の内容に書き換えることが出来る。
修正方法
- リクエスト中の user_id を用いず、変更対象のレコードは常に認証cookieから取得したuser_idを用いる
備考
- 他にもuser_id をリクエストとして受け付けるapiがあり、同様の問題があると考えられます。
- これは他人のレコードの上書きが可能な脆弱性です。
- 内容を維持したまま非公開設定を公開に変更したりといったことは、自分の確認している範囲では出来ませんでした。(漏えいは起きず、情報の改ざんが出来る)
ユーザー側での自衛方法
- Meetyを利用しない
- カジュアル面談ページなど公開コンテンツがある場合は、改ざんされる可能性があるため、非公開にする。
- 人の恨みを買わない
修正状況
- 11/25 他人のuser_id を指定して保存を試みると500エラーが返るようになった。
タイムライン
- 2022-11-23 22:50 Meetyに登録する、直後、認証cookieにsecure属性が付いていないのを見つける
- 一通り調べて終わろうかと思ったところで、ポートフォリオ保存時のリクエストにuser_idが含まれているのを発見する。
- 流石に成功しないだろうと思って適当な知ってる人のuser_idで試そうかと思ったが、嫌な予感がしたので手抜きしないでアカウントをもう一つ作ることにする。
- 2022-11-24 00:14 Meetyにもう一個アカウントを登録する
- 2022-11-24 00:20 他人の情報を書き換えが出来ることを確認する
- 2022-11-24 01:36 Meety CEOのTwitterにDMで連絡
- 2022-11-24 01:39 Meetyの問い合わせフォームに連絡、自動返信を受信。
- 2022-11-24 16:38 Meety CTOのにFacebook Messangerで連絡
- 2022-11-24 20:06 問い合わせフォームへの連絡に対して、確認中という主旨の手動返信が来る
- 2022-11-25 10時頃 報告した問題について修正されているのを確認(正確な修正時刻は把握してません)
@okash1n thx, updated