Executable Regular Expression Error
Weakness ID: 624 (Weakness Base)Status: Incomplete
+ Description

Description Summary

The product uses a regular expression that either (1) contains an executable component with user-controlled inputs, or (2) allows a user to enable execution by inserting pattern modifiers.

Extended Description

Case (2) is possible in the PHP preg_replace() function, and possibly in other languages when a user-controlled input is inserted into a string that is later parsed as a regular expression.

+ Time of Introduction
  • Implementation
+ Applicable Platforms

Languages

PHP

Perl

+ Observed Examples
ReferenceDescription
CVE-2006-2059executable regexp in PHP by inserting "e" modifier into first argument to preg replace
CVE-2005-3420executable regexp in PHP by inserting "e" modifier into first argument to preg replace
CVE-2006-2878CVE-2006-2908complex curly syntax inserted into the replacement argument to PHP preg replace(), which uses the "/e" modifier
+ Potential Mitigations

The regular expression feature in some languages allows inputs to be quoted or escaped before insertion, such as \Q and \E in Perl.

+ Relationships
NatureTypeIDNameView(s) this relationship pertains toView(s)
ChildOfWeakness ClassWeakness Class77Improper Sanitization of Special Elements used in a Command ('Command Injection')
Development Concepts (primary)699
Research Concepts (primary)1000
+ Research Gaps

Under-studied. The existing PHP reports are limited to highly skilled researchers, but there are few examples for other languages. It is suspected that this is under-reported for all languages. Usability factors might make it more prevalent in PHP, but this theory has not been investigated.

+ Content History
Modifications
Modification DateModifierOrganizationSource
2008-07-01Eric DalciCigitalExternal
updated Time of Introduction
2008-09-08CWE Content TeamMITREInternal
updated Applicable Platforms, Relationships, Observed Example
2008-10-14CWE Content TeamMITREInternal
updated Description