LINE Security Bug Bounty Program
今は無期限で実施されているが、2015年に期間限定で行われていたときに報告して報奨金をもらった脆弱性。類似の問題が無いか調査中であることと、旧バージョンのクライアントの利用者がいるから、公表を控えるようにと言われていた。規約の機密保持の期限の1年が過ぎたから訊いてみたところ、公表して問題無いとのことだったので、公開する。
関連:
- LINE Bug Bounty Programに報告して認定されなかった脆弱性(1) - Qiita
- LINE Bug Bounty Programに報告して認定されなかった脆弱性(2)/先を越されていた脆弱性 - Qiita
iOS版のLINEアプリのディレクトリトラバーサル
LINEにはファイルを送信する機能がある。このファイル名にディレクトリトラバーサルの脆弱性があった。このファイル名を /../../../../../Documents/test.txt
のように ../
を含んだものにすると、相手がファイルをタップしたときに、ファイルを保存するディレクトリ外にファイルが保存される。iOS版だけで、Android版にはこの脆弱性は無かった。500ドル。
確認するのが面倒だった。Androidならばルートを取れば良いけど、私の持っているiPhoneは当時の最新版にしていたので脱獄できなかったし、Appleの開発者登録もしていなかった。PCにバックアップを取り、このツールでバックアップの中を確認した。
この脆弱性がどう悪用できるか。ファイルが書き込めるのだから、適当なファイルに書き込めば任意コード実行(報奨金1万ドル)くらいできるのではないかと思ったが、iOSにはchrootのようなサンドボックスがあって、他のアプリやOSのファイルは触ることができない。頑張って悪用できるようなLINEアプリのファイルを探せば、報奨金がもっといっぱいもらえたかもしれない。
日程調整の短縮URLがHTTPであること
このURLがHTTPであることを指摘したら、500ドルもらえた。LINE太っ腹。
個人的には、HTTPと書かれたURLにアクセスして平文で通信が行われるのは、脆弱性ではなく利用者が気をつけるべき事だと思っている。が、もらえるものはもらっておこう。
それよりも、このURLが短縮URLになっていることが問題だと思っている。日程調整のページはユーザーの認証などは行われておらず、URLを秘密にすることで第三者が日程を閲覧したり編集したりできないようになっている。そのために、日程調整のURLは26文字の英小文字と数字のランダム文字列になっている。取り得るパターンは、3626≒31040 通り。これが7文字の英数字になることで、627≒41012 通りと、パターン数が大きく減っている。さすがに連番でこのURLが決まっているわけではないものの、ひたすらURLを叩き続ければどこかの誰かの日程調整を引き当てる可能性もあるくらいの数。HTTPの件と合わせて報告したけれど、特に修正はなされていないので、これは仕様らしい。