BUGTRAQ ID: 39148
CVE ID: CVE-2010-0686
zabbix是一个CS结构的分布式网络监控系统。
Zabbix API使用了include/db.inc.php中定义的DBcondition()函数来执行SQL查询中WHERE子句的条件。该函数没有对用户提供数据提供额外的检查:
function DBcondition($fieldname, &$array, $notin=false, $string=false){
global $DB;
$condition = '';
---[cut]---
$in = $notin?' NOT IN ':' IN ';
$concat = $notin?' AND ':' OR ';
$glue = $string?"','":',';
switch($DB['TYPE']) {
case 'SQLITE3':
case 'MYSQL':
case 'POSTGRESQL':
case 'ORACLE':
default:
$items = array_chunk($array, 950);
foreach($items as $id => $values){
$condition.=!empty($condition)?')'.$concat.$fieldname.$in.'(':'';
if($string) $condition.= "'".implode($glue,$values)."'";
else $condition.= implode($glue,$values);
}
break;
}
if(zbx_empty($condition)) $condition = $string?"'-1'":'-1';
return ' ('.$fieldname.$in.'('.$condition.')) ';
}
Zabbix API代码中多次使用了DBcondition()包含用户在SQL查询中所提供的参数,在class.cuser.php的认证过程中也使用了这个函数:
class CUser extends CZBXAPI{
---[cut]---
public static function get($options=array()){
---[cut]---
// users
if(!is_null($options['users'])){
zbx_value2array($options['users']);
$sql_parts['where'][] = DBcondition('u.alias', $options['users'],
false, true);
}
---[cut]---
if(!empty($sql_parts['where'])) $sql_where.= ' AND '.implode('
AND ',$sql_parts['where']);
---[cut]---
$sql = 'SELECT DISTINCT '.$sql_select.'
FROM '.$sql_from.'
WHERE '.DBin_node('u.userid', $nodeids).
$sql_where.
$sql_order;
$res = DBselect($sql, $sql_limit);
---[cut]---
从rpc/class.czbxrpc.php文件可见可以user参数调用Zabbix API的user.authenticate方式来提供$options['users']变量:
// Authentication {{{
if(($resource == 'user') && ($action == 'authenticate')){
$sessionid = null;
$options = array(
'users' => $params['user'],
'extendoutput' => 1,
'get_access' => 1
);
$users = CUser::get($options);
$user = reset($users);
if($user['api_access'] != GROUP_API_ACCESS_ENABLED){
self::$result = array('error' => ZBX_API_ERROR_NO_AUTH, 'data' =>
'No API access');
return self::$result;
}
由于缺少过滤检查,用户无需认证就可以执行SQL注入攻击。
ZABBIX SIA zabbix <= 1.8.1
厂商补丁:
ZABBIX SIA
----------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.zabbix.org/
暂无评论