タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
先日、このようなツイートを書いたところ、かなりの反響がありました。 JavaScript の正規表現の脆弱性の例でいうと、例えば /\s+$/ は脆弱性があると言える console.time(); /\s+$/.test(" ".repeat(65536) + "a"); console.timeEnd(); 結構時間がかかるのがわかる。でも /\s+$/ を見て「これは危険だな」と理解出来る人はそんなにいない。JavaScript に限らないけれど。 — Takuo Kihira (@tkihira) February 17, 2022 これは一般に ReDoS (Regular expression Denial of Service) と呼ばれる脆弱性です。正確に理解するのが難しい脆弱性なので、少し解説してみたいと思います。 結論 長い記事になるので、最初に「とりあえずこれだけ知っ
ReDoS とは、Regular expression Denial of Service の略称で脆弱な正規表現を利用することで起こる DoS のひとつです。 正規表現は利用者からの入力値の検証など色々な場面で利用されていますが、正規表現の記述は難しく、誤った記述をしてしまうと ReDoS の影響を受ける恐れがあります。 本記事では ReDoS の概要から対策方法まで解説していきます。 ReDoS とは メールアドレスや電話番号の入力が正しい形式になっているかどうかを確認するために正規表現を使うことがあると思います。 複雑な形式をマッチさせる正規表現を正しく書くことは難しく、書き方によっては処理に時間がかかることがあります。 ReDoS は、正規表現が使われている部分において、正規表現エンジンに対して処理時間が多くかかる入力を与えることでサービス停止が起こる脆弱性です。 Freezing
はじめに 皆さんこんにちは.3回生のらん(@hoshina350)です. 文字列マッチングに便利な正規表現ですが,テキトーに書くと脆弱になり得るという情報を耳にしてから色々と原因や対策を調べていました. しかし,多くの記事で紹介されていた対策方法は,「独自の正規表現を使用しないー」とか「 * や + などの繰り返し表現はなるべく使わないー」とかいう なんともふわっとしたものでした.これでは「いやぁ確かにそうなんかもしれんけど…そうゆう訳にはいかんやんか…」と納得できません. つまり,「本質的に何が問題」で,「具体的にどんな特徴のある正規表現が脆弱になり得るのか」を知りたい訳です. そこで,様々な文献を調査してみました.本記事では調査して溜まった知見を紹介していきます. 本記事は, Purdue大学のJames Davis教授による “The Regular Expression Denia
サーバーやネットワークに意図的に負荷をかけ、サービス障害を引き起こすDoS攻撃の中でも、正規表現のパターン処理の脆弱性を利用した攻撃をReDoS攻撃と呼び、StackOverflowやCloudflareもその標的となったことがあります。パデュー大学の電気・コンピューター工学の教授であるジェームズ・デイビス氏が、ReDoS攻撃の原因となる典型的な正規表現とその対策について語っています。 The Regular Expression Denial of Service (ReDoS) cheat-sheet https://levelup.gitconnected.com/the-regular-expression-denial-of-service-redos-cheat-sheet-a78d0ed7d865 正規表現とは、いくつかの文字列をひとつの文字列でパターンとして表現する方法のこ
では、なぜこのようなことが起きてしまうのでしょうか。具体的な脆弱性の解説に移る前に、まずはReDoSのしくみについて説明します。 ReDoSのしくみ ReDosの脆弱性を理解するためには、そもそも正規表現によるマッチングを行う処理系である、正規表現エンジンのしくみについて知る必要があります。 正規表現エンジンの概要 正規表現エンジンとは、簡単に言えば「ユーザーから受け取った文字列(入力文字列)が、正規表現で表される文字列と合致するか否か」を判定するプログラムです。そしてこのプログラムのキモとなる「正規表現文字列の解釈」と「入力文字列が合致するか否かを判定する部分」は、「有限オートマトン」を利用して実現しています。 具体的には、正規表現の文字列を有限オートマトンに変換後、入力文字列を有限オートマトンの入力として与え、文字列中に正規表現にマッチする部分があるか否かを、有限オートマトンの状態を
日本電信電話株式会社(本社:東京都千代田区、代表取締役社長:澤田 純、以下「NTT」)と学校法人早稲田大学(本部:東京都新宿区 理事長:田中愛治 以下、「早稲田大学」)は、文字列のチェック機能の処理時間を長期化させコンピュータの負荷を大幅に増大させる攻撃を引き起こす脆弱性に対する実用的な自動修正技術を世界に先駆けて実現いたしました。文字列のパターンマッチに用いられる正規表現(※1)とは、特定の文字の並び(文字列)をルールに基づき簡略化して表現する方法で、Webサービスなどにおいてユーザの入力値が期待したものであるかの検証など幅広い場面で利用されています。難解な正規表現の仕組みやルールを深く理解し、検証すべき文字列を厳密に定義できていないと脆弱性になってしまうため、近年グローバルで大きな脅威となっています。この技術によって、専門知識をもたない開発者でもこうした正規表現の脆弱性の修正が可能とな
この記事は DeNA 21 新卒 Advent Calendar 2020 の24日目の記事です.メリークリスマス! はじめに 今回は,ReDoS (Regular Expressions DoS)と呼ばれる,正規表現 (Regular Expression) のパターン処理の脆弱性を利用した攻撃 について説明します. 普段何気なく使う正規表現ですが,意外なところに落とし穴があります. この記事を通して,正規表現の扱い方を考えるきっかけになればいいなと思います. ※ もちろん脆弱性を利用した攻撃をしてはダメです. ReDoS攻撃とは ReDoS攻撃は,正規表現のパターン評価に時間を要する文字列を入力することで,サーバーの計算リソースを奪う攻撃です. まずはその攻撃の具体例を紹介します. いま,/^(([a-zA-Z0-9])+)+$/という正規表現1を考え,その正規表現に対して幾つか文字列
Perl Hackers Hub 第74回正規表現の脆弱性「ReDoS」徹底解説 ~原理と対策から、Perlでの最適化まで(1) 本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは藤浪大弥さんで、テーマは「ReDoS徹底解説」(1)です。 ReDoS解説にあたって── 本稿の構成など 正規表現に関わる脆弱性として「ReDoS」があります。本稿の前半では、ReDoSとはどんな脆弱性でなぜ発生するのか理論的な立場から詳細に解説し、対策のためにすることをいくつか紹介します。後半では、ReDoSへの対策あるいはマッチの高速化のための、Perlでの正規表現実装上の工夫を紹介します。 後半で説明しますが、Perlの正規表現実装にはさまざまな工夫があり、標準的な実装とはやや異なる部分があります。Perlを使ってReDoSの説明をすると本質的でない部分が生じてわかりづらく
週刊Railsウォッチについて 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙏 TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ) 🔗Ruby 🔗 GCコンパクションの2つのカーソル移動順序を入れ替え PR: Reverse the order of GC compaction cur
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
こんにちは、hachi8833です。StimulusをStimlusと書いてしまいがちです。 Rubyプログラマあるある間違い 1. DeviseをDeviceと書いてしまう 2. RSpecをRspecと書いてしまう(Sは大文字) あとひとつは? — Junichi Ito (伊藤淳一) (@jnchito) October 28, 2022 週刊Railsウォッチについて 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙏 TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をい
Ruby3.2.0でReDoS対策が入ったということで、2022年と2023年に報告したReDoSの脆弱性で公表されたものについて効果を確認してみました。 [1] [2] [3] [4] [5] [6] [7] [8] (2024年追記)Ruby3.3.xで確認したものはこちら Faraday Net::HTTP adapter PoC require 'benchmark' def attack_text(length) text = 'charset=' + "\t" * length + "a" + "\t" * length + "a" /\bcharset=\s*(.+?)\s*(;|$)/.match(text) end Benchmark.bm do |x| x.report { attack_text(10) } x.report { attack_text(100) }
IntroductionThis post is intended as a “technical two-pager” to summarize a security vulnerability called Regex-based Denial of Service (AKA Regex DoS, ReDoS). There are a variety of write-ups about ReDoS, but I’m not aware of a good one-stop-shop with a higher-level treatment of all aspects of the subject. I have included links at the end to more detailed treatments. I have used headings liberall
Examine regular expressions for potential Denial of Service vulnerabilities Regular expressions can sometimes be crafted in a way that makes them vulnerable to Denial of Service (DoS) attacks. This tool can be used to examine regular expressions for such vulnerabilities, identifying patterns that could cause performance issues.
NTT(持ち株会社)と早稲田大学は3月23日、プログラムの脆弱性の一つ「ReDoS脆弱性」を自動修正する技術を、世界に先駆けて開発したと発表した。専門知識のない開発者でも、ReDoS脆弱性を容易に修正できるという。 正規表現とは、特定の文字列をルールに基づき簡略化して表現する方法で、ほとんどのプログラミング言語に組み込まれている。Webサービスなどで、ユーザの入力値が期待したものかを検証するなど幅広い場面で利用されている。 ただ、検証すべき文字列が厳密に定義できていないと、脆弱性になってしまう。処理時間が長くなる入力を与えて計算リソースを消費し、負荷を大幅に増大させる攻撃が可能になるためだ。 ReDoS脆弱性が原因で商用のサービスが停止するインシデントはここ数年でたびたび発生しているという。 新技術では、ReDoS脆弱性がないことを保証するため、正規表現の書き方から曖昧さを排除し、任意の文
はじめに この記事は、記事投稿キャンペーン「【RubyKaigi 2023 連動イベント】みんなで Ruby の知見を共有しよう」の記事です RubyKaigi 2023 の Day 2 (2023/05/12) 16:00 - 16:30 Takashi Yoneuchi (tw:@lmt_swallow)さんの 「Eliminating ReDoS with Ruby 3.2 」 でお話があった ReDoS のタイムアウトについて実際に動かして検証してみました。 ReDoS について ReDoS は、Regular expression Denial of Service の略称です 正規表現の評価に時間がかかる文字列を入力しリソースを占有する攻撃です。 ReDoS について詳しくまとめてくださっている @flat-field さんの記事のリンクを張り説明は省略します。 また、 Rub
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く