LOBPCG: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
No edit summary
 
correct accent => ascent
Line 1: Line 1:
<br><br>The [http://Www.Laquincena.es/foros/comunidad-madrid/foro-getafe/best-fixed-blade-knives Butterfly Knife] , also known as a gravity knife or balisong is typically illegal. They're designed to be deployed rapidly with a flipping motion of the wrist, producing a slashing motion. They're a folding knife that has two handles that rotate around its tang. They're opened by centrifugal power. Each the switchblade and the butterfly knife have an evil or threatening fame due to their slashing motion. The guidelines can break off or the blade chip if a ceramic blade Pocket knife is dropped on the ground and you cannot use them to pry with.<br><br>Versions of mumbley peg (also referred to as mumblety-peg , mumblepeg, mumble-the-peg, mumbledepeg or mumble-de-peg) have been around so long as jackknives have been within the pockets of boys and males who had time to kill. The sport gets its title from a stick pushed into the ground by the winner of the game, which the loser should pull out of the bottom with [http://www.thebestpocketknifereviews.com/fixed-blade-knives-best-small-edc-knife/ Benchmade Fixed Blade Knives] his tooth. Mumbley peg was an insanely well-liked schoolyard sport in the 19th century amongst boys. It was proper up there with marbles and jacks. Actually, Mark Twain’s Tom Sawyer, Detective, mentions “mumbletypeg” as being a favorite sport with the children at previous Tom’s faculty.<br><br>The best tip for hanging ceiling drywall is to persuade another person to do it. Since that isn't always economically possible, studying learn how to hang ceiling drywall with a [http://Sss.chaoslab.ru/tracker/mim_plugs/newticket?reporter=anonymous&summary=AttributeError%3A+%27Environment%27+object+has+no+attribute+%27get_db_cnx%27&description=I%27ve+noticed+that+my+requirements+for+a+hard+and+fast+blade+knife+have+modified+over+the+years+as+my+backpacking%2C+mountain+climbing%2C+and+bushcraft+skills+have+developed.+I+won%27t+be+getting+right+into+a+debate+right+here+about+fastened+blade+versus+folding+knives.+I%27ve+each+and+love+them+equally+for+various+reasons.+What+I+will+probably+be+doing+is+evaluating+my+three+favorite+mounted+blade+knives+and+describing+their+good+and+unhealthy+factors+based+mostly+on+my+utilization+and+general+observations.%0D%0A%0D%0A%0D%0A%0D%0AOK%2C+perhaps+you%27ll+get+some+unusual+seems+to+be+on+the+town+and+it+may+not+be+fully+applicable+apparel+in+all+situations%2C+however+on+the+farm+or+within+the+woods+this+knife+style+makes+excellent+sense.+Fixed+blades+do+not+fail+they+usually+come+in+all+sizes%2C+made+for+all+conceivable+purposes.+Full+tang+versions+are+both+floor+or+solid+from+one+piece+of+metal+inventory+%E2%80%94+you+may+see+the+steel+core+of+the+knife+on+top+and+backside+of+the+handle+and+all+the+way+in+which+to+the+butt.+Some+good+fashionable+fixed+%5Bhttp%3A%2F%2Fwww.dailymail.co.uk%2Fhome%2Fsearch.html%3Fsel%3Dsite%26searchPhrase%3Dblades%2Bextend+blades+extend%5D+the+tang+a+bit+past+that+to+be+used+as+a+glass+smasher.%0D%0A%0D%0AThe+Seal+Pup+was+my+first+purchase+and+was+purchased+because+of+it%27s+dimension%2C+repute%2C+and+value.+The+Pup+is+a+properly+examined+and+dependable+%E2%80%98survival%27+knife+that+has+earned+an+incredible+popularity+and+respect+from+many+%E2%80%93+what+could+possibly+be+dangerous%3F+Nicely+for+me+it+turned+out+to+be+the+serrated+edge+which+was+in+precisely+the+unsuitable+place+for+many+wooden+carving+actions.+After+many+months+of+persevering+I+started+to+be+on+the+lookout+for+a+better+knife.+A+great+characteristic+that+I+make+use+of+are+the+webbing+Molle+straps+sewn+to+the+back+of+the+sheath+that+connect+to+straightforward+1%E2%80%B3+Molle+webbing+or+easily+permit+you+to+wear+the+knife+in+a+horizontal+vogue+in+your+belt+%E2%80%93+which+is+my+most+well-liked+solution+to+put+on+this+knife.+Spring+metal+clips+Or+Lower+Spring+Steel+Clips+Cold+Steel+Braveheart%0D%0A%0D%0AMy+next+buy+was+the+Fallkniven+F1+%E2%80%93+arguably+one+of+the+crucial+well-known+and+wanted+knives+on+the+earth.+Eight+intensive+years+of+research+went+into+this+knife%2C+and+resulted+in+it+being+selected+because+the+official+survival+knife+of+the+Swedish+Air+power+%E2%80%93+the+remaining+is+historical+past+as+they+say.+The+problem+I+had+nearly+from+the+start+with+the+F1+was+that+regardless+of+the+convex+grind+it+might+get+stuck+or+pinched+tight+when+attempting+to+make+deep+cuts+in+wood%2C+making+it+lower+than+perfect+for+heavy+duty+bushcraft+activities.+I+also+started+to+turn+out+to+be+extra+involved+with+the+knife+than+it+is+perform+%E2%80%93+being+overly+cautious+not+to+damage+the+knife+as+a+result+of+it+was+not+cheap.%0D%0A%0D%0AWhen+you+consider+a+typical+looking+knife+%2C+chances+are+high+you%27re+visualizing+a+fixed-blade+knife.+Unlike+a+folding+knife%2C+these+sporting+knives+are+permanently+affixed+in+the+%E2%80%9Copen%E2%80%9D+position.+The+blade+is+heavy+but+I+prefer+a+heavy+blade+versus+a+heavy+handle+the+place+the+blade+is+so+light+it+actually+rises+when+holding+the+knife+by+the+deal+with.+Good+overall+stability+and+it%27s+a+knife+you+should+have+in+your+survival+pack.+Carry+one+in+the+automotive%2C+hold+one+at+home+and+pack+one+out+when+you+head+out+for+some+wilderness+journey.+Axis+Lock+%E2%80%93+A+locking+mechanism+solely+licensed+to+the+Benchmade+Knife+Company+A+cylindrical+bearing+is+tensioned+such+that+it%27ll+leap+between+the+knife+blade+and+some+feature+of+the+handle+to+lock+the+blade+open.++eleven+Made+in+America%0D%0A%0D%0AThis+Browning+Escalade+Skinner+Krayton+Searching+Knife+is+constructed+with+a+rugged%2C+edge+holding+440-C+Chrome+steel+blade+forged+within+the+skinner+style.+Its+wonderful+steadiness+and+intensely+useful+blade+form+make+Whether+you+are+cleaning+a+fish+or+fixing+what%27s+broken%2C+there+may+be+nothing+just+like+the+legendary+Gerber+knives+and+the+tough+Gerber+multitools+to+get+the+job+performed.+At+%2C+we+make+discovering+your+Gerber+knives+and+multi+instruments+simple.+We+carry+the+complete+line+of+knives%2C+tools%2C+pliers%2C+axes%2C+and+sheaths.+We%27re+completely+satisfied+to+offer+you+the+very+best+customer+support+anywhere.+In+case+you+have+any+questions%2C+please+feel+free+to+call+us+toll+free.+We%27ll+assist+you+to+get+the+Gerber+gear+you%27re+looking+for.+The+blade+is+hardened+to+61+on+the+Rockwell+C+scale.+Anza+Small+Hunter+%28%2432%29%0D%0A%0D%0AThere+may+be+sufficient+stomach+to+the+blade%2C+a+wee+bit+greater+than+the+folder%2C+so+that+it%27s+adequate+to+use+for+dressing+recreation%2C+but+not+a+lot+that+it+interferes+with+overall+utility.+The+sting+profile+is+very+near+that+of+the+RSK+Mk1++folder+that+has+confirmed+so+common+with+hunters+and+guides+in+Canada+and+Alaska+where+it+has+dressed+out+a+number+of+moose%2C+elk%2C+caribou+and+the+like.+D.+Should+you+liked+this+article+and+you+would+want+to+get+more+info+relating+to+%5Bhttp%3A%2F%2Fwww.thebestpocketknifereviews.com%2Ffixed-blade-knives-best-small-edc-knife%2F+Small+fixed+Blade+knives%5D+generously+check+out+the+web+site.+%29+Butt+Plate+or+Pommel+-+A+metallic+piece%28may+also+be+made+of+different+material%29+applied+at+the+end+or+the+back+of+the+handle.+The+pommel+is+the+butt+area+of+the+knife.+Qty3+Deadly+Molded+Spikes+Brass+knuckle+duster+3+Colours+PCS+Eagle+head+Heavy+Steel+Brass+Knuckle+dusters+NEW+FreeShip+2+PCS+OXhead+Black+Steel+Brass+Knuckle+dusters+PCS+Goddess+fashion+Steel+Brass+Knuckle+dusters+Black%0D%0A%0D%0AA+easy+letter+opener%2C+or+paper+knife+Knives+as+a+standard+or+religious+implement++edit++Rituals+and+superstitions++edit+Suermondt%2C+Jan+%282004%29.+Illustrated+information+to+knives+Grange+Books.+p.%C2%A012.+ISBN+978-1-84013-694-4+Shackleford%2C+Steve+%282010%29.+Blade%27s+Information+to+Knives+%26+Their+Values+%287+ed.%29.+Krause+Publications.+p.%C2%A0232.+ISBN+978-1-4402-0387-9+The+RSK+%C2%AE+Mk3+falls+into+the+middle+of+the+medium+range+at+four.5+inches+%28eleven.forty+three+cm%29+for+the+blade.+I+find+this+size+splendid+for+most+functions%2C+large+enough+to+get+the+job+done+and+it+offers+more+utility+than+a+typical+folder%2C+but+not+so+large+as+to+be+%5Bhttp%3A%2F%2FEn.Wiktionary.org%2Fwiki%2Foverly%2Bbulky+overly+bulky%5D+or+heavy.+A+portion+of+the+proceeds+from+the+sale+of+each+Doug+Ritter+RSK+%C2%AE+Knife+goes+to+assist+the+non-revenue+Outfitted+To+Survive+Basis+Cold+Metal+Secret+Edge&create=Create minimal] of hazard to life and limb would be the next finest plan. It is advisable [http://www.thebestpocketknifereviews.com/fixed-blade-knives-best-small-edc-knife/ custom tactical fixed blade Knives] know a couple of details about drywall earlier than beginning. First, it's massive and heavy. Second, it's a little fragile when dropped or held incorrectly. These two details result in an obvious conclusion. As an amatuer drywall hanger, you want at the least one helper to do this job right.<br><br>Be sure that this prop is the [http://Bitcoinaddict.com/webid/item.php?id=96628 precise length] wanted to hold one end of the drywall towards the ceiling joists. The upright must be about 2 1/4 inches shorter than the space from the ground to ceiling joists. The cross piece must be about four ft long. Use the prop to assist the alternative finish of the drywall while you fasten your end to the ceiling. Then transfer to the other end and sink some screws into the drywall. As soon as both ends are secured, you'll be able to end screwing off the piece.<br><br>Sleeping Bag- You had better like sleeping in the great outdoors as a result of that is exactly what you can be doing when you are on a wildland fireplace crew. Just be sure you have a superb sleeping bag. The night time's usually get cold no matter what time of year it's if you're up within the mountains. You additionally need to just be sure you have a sleeping bag that covers you from head to toe. A tent shall be extraordinarily helpful also. Chances are you'll not wish to sleep exterior the complete time you are on crew. A small one or two man tent should work just wonderful.<br><br>It will most definitely occur at the end of the primary run throughout the room. When chopping drywall, use a sharp knife. A utility knife or a [http://www.Magisterdireccionteatral.uchile.cl/contenido/best-4-inch-fixed-blade-knife drywall knife] will work. A great pocket knife may do the trick, too. Mark a straight line the place the [http://sss.chaoslab.ru/tracker/mim_plugs/newticket?reporter=anonymous&summary=AttributeError%3A+%27Environment%27+object+has+no+attribute+%27get_db_cnx%27&description=Top+Catalog+Fixed+Blade%2FFight+Knives+My+Account++Procuring+Cart++Checkout+Seek+for+Ammunition+Classes+%2F+Products+View+Our+Clearance+Gadgets%21+A.%29+Bolster+or+Guard+-+The+time+period+for+the+cross+member+attached+to+the+tip+of+the+handle%2C+subsequent+to+the+blade+itself.+This+prevents+the+hand+from+sliding+up+onto+the+blade.+Our+prospects+utilize+our+years+of+experience+to+bring+them+the+most+effective+knives+on+the+earth.+We+concentrate+on+quality+and+service+%21%0D%0A%0D%0ATaylor+Brands%27+sequence+of+Schrade+tactical+knives+delivers+stable+quality+at+pleasantly+low+prices.+The+SCHF14+is+made+out+of+8Cr13+excessive-carbon+stainless+steel.+This+mottled%2C+glare-free+end+makes+this+knife+virtually+appear+like+a+blacksmith%27s+handiwork.+The+drop-point+blade+is+full-tang+with+a+lanyard+slot.+The+scallop-notched+G10+overlay+handles+create+a+premium+grip+at+this+bargain+price.+The+molded+belt+sheath+both+holds+the+blade+effectively+and+releases+it+with+simply+the+correct+amount+of+pull.+The+overall+size+of+this+knife+is+7.9+inches%2C+whereas+the+blade+size+is+three.4+inches.+It+weighs+5.6+ounces.+My+solely+gripe+is+that+it%27s+fairly+boring+out+of+the+field.+Make+sure+to+sharpen+it+before+you+want+it.%0D%0A%0D%0AFor+me+the+load+of+a+knife+is+of+little+consideration.+Obviously+I+do+not+want+or+wish+to+be+lugging+round+a+Rambo+style+knife%2C+that%27s+completely+unnecessary%2C+however+as+I+typically+carry+a+knife+connected+to+me+and+not+my+pack+I+do+not+issue+it+into+any+base+weight+%5Bhttp%3A%2F%2Fweb.seoulmi.hs.kr%2Fwiki%2Findex.php%2FSuperknife_Sk2_Folding_Utility_Knife+calculations%5D+for+my+pack.+Because+it+happens+these+three+knives+are+all+within+a+number+of+ounces+of+one+another+so+there+actually+is+little+difference%2C+but+in+an+effort+to+be+as+full+and+thorough+as+doable+listed+here+are+the+weights+%28including+their+sheaths%29.+The+Fallkniven+F1+weighed+in+at+6oz%2C+the+SOG+Seal+Pup+weighed+in+at+5.4oz%2C+and+the+Mora+711+weighed+a+mere+four.25+oz.%0D%0A%0D%0ATo+see+more+info+in+regards+to+%5Bhttp%3A%2F%2Fwww.thebestpocketknifereviews.com%2Ffixed-blade-knives-best-small-edc-knife%2F+fixed+blade+knife+sheaths+Leather%5D+review+our+own+website.+Similarly%2C+a+spear+level+knife+can+be+used+as+a+looking+weapon%E2%80%93either+by+itself+or+lashed+to+a+pole+to+create+a+longer+attain+spear.+I+preserve+the+allen+wrench+%28which+came+with+my+knife%29+in+my+knife+sheath+pocket+at+all+times.+This+allows+me+to+take+away+the+scales+and+lash+the+total+tang+blade+almost+seamlessly+onto+a+workers+as+a+spear-level.+A+%22bias+towards+closure%22+means+that+as+you+close+the+knife%2C+very+slowlyand+gently%2C+the+blade+will+be+%22sucked+into+the+grip%22+over+the+past+bitof+journey.+Senator%2C+27th+District+Nowhere+in+PC653k+is+there+a+size+restrict.+My+daily-carry+folderhas+a+blade+5.forty+five%22+lengthy.+The+blade+steel+%28AUS6%29+is+mediocre%3B+sufficient+for+a+fighter%2C+but+if+youfrequently+use+it+as+a+%22utility+software%22+you+may+have+to+sharpen+it+very+often.%0D%0A%0D%0AIt+has+a+leather%2C+slightly+than+Kydex%2C+sheath+so+the+sheath+doesn%27t+keep+on+with+it+when+drawn.+It+simply+rides+there%2C+right+alongside+the+again+seam.+The+one+drawback+I%27ve+had+with+this+is+when+at+Sonny%27s+pistol+course+awhile+again%2C+it+got+here+out+out+after+we+had+been+doing+the+drill+where+we+got+knocked+backwards+onto+our+backs+%28and+have+been+supposed+to+concurrently+draw+pistol%29.+I+am+considering+of+simply+attaching+a+clip+to+the+deal+with%2C+similar+to+a+folder.+It+might+be+more+secure%2C+and+the+general+size+wouldn%27t+must+be+%22good%22+to+keep+the+deal+with+in+the+right+place+to+reach.%0D%0A%0D%0AThis+Browning+Escalade+Skinner+Krayton+Searching+Knife+is+constructed+with+a+rugged%2C+edge+holding+440-C+Chrome+steel+blade+forged+within+the+skinner+fashion.+Its+excellent+steadiness+and+extremely+functional+blade+form+make+Whether+or+not+you%27re+cleaning+a+fish+or+fixing+what%27s+damaged%2C+there%27s+nothing+like+the+legendary+Gerber+knives+and+the+tough+Gerber+multitools+to+get+the+job+achieved.+At+%2C+we+make+discovering+your+Gerber+knives+and+multi+tools+simple.+We+stock+the+entire+line+of+knives%2C+tools%2C+pliers%2C+axes%2C+and+sheaths.+We%27re+comfortable+to+give+you+the+very+best+customer+support+anywhere.+When+you%27ve+got+any+questions%2C+please+be+happy+to+name+us+toll+free.+We%27ll+provide+help+to+get+the+Gerber+gear+you%27re+on+the+lookout+for.+The+blade+is+hardened+to+61+on+the+Rockwell+C+scale.+Anza+Small+Hunter+%28%2432%29%0D%0A%0D%0ATo+file+the+bevel+on+the+blade%2C+I+used+the+setup+shown+beneath.+A+file+is+connected+to+a+sturdy+stick+of+wood+by+a+screw+on+one+finish+and+a+clamp+on+the+other+%28that+is+the+thin+piece+of+wooden+laying+diagonally+in+the+photograph%29.+One+finish+of+this+stick+rests+on+a+perpendicular+piece+of+wood+%28the+orange+clamp+is+touching+it%29.+The+height+of+this+piece%2C+and+its+distance+from+the+blade+determines+the+taper+angle.+The+file+in+fact+contacts+the+knife+clean.+Additionally%2C+you+may+see+a+bit+angle+iron+which+is+preventing+the+file+from+wandering+too+far+down+the+tang.%0D%0A%0D%0AThe+bolt+in+the+bolt+lock+is+a+rectangle+of+steel+that%27s+constrained+to+slide+solely+back+and+ahead.+When+the+knife+is+open+a+spring+biases+the+bolt+to+the+ahead+place+where+it+rests+above+the+tang+of+the+blade+stopping+the+blade+from+closing.+Small+knobs+extend+via+the+handle+of+the+knife+on+each+side+permitting+the+consumer+to+slide+the+bolt+backwards+liberating+the+knife+to+close.+The+Axis+Lock+used+by+knife+maker+Benchmade+is+functionally+similar+to+the+bolt+lock+besides+that+it+uses+a+cylinder+slightly+than+a+rectangle+to+entice+the+blade.++11++The+Arc+Lock+by+knife+maker+SOG+is+just+like+the+Axis+Lock+except+the+cylinder+follows+a+curved+path+rather+than+a+straight+path.++12&create=Create drywall] must be lower. Use the knife and minimize by way of the paper and somewhat into the gypsum inside. Holding the drywall with the minimize on the opposite side from your self, pull gently back on one finish of the drywall while tapping firmly behind the reduce. The drywall sheet ought to bend and snap cleanly alongside the road.
The '''regular expression denial of service''' ('''ReDoS''')<ref name="ReDoS in OWASP">
{{
cite web
|author=[[OWASP]]
|date=2010-02-10
|url=http://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS
|title=Regex Denial of Service
|accessdate=2010-04-16
}}
</ref>
is a [[denial-of-service attack]] that exploits the fact that most [[regular expression]] implementations may reach extreme situations that cause them to work very slowly (exponentially related to input size). An attacker can then cause a program using a regular expression to enter these extreme situations and then hang for a very long time.<ref name="RiverStar">
{{
cite web
|author=[[RiverStar Software]]
|date=2010-01-18
|url=https://www.riverstarsoftware.com/kb/article/security-bulletin-caution-using-regular-expressions-17.html
|title=Security Bulletin: Caution Using Regular Expressions
|accessdate=2010-04-16
}}
</ref><ref name="ModSecurity">
{{cite book
| last = Ristic
| first = Ivan
| authorlink = http://blog.ivanristic.com/
| title = ModSecurity Handbook
| publisher = [https://www.feistyduck.com/ Feisty Duck Ltd]
| date = 2010-03-15
| location = London, UK
| page = 173
| url = https://www.feistyduck.com/books/modsecurity-handbook/index.html
| isbn = 978-1-907117-02-2
}}</ref>
 
==Description==
Regular expression matching can be done by building a [[finite-state automaton]]. Regular expressions can be easily converted to [[nondeterministic finite-state automaton|nondeterministic automata]] (NFAs), in which for each pair of state and input symbol there may be several possible next states. After building the automaton, several possibilities exist:
 
* the engine may convert it to a [[Deterministic finite automaton|deterministic finite-state automaton (DFA)]] and run the input through the result;
* the engine may try one by one all the possible paths until a match is found or all the paths are tried and fail ("backtracking").<ref name="Crossby&Wallach">
{{
cite web
|author=Crosby and Wallach, Usenix Security
|year=2003
|url=http://www.cs.rice.edu/~scrosby/hash/slides/USENIX-RegexpWIP.2.ppt
|title=Regular Expression Denial Of Service
|accessdate=2010-01-13
}}
</ref><ref name="Sullivan">
{{
cite web
|author=[http://msdn.microsoft.com/en-us/magazine/ee532098.aspx?sdmr=BryanSullivan&sdmi=authors Bryan Sullivan], [[MSDN Magazine]]
|date=2010-05-03
|url=http://msdn.microsoft.com/en-au/magazine/ff646973.aspx
|title=Regular Expression Denial of Service Attacks and Defenses
|accessdate=2010-05-06
}}
</ref>
* the engine may consider all possible paths through the nondeterministic automaton in parallel;
* the engine may convert the nondeterministic automaton to a DFA [[lazy evaluation|lazily]] (''i.e.'', on the fly, during the match).
 
Of the above algorithms, the first two are problematic. The first is problematic because a deterministic automaton could have up to <math>2^m</math> states where <math>m</math> is the number of states in the nondeterministic automaton; thus, the conversion from NFA to DFA may take [[EXPTIME|exponential time]]. The second is problematic because a nondeterministic automaton could have an exponential number of paths of length <math>n</math>, so that walking through an input of length <math>n</math> will also take exponential time.<ref name="KirrageRathnayakeThielecke">
{{
cite conference
|last1 = Kirrage | first1 = J.
|last2 = Rathnayake | first2 = A.
|last3 = Thielecke | first3 = H.
|title = Static Analysis for Regular Expression Denial-of-Service Attacks
|booktitle = Network and System Security
|place = Madrid, Spain
|pages = 135-148
|publisher = Springer
|year = 2013
|url = http://link.springer.com/chapter/10.1007/978-3-642-38631-2_11
|doi = 10.1007/978-3-642-38631-2_11
}}
</ref>
The last two algorithms, however, do not exhibit pathological behavior.
 
Note that for non-pathological regular expressions the problematic algorithms are usually fast, and in practice one can expect them to "[[compiler|compile]]" a regular expression in O(m) time and match it in O(n) time; instead, simulation of an NFA and lazy computation of the DFA have [[Time complexity|O]](m<sup>2</sup>n) worst-case complexity.<ref>Lazy computation of the DFA can usually reach the speed of deterministic automatons while keeping worst case behavior similar to simulation of an NFA. However, it is considerably more complex to implement and can use more memory.</ref> Regular expression denial of service occurs when these expectations are applied to regular expressions provided by the user, and malicious regular expressions provided by the user trigger the worst-case complexity of the regular expression matcher.
 
While regex algorithms can be written in an efficient way, most regular expression engines in existence extend the regular expression languages with additional constructs that cannot always be solved efficiently. Such [[Regular expression#Patterns for non-regular languages|extended patterns]] essentially force the implementation of regular expression in most [[programming language]]s to use backtracking.
 
==Examples==
===Evil regexes===
Evil regexes, that get stuck on crafted input, can be different depending on the regular expression matcher that is under attack. For backtracking matchers, they occur whenever these factors occur:<ref name="Podcast">
{{
cite web
|author=Jim Manico and Adar Weidman
|date=2009-12-07
|url=http://www.owasp.org/index.php/Podcast_56
|title=OWASP Podcast 56 (ReDoS)
|accessdate=2010-04-02
}}
</ref>
* the regular expression applies repetition ("+", "*") to a complex subexpression;
* for the repeated subexpression, there exists a match which is also a suffix of another valid match.
 
The second condition is best explained with an example: in the regular expression <tt>(a[ab]*)+</tt>, both "a" and "aa" can match the repeated subexpression <tt>a[ab]*</tt>.  Therefore, after matching "a", the nondeterministic automaton may try a new match of <tt>a[ab]*</tt> or a new match of <tt>a</tt>.  If the input has many consecutive "a"s, each of them will double the number of possible paths through the automaton. Examples of "evil regexes" include the following:
* <tt>(a+)+</tt>
* <tt>([a-zA-Z]+)*</tt>
* <tt>(a|aa)+</tt>
* <tt>(a|a?)+</tt>
* <tt>(.*a){x}</tt> for x > 10
 
All the above are susceptible to the input <tt>aaaaaaaaaaaaaaaaaaaaaaaa!</tt> (The minimum input length might change slightly, when using faster or slower machines).
 
Other patterns may not cause an exponential behavior, but for long enough inputs (a few hundreds of characters, usually) they could still cause long elaboration times. An example of such a pattern is "a*b?a*x", the input being an arbitrarily long sequence of "a"s. Such a pattern may also cause backtracking matchers to hang.
 
===Vulnerable regexes in online repositories===
Evil regexes have been found in online regular expression repositories. Note that it is enough to find an evil ''sub''expression in order to attack the full regex:
 
# [http://regexlib.com/REDetails.aspx?regexp_id=1757 RegExLib, id=1757 (email validation)] - see {{red|red}} part, which is an Evil Regex<br><code>^([a-zA-Z0-9]){{red|<nowiki>(([\-.]|[_]+)?([a-zA-Z0-9]+))*</nowiki>}}(@){1}[a-z0-9]+[.]{1}(([a-z]{2,3})|([a-z]{2,3}[.]{1}[a-z]{2,3}))$</code>
# [http://www.owasp.org/index.php/OWASP_Validation_Regex_Repository OWASP Validation Regex Repository], Java Classname - see {{red|red}} part, which is an Evil Regex<br><code>^{{red|(([a-z])+.)+}}[A-Z]([a-z])+$</code>
 
These two examples are also susceptible to the input <tt>aaaaaaaaaaaaaaaaaaaaaaaa!</tt>.
 
===Attacks===
If a Regex itself is affected by a user input, the attacker can inject an Evil Regex, and make the system vulnerable. Therefore, in most cases, regular expression denial of service can be avoided by removing the possibility for the user to execute arbitrary patterns on the server. In this case, web applications and databases are the main vulnerable applications. Alternatively, a malicious page could hang the user's web browser or cause it to use arbitrary amounts of memory.
 
However, some of the examples in the above paragraphs are considerably less "artificial" than the others; thus, they demonstrate how a vulnerable regexes may be used as a result of programming mistakes. In this case [[e-mail scanner]]s and [[intrusion detection system]]s could also be vulnerable. Fortunately, in most cases the problematic regular expressions can be rewritten as "non-evil" patterns. For example, <tt>(.*a){x}</tt> can be rewritten to <tt>([^a]*a){x,}</tt>.
 
In the case of a web application, the programmer may use the same regular expression to validate input on both the client and the server side of the system. An attacker could inspect the client code, looking for evil regular expressions, and send crafted input directly to the web server in order to hang it.
 
==References==
{{reflist}}
 
==External links==
* Examples of ReDoS in open source applications:
** [http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-3277 ReDoS in DataVault]
** [http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-3275 ReDoS in EntLib]
** [http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-3276 ReDoS in NASD CORE.NET Terelik]
* Some benchmarks for ReDoS
** Achim Hoffman (2010). "[http://github.com/EnDe/ReDoS/ ReDoS - benchmark for regular expression DoS in JavaScript]". Retrieved 2010-04-19.
** Richard M. Smith (2010). "[http://www.computerbytesman.com/redos Regular expression denial of service (ReDoS) attack test results]". Retrieved 2010-04-19.
* Paper on implementing regular expressions not vulnerable to certain classes of ReDoS
** Russ Cox (2007). "[http://swtch.com/~rsc/regexp/regexp1.html Regular Expression Matching Can Be Simple And Fast]". Retrieved 2011-04-20.
* A tool for detecting ReDoS vulnerabilities
** H. Thielecke, A. Rathnayake (2013). "[http://www.cs.bham.ac.uk/~hxt/research/rxxr.shtml Regular expression denial of service (ReDoS) static analysis]". Retrieved 2013-05-30.
 
[[Category:Denial-of-service attacks]]
[[Category:Pattern matching]]
[[Category:Regular expressions]]

Revision as of 16:54, 21 October 2013

The regular expression denial of service (ReDoS)[1] is a denial-of-service attack that exploits the fact that most regular expression implementations may reach extreme situations that cause them to work very slowly (exponentially related to input size). An attacker can then cause a program using a regular expression to enter these extreme situations and then hang for a very long time.[2][3]

Description

Regular expression matching can be done by building a finite-state automaton. Regular expressions can be easily converted to nondeterministic automata (NFAs), in which for each pair of state and input symbol there may be several possible next states. After building the automaton, several possibilities exist:

  • the engine may convert it to a deterministic finite-state automaton (DFA) and run the input through the result;
  • the engine may try one by one all the possible paths until a match is found or all the paths are tried and fail ("backtracking").[4][5]
  • the engine may consider all possible paths through the nondeterministic automaton in parallel;
  • the engine may convert the nondeterministic automaton to a DFA lazily (i.e., on the fly, during the match).

Of the above algorithms, the first two are problematic. The first is problematic because a deterministic automaton could have up to 2m states where m is the number of states in the nondeterministic automaton; thus, the conversion from NFA to DFA may take exponential time. The second is problematic because a nondeterministic automaton could have an exponential number of paths of length n, so that walking through an input of length n will also take exponential time.[6] The last two algorithms, however, do not exhibit pathological behavior.

Note that for non-pathological regular expressions the problematic algorithms are usually fast, and in practice one can expect them to "compile" a regular expression in O(m) time and match it in O(n) time; instead, simulation of an NFA and lazy computation of the DFA have O(m2n) worst-case complexity.[7] Regular expression denial of service occurs when these expectations are applied to regular expressions provided by the user, and malicious regular expressions provided by the user trigger the worst-case complexity of the regular expression matcher.

While regex algorithms can be written in an efficient way, most regular expression engines in existence extend the regular expression languages with additional constructs that cannot always be solved efficiently. Such extended patterns essentially force the implementation of regular expression in most programming languages to use backtracking.

Examples

Evil regexes

Evil regexes, that get stuck on crafted input, can be different depending on the regular expression matcher that is under attack. For backtracking matchers, they occur whenever these factors occur:[8]

  • the regular expression applies repetition ("+", "*") to a complex subexpression;
  • for the repeated subexpression, there exists a match which is also a suffix of another valid match.

The second condition is best explained with an example: in the regular expression (a[ab]*)+, both "a" and "aa" can match the repeated subexpression a[ab]*. Therefore, after matching "a", the nondeterministic automaton may try a new match of a[ab]* or a new match of a. If the input has many consecutive "a"s, each of them will double the number of possible paths through the automaton. Examples of "evil regexes" include the following:

  • (a+)+
  • ([a-zA-Z]+)*
  • (a|aa)+
  • (a|a?)+
  • (.*a){x} for x > 10

All the above are susceptible to the input aaaaaaaaaaaaaaaaaaaaaaaa! (The minimum input length might change slightly, when using faster or slower machines).

Other patterns may not cause an exponential behavior, but for long enough inputs (a few hundreds of characters, usually) they could still cause long elaboration times. An example of such a pattern is "a*b?a*x", the input being an arbitrarily long sequence of "a"s. Such a pattern may also cause backtracking matchers to hang.

Vulnerable regexes in online repositories

Evil regexes have been found in online regular expression repositories. Note that it is enough to find an evil subexpression in order to attack the full regex:

  1. RegExLib, id=1757 (email validation) - see Electrician (Special Class ) Cameron from Deep River, really loves crosswords, property developers in singapore condo launch and tesla coils. Recommends that you simply go to León Cathedral. part, which is an Evil Regex
    ^([a-zA-Z0-9])Electrician (Special Class ) Cameron from Deep River, really loves crosswords, property developers in singapore condo launch and tesla coils. Recommends that you simply go to León Cathedral.(@){1}[a-z0-9]+[.]{1}(([a-z]{2,3})|([a-z]{2,3}[.]{1}[a-z]{2,3}))$
  2. OWASP Validation Regex Repository, Java Classname - see Electrician (Special Class ) Cameron from Deep River, really loves crosswords, property developers in singapore condo launch and tesla coils. Recommends that you simply go to León Cathedral. part, which is an Evil Regex
    ^Electrician (Special Class ) Cameron from Deep River, really loves crosswords, property developers in singapore condo launch and tesla coils. Recommends that you simply go to León Cathedral.[A-Z]([a-z])+$

These two examples are also susceptible to the input aaaaaaaaaaaaaaaaaaaaaaaa!.

Attacks

If a Regex itself is affected by a user input, the attacker can inject an Evil Regex, and make the system vulnerable. Therefore, in most cases, regular expression denial of service can be avoided by removing the possibility for the user to execute arbitrary patterns on the server. In this case, web applications and databases are the main vulnerable applications. Alternatively, a malicious page could hang the user's web browser or cause it to use arbitrary amounts of memory.

However, some of the examples in the above paragraphs are considerably less "artificial" than the others; thus, they demonstrate how a vulnerable regexes may be used as a result of programming mistakes. In this case e-mail scanners and intrusion detection systems could also be vulnerable. Fortunately, in most cases the problematic regular expressions can be rewritten as "non-evil" patterns. For example, (.*a){x} can be rewritten to ([^a]*a){x,}.

In the case of a web application, the programmer may use the same regular expression to validate input on both the client and the server side of the system. An attacker could inspect the client code, looking for evil regular expressions, and send crafted input directly to the web server in order to hang it.

References

43 year old Petroleum Engineer Harry from Deep River, usually spends time with hobbies and interests like renting movies, property developers in singapore new condominium and vehicle racing. Constantly enjoys going to destinations like Camino Real de Tierra Adentro.

External links

  1. Template:Cite web
  2. Template:Cite web
  3. 20 year-old Real Estate Agent Rusty from Saint-Paul, has hobbies and interests which includes monopoly, property developers in singapore and poker. Will soon undertake a contiki trip that may include going to the Lower Valley of the Omo.

    My blog: http://www.primaboinca.com/view_profile.php?userid=5889534
  4. Template:Cite web
  5. Template:Cite web
  6. 55 years old Systems Administrator Antony from Clarence Creek, really loves learning, PC Software and aerobics. Likes to travel and was inspired after making a journey to Historic Ensemble of the Potala Palace.

    You can view that web-site... ccleaner free download
  7. Lazy computation of the DFA can usually reach the speed of deterministic automatons while keeping worst case behavior similar to simulation of an NFA. However, it is considerably more complex to implement and can use more memory.
  8. Template:Cite web