この記事は DeNA 21 新卒 Advent Calendar 2020 の24日目の記事です.メリークリスマス! はじめに 今回は,ReDoS (Regular Expressions DoS)と呼ばれる,正規表現 (Regular Expression) のパターン処理の脆弱性を利用した攻撃 について説明します. 普段何気なく使う正規表現ですが,意外なところに落とし穴があります. この記事を通して,正規表現の扱い方を考えるきっかけになればいいなと思います. ※ もちろん脆弱性を利用した攻撃をしてはダメです. ReDoS攻撃とは ReDoS攻撃は,正規表現のパターン評価に時間を要する文字列を入力することで,サーバーの計算リソースを奪う攻撃です. まずはその攻撃の具体例を紹介します. いま,/^(([a-zA-Z0-9])+)+$/という正規表現1を考え,その正規表現に対して幾つか文字列