CWE
Home > CWE List > CWE-624 Individual Dictionary Definition (Draft 9)   View the CWE List

CWE-624 Individual Dictionary Definition (Draft 9)

Executable Regular Expression Error
Weakness ID
Status: Incomplete

624 (Weakness Base)

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. 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.

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.

Observed Examples
ReferenceDescription
CVE-2006-2059 - executable regexp in PHP by inserting "e" modifier into first argument to preg_replace
CVE-2005-3420 - executable regexp in PHP by inserting "e" modifier into first argument to preg_replace
CVE-2006-2878, CVE-2006-2908 - complex curly syntax inserted into the replacement argument to PHP preg_replace(), which uses the "/e" modifier
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.

Relationships
NatureTypeIDName
ChildOfWeakness ClassWeakness ClassWeakness Class77Failure to Sanitize Data into a Control Plane (aka 'Command Injection')
Applicable Platforms

PHP

Perl

Page Last Updated: April 22, 2008