11
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Qiitaの公式出会い系を名乗るスパムへの対抗方法(xyz ドメインのあれ)

概要

2020年5月17日頃から、Qiitaの公式出会い系を名乗るスパムが発生し、スパマーがフォローすることでQiitaからの通知メールが送信され、結果として危険なサイトへの誘導が行われました。

D11CFFCF-9A94-45F6-9C95-A4C4F52562E0.jpeg

なお、スパマーアカウントはBANされました。
374249F5-5C8F-4F58-AC40-B3055E67E00B.jpeg

BAN済 @QiitaBot
BAN済 @QiitaBot_
BAN済 @Admin_Bot
BAN済 @_BotAdmin
BAN済 @HarukoAdmin
BAN済 @Qiita_Date
BAN済 @AdminQiita
BAN済 @AdminQiita_
BAN済 @Admin_Qiita
BAN済 @Admin_Qiita_
BAN済 @QiitaOfficial

:thinking:Qita?
BAN済 @AdministrationQita

!悪用禁止!
恐らく名前のところにhttps://を抜いたURLを入れたんだろうと推測します。
!悪用禁止!

結論

メール受信側の対抗方法

受信側で、このメールを受け取りたくないなら、アカウント設定で行います。
「設定」を押下します。
1BC415E2-36CD-41E4-890E-F153B122A4C6.jpeg

「メールアドレスと通知」を押下します。
581F4CF3-4E75-4314-BDC4-4C845F02E8E0.jpeg

下のほうにある「フォロー」のところで「メール」のチェックボックスを外して「保存する」を押下します。
Web通知は悪質なサイトへの誘導は行われないので、チェックボックスを外さなくても大丈夫です。
36551E0B-C3DC-4E3F-91C0-8F3ABDED6B2E.jpeg

メール通知に関して2020年5月18日の時点でヘルプページにメール通知の説明が無かったので画像による説明を追記しました。

悪質ユーザーへの通報は公式ヘルプの通報機能にあります。

メール送信側の対抗方法

次にエンジニアとしては、これをメール送信側で、何とかしたいのですが意外と面倒です。
実は、メールクライアントはURLを正規表現で判定し、それを自動的にハイパーリンクに置換していきます。
そのため、メール送信側では対策が少々難しいと思います。
(アカウント作成時に公開Proxy IPアドレスだったらアカウント作成を拒否するのもありです。)

昔、このようなことの対策をしたことがありますので、やったことを思い出しながら整理すると、以下の方法ぐらいしか無いです。
入力禁止文字にピリオドを追加するが一番オススメです。

  • 送信対策
    • 正規表現でURL判定されてしまうので、メール送信する文面でURLらしきものの先頭1文字を大文字にする。(Gmailだけかもしれないので推奨しません)
    • 正規表現でURL判定されてしまうので、メール送信する文面からピリオドを抜く。
    • 正規表現でURL判定させないために、ピリオドの前に¥などURL要素以外の文字を入れる。
    • ユーザーの名前をメール送信しない。
    • HTMLメールであれば、ユーザーのマイページなど、プロフィールURLをアンカータグとして送信する。
      • アンカータグがあれば、テキストエリアにピリオドがあっても、アンカータグが優先されテキストエリアはハイパーリンクにはならない。
  • 入力対策
    • メール送信する可能性のある名前にピリオドを入力させない、ピリオドを入力禁止文字として設定する。
      • タイトルなど他にもユーザーが入力する可能性のある項目で、メール送信するものにはピリオド入力はさせない。
      • 入力項目でピリオドが禁止文字に設定されているのは、これが理由です。

実験コーナー

msmtpで色々なメールを送信してみよう!
送信先はGmailです。

メール送信側でURLらしきものをハイパーリンク化されてしまうことを制御するのは不可能ですが、知識とし共有しておきます。
すぐに思いつくのは、HTMLメールでformat-detectionを指定ですが、やっても反応しません。
<meta name="format-detection" content="email=no,telephone=no,address=no">を設定しても無駄です。

msmtpについては、別の記事で説明する予定です。 
msmtpについては別の記事に書きました。
msmtp を使う

テキストメールのパターン

テキストメールの文面

q1.txt
From: "Qiita1" <sample@sample.com>
To: sample@sample.com
Subject: Qiita1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8

テキストメール
リンクされる qiit.com
リンクされない Qiita.com

テキストメールの送信

cat q1.txt | msmtp -t

受信したテキストメール

C2BAAD20-05E5-4E45-9147-6C78FCFB5C4A.jpeg

HTMLメールのパターン

HTMLメールの文面

q2.txt
From: "Qiita2" <sample@sample.com>
To: sample@sample.com
Subject: Qiita2
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8

<html>
<head>
<style>
@media (max-width: 768px) {
  .test1 {
    color: #f0f;
  }
}

@media (min-width: 769px) {
  .test1 {
    color: #0ff;
  }
}
</style>
</head>
<body>
<h1 class="test1">HTMLメール</h1>
リンクされる qiita.com<br/>
リンクされない Qiita.com<br/>
ハイパーリンクでリンクされる(実際はトップページがリンクされる) <a href="https://qiita.com/">https://qiita.com/sapi_kawahara</a><br/>
</body>
</html>

HTMLメールの送信

cat q2.txt | msmtp -t

受信したHTMLメール

116085FD-A2B0-491C-A6DC-FD1FEE7B01F4.jpeg

base64でエンコードしたメールのパターン

base64でエンコードしたメールの文面

q3.txt
From: "Qiita3" <sample@sample.com>
To: sample@sample.com
Subject: Qiita3
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64

YmFzZTY044Gn44Ko44Oz44Kz44O844OJ44GX44Gf44Oh44O844OrDQrjg6rjg7Pjgq/jgZXjgozj
gosgcWlpdC5jb20NCuODquODs+OCr+OBleOCjOOBquOBhCBRaWl0YS5jb20=

base64でエンコードしたメールの送信

cat q3.txt | msmtp -t

受信したbase64でエンコードしたメール

7E6848D1-E03E-4C76-B35D-8867D076EC9D.jpeg

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
11
Help us understand the problem. What are the problem?