Discordに脆弱性を報告したら意図された挙動だと言われた話
この記事はかいげんadvent calendarの16日目の記事です。
どうもこんにちは、Discord風邪(風邪をひいている奴とDiscordで通話すると風邪が伝染ること)に感染しました かたばみです。
今回はひょんなことからDiscordのリンク展開のEmbedが妙な挙動をすることに気づいたのでDiscordバグバウンティーチームに報告したのですが意図された挙動だと言われた話です。
取り敢えずこのツイートを見てほしいのですが
ツイートにMarkdownを書いてDiscordに貼り付けると⚠**ATTENTION**⚠
— かたばみ🎄 (@katabame) December 14, 2018
Can _Discord embed_ be **exploit**?
Join our __discord server__! [discord.gg/wumpus](https://t.co/OgHgqcv3An)
Follow us on __Twitter__! [twitter.com/discordapp](https://t.co/5SqTb2cc5A)
こういうことになります。
妙ですね...
内容のMarkdownがそのまま解釈されているため、リンクが隠蔽できてしまっています。
(実は偽装させているURLの .
の前にはZero width space U+200B
を挿入してTwitterにリンクと認識させないようにしています。要は t.co になるのを防いでいるだけ)
この挙動は危険で、本来のリンクがわからないのでフィッシングやIPアドレスの取得に誘導することが出来ます。
ちなみにSlackではこの様に表示されます。 まあこれが当然ですよね。
Discord TestersというDiscordに関するバグの報告用Discordサーバーがあるのですが、
異様に報告の仕方がややこしいので今回はDiscord Bug Bountyで報告しました。
DiscordTestersはクライアント周りのバグ報告であるのに対して、BugBountyはセキュリティ関連の報告なので今回の場合はこちらのほうが適しているというのもあります。
風邪をひいているというのもあって適当にこんな感じの内容の英文を書いて送信しました。
Discord bug bountyチーム様 まずはじめに、Discord bug bountyでレポートを行うのは初めてなので至らない点があるかと思います。もし何かレポートに不足している内容がある場合は教えて頂けると幸いです。 さて、今回私はウェブコンテンツの展開においてマークダウンの悪用できる可能性を発見しました。(TwitterのツイートやOGPタグの様なものです) 詳しい説明をする前に、まずはこの悪用例をご覧下さい。 https://twitter.com/katabame/status/1073531781062619142 このツイートがMarkdownとしてパースされているのに気付かれたかと思います。太字や斜体、下線の文字が存在していますね。 また、幾つかのリンクが隠蔽されていることにも気付かれたかと思います。 discord .gg は example .comに twitter .com のリンクは表記とは違うユーザーへと移動させられます。 この挙動をさせるためにTLDのドットの前にZero width space(U+200B)を入力してt .coのリンクが表示されるのを防いでいます。 この挙動はユーザーはリンクを踏まない限り正しいURLかどうかを判別出来ないため、フィッシングやIPアドレスの特定に用いることが出来ます。 展開される文字列はMarkdownとして展開されるべきでは "ありません"。 もし何か必要な情報が抜けていたり質問がありましたらお気軽にご連絡下さい。 敬具, かたばみ
で、これに対して帰ってきたメールがこんな感じです。
こんにちは かたばみさん。 この挙動は意図されたものであり、有効なソーシャルエンジニアリング上の懸念点には当たらないと考えています。 表示されているURLがソースURLでないMarkdownのリンクが投稿された場合、リンク警告を表示するようにしています。(URLをホワイトリストに登録している場合はこの限りではありません。) Twitterは投稿されたリンク全てを短縮リンクに変換するため、残念な事に短縮リンクが悪意のないリンクに移動することを信頼する必要があります。 短縮リンクは悪用目的で利用されることがあります。リンクの投稿者を信用しない限り、信用できることは何もありません。
まあ言わんとすることはわかります。不審なやつから送られてきたリンクは開くなって話ですね。
対応が面倒だからでしょうが、果たしてOGPとかをMarkdownとして解釈する必要はあるのか...
あくまでDiscordのメインターゲットはゲーマーなのでそこまでセキュリティに敏感では無いのでは?と思います。
少し不親切ではありますね。
TL;DL
Discordで悪意のあるリンクを踏んでも(多分)自己責任で片付けられるので不審なユーザーからのリンクは無視したほうがいいですね(個人見解)という話です。
↑ いちいちリンク気にするのめんどくせえ!そもそもDM送ってくるな!って人は設定からこんな感じにしとけばいいと思います(適当)
↑ まあ私は闇に飲まれているのでこういうことになっています。
みなさんはくれぐれもバグと悪意と体調に気をつけてお過ごしください。
ではまた!