EC-CUBE / EC-CUBE/ec-cube2

[Security] その他: メールヘッダインジェクション・非推奨関数・XXE対策

Open
#1,340 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
PHP
Stars
92
Forks
97
Avg merge
4d 2h
Merged PRs (30d)
9

Description

## 概要

メール送信機能のヘッダインジェクション、非推奨のSQL関数の使用、XML処理における外部エンティティ無効化の不足など、複数の軽微なセキュリティ改善事項が存在します。

## 深刻度: Medium / Low

## 脆弱性詳細

### 1. [Medium] メールヘッダインジェクション

**ファイル:** `data/class/SC_SendMail.php` (L150-151)

```php
public function setSubject($subject)
{
$this->subject = mb_encode_mimeheader($subject, 'ISO-2022-JP-MS', 'B', "\n");
$this->subject = str_replace(["\r\n", "\r"], "\n", $this->subject);
}
```

**問題点:** 改行除去がMIMEエンコード後に行われており、エンコード前の改行が残る可能性

**修正案:**
```php
public function setSubject($subject)
{
$subject = str_replace(["\r\n", "\r", "\n"], ' ', $subject);
$this->subject = mb_encode_mimeheader($subject, 'ISO-2022-JP-MS', 'B', "\n");
}
```

### 2. [Low] 非推奨の `sfQuoteSmart()` 関数使用

**ファイル:**
- `data/class/util/SC_Utils.php` (L1203-1214)
- `data/class/helper/SC_Helper_DB.php` (L1144-1174)
- `data/class/pages/admin/products/LC_Page_Admin_Products_ProductRank.php` (L177, 186, 198)
- `data/class/pages/admin/products/LC_Page_Admin_Products_ClassCategory.php` (L308, 323, 338)

```php
$where = 'category_id = '.SC_Utils_Ex::sfQuoteSmart($parent_category_id);
```

**問題点:** プレースホルダではなく手動エスケープによるSQL構築

**修正案:** プレースホルダベースのクエリに変更
```php
$objDb->sfRankUp('dtb_product_categories', 'product_id', $product_id,
'category_id = ?', [$parent_category_id]);
```

### 3. [Low] Owner's Store のCSRF保護無効化

**ファイル:** `data/class/pages/upgrade/LC_Page_Upgrade_Base.php` (L107-114)

```php
public function doValidToken($is_admin = false)
{
// nothing.
}
```

**修正案:** 代替のCSRF保護(署名付きトークン等)を実装

### 4. [Low] DOMDocument での外部エンティティ無効化未設定

**ファイル:** `data/class/helper/SC_Helper_Transform.php` (L55)

```php
$this->objDOM = new DOMDocument();
@$this->objDOM->loadHTML($source);
```

**修正案:**
```php
libxml_disable_entity_loader(true);
$this->objDOM = new DOMDocument();
@$this->objDOM->loadHTML($source);
```

## 影響範囲

メールスパム送信、SQLインジェクションのリスク(限定的)、XXE攻撃(限定的)。

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.