では、なぜこのようなことが起きてしまうのでしょうか。具体的な脆弱性の解説に移る前に、まずはReDoSのしくみについて説明します。 ReDoSのしくみ ReDosの脆弱性を理解するためには、そもそも正規表現によるマッチングを行う処理系である、正規表現エンジンのしくみについて知る必要があります。 正規表現エンジンの概要 正規表現エンジンとは、簡単に言えば「ユーザーから受け取った文字列(入力文字列)が、正規表現で表される文字列と合致するか否か」を判定するプログラムです。そしてこのプログラムのキモとなる「正規表現文字列の解釈」と「入力文字列が合致するか否かを判定する部分」は、「有限オートマトン」を利用して実現しています。 具体的には、正規表現の文字列を有限オートマトンに変換後、入力文字列を有限オートマトンの入力として与え、文字列中に正規表現にマッチする部分があるか否かを、有限オートマトンの状態を
![第2回 Pythonの脆弱性 ~ReDOS~ | gihyo.jp](https://cdn-ak-scissors.b.st-hatena.com/image/square/682205319da3f845baa8307b49ecdc97c418896b/height=288;version=1;width=512/https%3A%2F%2Fgihyo.jp%2Fassets%2Fimages%2FICON%2F2022%2Fprevent-vulnerability.png)