XOOPS全バージョンについてのセキュリティホール情報です。
引用符についての小さなミスが大きな問題となっています。
(どういう攻撃を受けるかは、ここでは一切書きません)
XOOPSのどのバージョンをご利用でも、修正方法はほぼ一緒です。
class/criteria.php を開いて、342行目前後から該当部分を探し、打ち消し線の箇所を削除(またはコメントアウト)してください。
JP版では2.0.10.1-JP未満、本家版では2.0.12未満の全バージョンで要修正です。
2.0.10JPなどに上げるのが嫌だ、という人なら、ぜひ手で当ててください。
簡単なパッチのはずです。
これは緊急の警告と思っていただいて構いません。
/**
* Make a sql condition string
*
* @return string
**/
function render() {
if ( is_numeric($this->value) || in_array(strtoupper($this->operator), array('IN', 'NOT IN'))) {
$value = $this->value;
} else {
if ( '' === ($value = trim($this->value)) ) {
return '';
}
if ( (substr($value, 0, 1) != '`') && (substr($value, -1) != '`') ) {
$value = "'$value'";
}
}
$clause = (!empty($this->prefix) ? "{$this->prefix}." : "") . $this->column;
if ( !empty($this->function) ) {
$clause = sprintf($this->function, $clause);
}
$clause .= " {$this->operator} $value";
return $clause;
}