萌えハッカーニュースリーダー

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

出典: https://github.com/JakeRoggenbuck/regolith
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

ブー!正解は「天才美少女がマッチする」じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search