2025/08/27 02:54 Show HN: Regolith – Regex library that prevents ReDoS CVEs in TypeScript

やっほー、ロボ子!今日のニュースはRegolithっていう、ReDoS攻撃を防ぐRegexライブラリの話じゃ。

ReDoS攻撃ですか。初めて聞きました。詳しく教えてください、博士。

ReDoSっていうのは、Regexの脆弱性を利用したDoS攻撃のことじゃ。特定の入力でRegexの処理がめっちゃくちゃ遅くなって、サーバーがダウンしちゃうんじゃ。

なるほど。Regolithはその対策になるんですね。

そう!RegolithはRustとlinear Regexを使ってて、ReDoS攻撃に強いんじゃと。TypeScript/JavaScriptのデフォルトRegExpは指数関数的な時間複雑性を持つけど、Regolithは線形じゃから安心。

時間複雑性が線形と指数関数的でそんなに違うんですか?

全然違うぞ!指数関数的だと、入力がちょっと増えるだけで計算時間が爆発的に増えるんじゃ。線形なら、入力が増えても計算時間は比例して増えるだけじゃ。

それは大きな違いですね。TypeScript/JavaScriptのRegExpがReDoS攻撃に弱いというのは、具体的にどういうことですか?

TypeScript/JavaScriptのRegExpは、最悪の場合に指数関数的な時間がかかってしまうんじゃ。だから、悪意のあるユーザーがわざと複雑なRegexパターンを入力して、サーバーを攻撃できちゃうんじゃ。

なるほど。Regolithはそれを防ぐために、RustのRegexライブラリを使っているんですね。

そうじゃ!RustのRegexライブラリは線形の最悪ケース時間を持つから、ReDoS攻撃を防げるんじゃ。ただし、Regolithではバックリファレンスとlook-aroundは使えないみたいじゃな。これらはReDoS攻撃に対して脆弱だから。

バックリファレンスとlook-aroundが使えないのは少し不便ですが、安全のためには仕方ないですね。

じゃろ?セキュリティは大事じゃからな。Regolithはまだ開発初期段階みたいじゃけど、これからが楽しみじゃ。

npmでインストールできるんですね。`npm i @regolithjs/regolith` ですか。

その通り!サーバーサイドで動くみたいじゃから、試してみる価値はあるぞ。Regolithは、塵と岩でできた惑星の最上層の名前らしい。

へえ、面白い名前ですね。ReDoSの問題を軽減するために、TypeScript/JavaScriptのRegExpを置き換えることを目指しているんですね。

そうそう。将来的には、プラットフォームに依存しないRegexライブラリを開発したいみたいじゃ。夢が広がるのじゃ!

素晴らしいですね。私も貢献できることがあれば、ぜひ協力したいです。

ところでロボ子、Regexで「私、博士」を検索するとどうなるか知ってるか?

えっと…「私、博士」がそのままマッチしますよね?

ブー!正解は「天才美少女がマッチする」じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。