CVE-2011-10003 (published 2023-02-07T21:15Z)

A vulnerability was found in XpressEngine up to 1.4.4. It has been rated as critical. This issue affects some unknown processing of the component Update Query Handler. The manipulation leads to sql injection. Upgrading to version 1.4.5 is able to address this issue. The patch is named c6e94449f21256d6362450b29c7847305e756ad5. It is recommended to upgrade the affected component. The associated identifier of this vulnerability is VDB-220247.

CVSS v3 base score: 9.8, CRITICAL (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

Weakness information:
cwe_id: CWE-89
cwe_name: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
description: The product constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component. Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data.
extended_description: 
            
            
         
         

Fix information:
repo_url: https://github.com/haegyung/xe-core
commit_details: repo_url: https://github.com/haegyung/xe-core
author: ovclas@gmail.com
author_date: 2011-05-02 06:43:49+00:00
msg: #19727459 SQL Injection fixed in Update Query


git-svn-id: http://xe-core.googlecode.com/svn/branches/1.4.5@8350 201d5d3c-b55e-5fd7-737f-ddc643e51545
repository: repo_url: https://github.com/haegyung/xe-core
repo_name: haegyung/xe-core
description: NOT OFFICIAL. git-svn http://xe-core.googlecode.com/svn
repo_language: PHP
owner: haegyung
file_changes: filename: DBCubrid.class.php
change_type: ModificationType.MODIFY
diff: @@ -733,9 +733,8 @@
                         $check_column = false;
                         $value = "'".$this->addQuotes ($value)."'";
                     }
-                    elseif (!$value || is_numeric ($value)) {
-                        $value = (int) $value;
-                    }
+					// sql injection 문제로 xml 선언이 number인 경우이면서 넘어온 값이 숫자형이 아니면 숫자형으로 강제 형변환
+					else $value = (int)$value;
 
                     $column_list[] = sprintf ("\"%s\" = %s", $name, $value);
                 }

programming_language: PHP
filename: DBMssql.class.php
change_type: ModificationType.MODIFY
diff: @@ -595,8 +595,6 @@
 						if(!$value) $value = '';
 						$column_list[] = sprintf("[%s] = %s",  $name, $value);
 					}
-
-					
                 }
             }
 

programming_language: PHP
filename: DBMysql.class.php
change_type: ModificationType.MODIFY
diff: @@ -485,7 +485,8 @@
                 if(strpos($name,'.')!==false&&strpos($value,'.')!==false) $column_list[] = $name.' = '.$value;
                 else {
                     if($output->column_type[$name]!='number') $value = "'".$this->addQuotes($value)."'";
-                    elseif(!$value || is_numeric($value)) $value = (int)$value;
+					// sql injection 문제로 xml 선언이 number인 경우이면서 넘어온 값이 숫자형이 아니면 숫자형으로 강제 형변환
+                	else $value = (int)$value;
 
                     $column_list[] = sprintf("`%s` = %s", $name, $value);
                 }

programming_language: PHP
filename: DBPostgresql.class.php
change_type: ModificationType.MODIFY
diff: @@ -617,8 +617,8 @@ class DBPostgresql extends DB
             else {
                 if ($output->column_type[$name] != 'number')
                     $value = "'" . $this->addQuotes($value) . "'";
-                elseif (!$value || is_numeric($value))
-                    $value = (int)$value;
+				// sql injection 문제로 xml 선언이 number인 경우이면서 넘어온 값이 숫자형이 아니면 숫자형으로 강제 형변환
+				else $value = (int)$value;
 
                 $column_list[] = sprintf("%s = %s", $name, $value);
             }

programming_language: PHP
filename: DBSqlite2.class.php
change_type: ModificationType.MODIFY
diff: @@ -463,7 +463,8 @@
                     if(strpos($name,'.')!==false&&strpos($value,'.')!==false) $column_list[] = $name.' = '.$value;
                     else {
                         if($output->column_type[$name]!='number') $value = "'".$this->addQuotes($value)."'";
-                        elseif(!$value || is_numeric($value)) $value = (int)$value;
+						// sql injection 문제로 xml 선언이 number인 경우이면서 넘어온 값이 숫자형이 아니면 숫자형으로 강제 형변환
+						else $value = (int)$value;
 
                         $column_list[] = sprintf("%s = %s", $name, $value);
                     }

programming_language: PHP
filename: DBSqlite3_pdo.class.php
change_type: ModificationType.MODIFY
diff: @@ -500,7 +500,8 @@
                     if(strpos($name,'.')!==false&&strpos($value,'.')!==false) $column_list[] = $name.' = '.$value;
                     else {
                         if($output->column_type[$name]!='number') $value = "'".$this->addQuotes($value)."'";
-                        elseif(!$value || is_numeric($value)) $value = (int)$value;
+						// sql injection 문제로 xml 선언이 number인 경우이면서 넘어온 값이 숫자형이 아니면 숫자형으로 강제 형변환
+						else $value = (int)$value;
 
                         $column_list[] = sprintf("%s = %s", $name, $value);
                     }

programming_language: PHP