Skip to content

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

@nobuhiko

Description

@nobuhiko

概要

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

深刻度: Medium / Low

脆弱性詳細

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

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

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エンコード後に行われており、エンコード前の改行が残る可能性

修正案:

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)
$where = 'category_id = '.SC_Utils_Ex::sfQuoteSmart($parent_category_id);

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

修正案: プレースホルダベースのクエリに変更

$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)

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

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

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

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

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

修正案:

libxml_disable_entity_loader(true);
$this->objDOM = new DOMDocument();
@$this->objDOM->loadHTML($source);

影響範囲

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions