外部フォームでCSRF攻撃されてしまいました【ver8.5.5】

2021年8月22日 at 1:37

自由度が高く確認画面のあるフォームが欲しくて、外部フォームでお問い合わせフォームを作りました。
ソースコードは以下です。
https://gist.github.com/kohki-shikata/9f7f448240125e174da43bbd5f6c4d9a

ホスティングはAWS Lightsail、メール配信はAWS SESを使いました。
あるとき、AWSから確認のメールがあり、大量にメールが配信されていて苦情率が高いので、
一旦SESのアカウントは凍結すると言うものでした。
大量の問い合わせを受けたわけでは無いので、記憶にないと返答したら
とりあえずフォームの脆弱性を解決しなさい、というお達しがありましたので、
どのように対応すれば良いか御指南いただけないでしょうか。

通常スクラッチでCSRF対策のメールフォームを作る場合は、
入力画面と確認画面、送信画面でそれぞれハッシュ値などを渡すと思うのですが、
菱川さんのブログには、外部フォームはCSRF対策済みとあるので、
特に今回はハッシュ値を渡し合うような仕組みは作らずにいました。
これが不味かったのでしょうか?

タグ:

Re: 外部フォームでCSRF攻撃されてしまいました【ver8.5.5】

2021年8月23日 at 12:11
5.6時代はトークンがURLで渡される使用でしたが、5.7からpostで渡す必要がある仕様に変わりました。自力で渡してください。

参考ドキュメント
http://documentation.concretecms.org/developers/security/protecting-against-csrf-with-token-validation
 

Re: 外部フォームでCSRF攻撃されてしまいました【ver8.5.5】

2021年8月31日 at 22:39
ありがとうございます。
こちら、確認して対応したいと思います。
 

Re: 外部フォームでCSRF攻撃されてしまいました【ver8.5.5】

2021年8月23日 at 12:13
執拗な攻撃が来るようであれば、ブラックリストのチェックもした方がいいでしょう。

Working with the IP Blacklist Programmatically
http://documentation.concretecms.org/developers/security/working-with-ip-blacklist-programmatically