よくある問い合わせフォームを提供していたら、知らぬ間にスパムメールの加害者になっていた話です
エンジニアが知っておくべき メール送信・運用ノウハウ、メールの認証技術やセキュリティについて投稿しよう! by blastengine Advent Calendar 2024 の8日目です。
要件
- お問い合わせ内容の他、名前や所属、メールアドレスの入力が必須
- 問い合わせ完了後、入力されたメールアドレス宛に自動応答メールを送る
- 自動応答メールには入力された問い合わせ内容を記載する
- 同様に指定したサービス担当者宛にも問い合わせ通知メールを送る
以上の要件で作成しました。
実現方法
メール送信にはAWS SESを使用しました。問い合わせ確定ボタンを押下後にAWS Lambdaにリクエストを飛ばし、SESと連携してメールを送信する流れです。
実装後のこと
実装後、しばらく正常に稼働していました。しかし、ある日朝起きるとサービス担当者に大量の問い合わせ通知メールが届いていました。
本文にはロシア語とともにURLが記載されていました。
ああ、どこかのスパムが我々宛に問い合わせを行っているだけだな、と軽い気持ちで考えていました。
しかし、実は大変なことが起こっていたのです。
知らぬうちにスパムメールの加害者になっていた
この問い合わせですが、実はスパムメールの踏み台に使用されていました。
問い合わせフォームのメールアドレス欄に攻撃対象者のメールアドレスを記載すると、その対象者に我々のメールアドレスからロシア語の文章+URL付きでメールが送られてしまうのです。
結果、AWS SESからバウンス率(送信できなかった割合)及び苦情率の上昇アラート通知が届き、対応を求められました。
スパム対象となってしまった方々には大変申し訳ございません。
対策
-
問い合わせの自動応答メールを廃止する
ビジネス要件を見直し、不要であれば自動応答メールを廃止するというのがまず考えられる対策です。 -
問い合わせの自動応答メールからユーザ入力情報を撤廃し、固定の文言の返答とする
我々の場合、自動応答メールの内容にユーザが入力した情報を記載していたため、スパムメールの踏み台にされてしまいました。固定の内容であればURLなどを記載することができませんので、悪用されることはほぼ無くなると思われます。
本文だけでなく名前欄などもURLを入れ込まれる可能性があり注意が必要です。 -
reCAPTCHA v3を実装する
reCAPTCHA v3はGoogleが提供するボット対策のためのツールでユーザーの行動を分析し、人間か否かのスコアを取得できます。v3の場合はユーザの操作なしに裏で自動的に動作することが可能なのでユーザ体験を損なわずに実装できます。
我々はこちらの対策を取り、それ以後悪用されることはありませんでした。
(追記) 人間がBotと判定される可能性もあるため、ビジネス側との相談の上で決定をする必要があります。
おわりに
問い合わせフォームに限らずメールを自動返信しているサービスを提供している方々は、一度システムを再チェックして悪用されないかを確認することをおすすめします。