質問: /(a+)+Z/ regex.exec("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!") ``` しかし、コレクションにあるデータを正規表現で検索するときにはすぐに結果が返ってきます ``` db.test.insert({_id: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!"}) db.test.find({_id:/(a+)+Z/}) ``` MongoDBの正規表現を使ったクエリーにはReDOS脆弱性がないことが保証されているのでしょうか? MongoDBのドキュメントを探しましたがクエリーの正規表現にリモートから受け取った文字列を使用していいのかどうか見つけられませんでした。 唯一見つけたのは以下のもので、 > > Remotely trigger a denial of service (crash) via a specially crafted regular expression > > > とあり、で正規表現のReDOS攻撃に対処したようですが、明確に使用しても大丈夫だというドキュメントは見つけられませんでした。
回答: MongoDBバージョン2.6.8以前及び3.0.0でCVE-2014-8964でのReDOS脆弱性があるPCREライブラリーバージョン8.30が使用されていました。MongoDBをそれ以降のバージョンにアップデートすればこのPCRE脆弱性がなくなります。 *参照 (英語のみ)* SERVER-17252 及び、ご覧になったポストの右側にバージョンが記載されています。 。