LINEにあった脆弱性をバグハンター側から紹介シリーズ No.2
0.はじめに
今回は「LINEにあった脆弱性をバグハンター側から紹介シリーズ」の第二弾として、2020/04にHackerOneを通じて報告した脆弱性についてお話しようと思います。
HackerOneとは、サービスの脆弱性を探してほしい企業と世界中のハッカーをマッチングして、より安全にサービスを改善するためのプラットフォームです。
誰でも自由に登録できるので、興味のある方はバグバウンティに挑戦してみてください!☺️
1. 私が報告した脆弱性
LINEのタイムライン機能には「非表示」という、あるユーザーの投稿を自分のタイムラインに表示させないようにする機能があります。Twitterで言うと「ミュート」機能のことです。
自分が非表示に設定したユーザーの一覧を確認するためには、設定>タイムライン>タイムライン非表示リストを開きます。
問題があるのはこの部分のAPIです。
このエンドポイントは本来、自分のアカウントの設定を確認するものですが、リクエストのパラメータにはユーザーを識別するIDが含まれていたため、この部分を変更することで他のアカウントの設定を取得できました。
レスポンスにはユーザーの名前とID、プロフィール画像が含まれ、このIDを連鎖的に使用することもできます。この脆弱性により、ハッカーは自分の友達の設定を取得し、ターゲットのプライベートな友好関係を把握することができました。
2. このバグを防ぐには
では、どのようにしたらこのバグを防ぐことができるでしょうか。
-
APIリクエストで本当に必要なパラメーターなのかを考える
→ 認証の必要な機能でユーザーを識別しているのに、わざわざユーザーが入力した値を使用するのは危険です。 -
認証に関する機能を共通化する
→ 複数のエンドポイントが存在する場合、管理が複雑になるため、見落としが発生します。共通化することで根本的に問題を解決します。
3. どれくらいの影響か
- この非表示リストはタイムラインのみであるため、トーク機能などのその他での関係を把握することはできませんでした。
- この脆弱性の悪用のためには、LINEアプリケーションについての多少の知識が必要であり、ターゲットのIDを事前に調査する必要があります。
- 非表示リストを構成しているユーザーはごく一部だと考えられ、広範囲の悪用は不可能でした。
よってLINEは$1500の報奨金を決定しました。
4. まとめ
この脆弱性はHackerOne上でも公開されています!他の方のレポートも、是非ご覧になってください。
今回の記事が好評だったら、今後、私が脆弱性を探すときに使っている方法等を記事にしたいと思っています。よろしくお願いします!
この記事は教育を目的としたものであり、脆弱性の悪用を推奨するものではありません。バグバウンティは企業の提示するルールの範囲内で認められる合法行為であり、その他の行為は違法とみなされます。場合によっては刑事事件に発展する可能性があります。
いつもご支援ありがとうございます。