セキュリティパッチSUPEE-11086-考えられる問題?


24

Magentoは、M1の新しいセキュリティパッチと、M1およびM2のアップデートをリリースしました。

これらのリリースには、重要なセキュリティ修正が含まれています。「すべての販売者ができるだけ早くアップグレードすることを強くお勧めします。」

このパッチをアップグレードまたは適用する際に注意すべき問題は何ですか?

SUPEE-11086

SUPEE-11086、Magento Commerce 1.14.4.1およびOpen Source 1.9.4.1には、リモートコード実行(RCE)、クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ(CSRF)およびその他の脆弱性を閉じるのに役立つ複数のセキュリティ強化が含まれています。

Magento 2.3.1、2.2.8、および2.1.17セキュリティアップデート

これらのバージョンには、複数の機能およびセキュリティアップデートが含まれています。リスク:2.1.17、2.2.8、および2.3.1より前のMagento CommerceおよびMagento Open Sourceにとって重要です。


ライアンHoerr、私はあなたがMagentoの2.3.1、2.2.8と2.1.17セキュリティ更新プログラムのために別の質問を作成する必要があることを推測
アミットベラ

2
1.8.0 / 1.8.1のバージョンがない理由は何ですか?
ジェイソン

回答:


20

見つかった最大の問題: Mage::log()正しく動作しません。カスタムログファイルでこの関数を呼び出した場合(まだ存在しない場合)、SUPEE-11086に追加された追加の検証のために、ログはファイルに書き込まれません。


この問題は、Magento CE 1.9.4.1にも適用されます。magento.stackexchange.com/ questions
Aad Mathijssen

5
すべてのログが完全に停止しました。システムおよび例外ログでも。これに対する修正はありますか?
カルビンクリエン

Mage :: logによって書き込まれたすべてのログファイルも停止しました。M1 EE 1.14.0.2
PromInc

唯一の修正方法は、次のコードを返すことですMage::log()
Aswerer

3
6月25日の時点で、MagentoはSUPEE-11155、Magento Commerce 1.14.4.2、Magento Open Source 1.9.4.2をリリースしましたが、これらにはMage::log()メソッドの修正が含まれています。
Aad Mathijssen

11

重要:パッチ名には、パッチが適用される最新バージョンが含まれます。したがって、1.9.3.10のパッチは、1.9.3.10、1.9.3.9、...から別のパッチに適用されます。次のリリースではネーミングの改善を試みますが、APIを介してバージョンメタデータが適切に表示されるため、https://github.com/steverobbins/magedownload-cliも使用できます。


5

他の人と同様に、ログファイルはデータの書き込みを完全に停止しました。

バグの原因-データを書き込まないログファイル

app/Mage.php、彼らはこの変更を行いました。

         // Validate file extension before save. Allowed file extensions: log, txt, html, csv
         -        if (!self::helper('log')->isLogFileExtensionValid($file)) {
         +        $_allowedFileExtensions = explode(
         +            ',',
         +            (string) self::getConfig()->getNode('dev/log/allowedFileExtensions', Mage_Core_Model_Store::DEFAULT_CODE)
         +        );
         +        $logValidator = new Zend_Validate_File_Extension($_allowedFileExtensions);
         +        $logDir = self::getBaseDir('var') . DS . 'log';
         +        if (!$logValidator->isValid($logDir . DS . $file)) {
                 return;
             }

承認済みのファイル拡張子のコンマ区切りリストの構成を探しています。しかし、彼らはこのリストを構成に追加しませんでした-独自にこれを構成するためのMage Adminのオプションでさえありません。

バグの解決-データを書き込まないログファイル

これを解決するには、core_config_dataテーブル内のデータベースにエントリを作成します。

INSERT INTO core_config_data VALUES ( NULL, 'default', 0, 'dev/log/allowedFileExtensions', 'log,txt,html,csv' );

オブジェクトキャッシュもクリアすると、データが再びログファイルに書き込まれます。

ls -lrt var/log/ | tail


参考までに、この問題はすべてのセキュリティパッチが適用されたEE 1.14.2.0で発生しました。

この問題に関してMagentoサポートにチケットをオープンしましたが、技術者からの返信はまだありません。待ち行列に入っています。


このバグについて私を本当に混乱させているのは、Magentoが既に2017年後半にSUPEE-10415を介して追加したログファイル拡張子を検証する方法を持っていることです。

app/code/core/Mage/Log/Helper/Data.php

    /**
     * Checking if file extensions is allowed. If passed then return true.
     *
     * @param $file
     * @return bool
     */
    public function isLogFileExtensionValid($file)
    {
        $result = false;
        $validatedFileExtension = pathinfo($file, PATHINFO_EXTENSION);
        if ($validatedFileExtension && in_array($validatedFileExtension, $this->_allowedFileExtensions)) {
            $result = true;
        }

        return $result;
    }

ログホイールの不完全な再発明を試みる代わりに、なぜそのロジックを再利用しなかったのですか?


3
これは正しくありません。app / etc / config.xmlでallowedFileExtensionsが構成として追加されました。データベースに存在しない場合は、これが使用されます。実際の問題は、新しい検証関数が最初にファイルが既に存在するかどうかを確認しようとすることです。
ルネシェップ

@RenéSchepを指摘してくれてありがとう、私は今パッチでその変化を見る。さらに詳しく見ると、私のconfig.xmlファイルは、他のコードベースとは別のリポジトリにあります。そのため、このパッチの変更をプッシュしたときに、構成ファイルはこの変更で更新されませんでした。存在しないファイルに書き込まないことに関しては、私は自分のサーバーで動作することを個人的に見つけています。これがファイルシステム自体のフォルダ権限の問題かどうか疑問に思います。しかし、私はそのコードをあまり深く見ていません。
PromInc

私がテストしたことから、ファイルが既に存在する場合に動作するということです。isValidが最初に行うチェックは、ファイルが読み取り可能かどうかのチェックです。存在しない場合、ファイルを作成する試みは行われず、falseが返されます。
ルネシェップ

@RenéSchepでは、どうすれば修正できますか?Magentoのサポートはa ** hで苦痛です。返信が非常に遅いです。
シュカトリ

@AdarshKhatriでは、Magentoが書き込む前にファイルを作成する必要があります。touch /path/to/magento/install/html/var/log/newlogfile.log
PromInc

4

Mage::log()ログファイルが最初に存在しない場合、ログファイルへの書き込みは失敗します。これは、を呼び出すときにnot foundエラーisValidZend_Validate_File_Extensionスローする機能が原因Zend_Loader::isReadable($value)です。isValidログファイルが実際に作成された後にtry / catchに移動し、検証が失敗した場合にファイルを削除することにより、これを一時的に修正しました。

<?php
final class Mage
{
    ...
    public static function log($message, $level = null, $file = '', $forceLog = false)
    {
        ...

        try {
            if (!isset($loggers[$file])) {
                $logFile = $logDir . DS . $file;

                if (!is_dir($logDir)) {
                    mkdir($logDir);
                    chmod($logDir, 0750);
                }

                if (!file_exists($logFile)) {
                    file_put_contents($logFile, '');
                    chmod($logFile, 0640);
                }

                if (!$logValidator->isValid($logFile)) {
                    unlink($logFile);

                    return;
                }

        ...
    }
}

これは、もう少ししっかりしたものができるまで、間違いなく一時的な解決策です


3

パッチ適用1.9.3.10で考えられる問題

checking file app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
Hunk #1 FAILED at 57.
1 out of 1 hunk FAILED

パッチには次のものがあります。

diff --git app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
index 8d3c526c280..fde2ef0d45d 100644
--- app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
+++ app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
@@ -57,7 +57,7 @@ class Mage_Adminhtml_Block_Customer_Group_Edit extends Mage_Adminhtml_Block_Widg
                 'form_key' => Mage::getSingleton('core/session')->getFormKey()
             ));
         } else {
-            parent::getDeleteUrl();
+            return parent::getDeleteUrl();
         }
     }

ただし、1.9.3.10のコード(mage LTS経由)を見ると、問題のコードは表示されません。

https://github.com/OpenMage/magento-lts/blob/1.9.3.x/app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php

しかし、1.9.4には存在します

https://github.com/OpenMage/magento-lts/blob/1.9.4.x/app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php

考えられる理由は、以前に適用されていないパッチの欠落です。


4
パッチSUPEE-10975が欠落しています。
リチャードフェラーロ

mmm、私のパッチセットによると、既に適用されています:2018-12-29 23:16:30 UTC | SUPEE-10975_CE_v1.9.3.10 | CE_1.9.3.10 | v1 | 91395a467666d7381ff4f9629f52a1d406eee65a | 木11月8日13:45:47 2018 +0200 | ce-1.9.3.10-dev
ProxiBlue

最新のパッチのファイル名はPATCH_SUPEE-10975_CE_v1.9.3.10_v1-2018-11-27-09-14-43.shですが、あなたのファイルは2018年11月8日に発行されたようですが、これは最新ではないでしょう。
リチャードフェラーロ

1
PATCH_SUPEE-10975を元に戻し、再適用してから最新の再適用しました。すべて
正常に動作

これは、SUPEE-10975のバグであり、顧客グループを削除できませんでした。手動で修正したように見えるため、この新しいパッチが失敗し、これも修正されています。
ルネシェプ

3

PATCH_SUPEE-11086_CE_1.9.1.0_v1-2019-03-26-03-03-13.shを使用してMagento 1.9.0.1にパッチをインストールしようとしています

Hunk #1 FAILED at 141.
1 out of 1 hunk FAILED

「app / etc / config.xml」から次のコードを削除し、パッチを再度実行して、これを修正しました

<dev>
    <template>
        <allow_symlink>0</allow_symlink>
    </template>
</dev>

3

M1パッチの命名についても少し混乱しています。

古いパッチの場合、彼らは彼らが好きという名前SUPEE-10975 for CE 1.9.3.4-1.9.3.10SUPEE-10888 for CE 1.9.2.0-1.9.2.4 (0.07 MB)が、今、それは1つのバージョンのみに対処していますPATCH_SUPEE-11086_CE_1.9.3.10_v1.sh

現在のパッチは、マイナーリリースのすべてのリリースに対応していますか、それとも最後のリリースのみに対応していますか?

1.9.3.1ストアでテストを行い、すべてが実行されましたが、それが他のリリースで正確かどうかはわかりませんか?


ライアンありがとう!Thatsは@jasonの質問にも答えています。そのため、彼は1.7.0.2パッチを適用する必要がありますか?以前は複数のマイナーリリースに対応したパッチがあったことを知りませんでした。
セバスチャン

2
確かに@RyanHoerr?別のスレッドmagento.stackexchange.com/questions/267576/…で推定されているように、逆ではありませんか?古い命名スタイルから推測すると、PATCH_SUPEE-11086_CE_1.7.0.2_v1-2019-03-26-03-02-36.shは1.7.0.0から1.7.0.2に適用される可能性があるため、その場合、各パッチのバージョン番号が最後になります。Magentoの誰もが、この新しい命名スタイルの背後にあるロジックを確認できますか?事前にThx ..
アントワーヌコチュバ

2
@AntoineKociubaに行きます。2つの異なる1.8.1ストアを使用し、1.7.0.2パッチで4つ実行すると失敗します。-app / code / core / Mage / Usa / etc / system.xml Hunk#4が845で失敗しました-app /etc/config.xml Hunk#1が144で失敗-app / locale / en_US / Mage_Widget.csv Hunk#1が6で失敗-lib / Varien / Filter / Template.php Hunk#2が254で失敗し、1.9.1.0が実行されるスムーズに。1.9.3.1ストアと同じ:パッチ1.9.2.4は機能しますが、1.9.3.10は機能します。
セバスチャン

3
@RyanHoerrこれは間違っています。名前には、パッチが適用される最新バージョンが含まれます。したがって、1.9.3.10のパッチは、1.9.3.10、1.9.3.9、...から別のパッチに適用されます。次のリリースではネーミングの改善を試みます。また、バージョンメタデータがAPIを介して適切に表示されるため、github.com / steverobbins / magedownload-cliも使用できます。
ピョートルカミンスキー

悪い情報を削除しました。修正していただきありがとうございます。
ライアンホール

2

Magento 1.9でのロギングの中断。SUPEE-11086パッチのロギングを修正するには:

app / Mage.phpで:

-        $logValidator = new Zend_Validate_File_Extension($_allowedFileExtensions);
         $logDir = self::getBaseDir('var') . DS . 'log';
-        if (!$logValidator->isValid($logDir . DS . $file)) {
+        $validatedFileExtension = pathinfo($file, PATHINFO_EXTENSION);
+        if (!$validatedFileExtension || !in_array($validatedFileExtension, $_allowedFileExtensions)) {

リソース:https : //gist.github.com/piotrekkaminski/0596cae2d25bf467edbd3d3f03ab9f8f

これがお役に立てば幸いです!


1

M1のパッチのすべての新しいPHPファイルには、未処理のテンプレート変数があります

<?php
/**
 * {license_notice}
 *
 * @copyright   {copyright}
 * @license     {license_link}
 */

問題ではありませんが、不正確に見えます。SUPEE-10975の後も同じ気持ちでした。


1

ログファイルが既に作成されておらず、ログファイルが既に存在する場合にのみ書き出される問題に気付きました。これは次の行が原因のようです。

if (!$logValidator->isValid($logDir . DS . $file)) {

app / Mage.phpから。古いロジックを使用してこれを修正しました。したがって、上記の行を次の行に置き換えます。

if (!self::helper('log')->isLogFileExtensionValid($file)) {

0

ファイルapp / code / core / Mage / Adminhtml / Block / Customer / Group / Edit.phpのチェック#57でハンク#1が失敗しました。1ハンクのうち1つが失敗しました

パッチ10975では、この時点でエラーが発生しました。returnステートメントが欠落していました。パッチ10975を適用した後にこのバグを修正したか、変更を無視した可能性があります。このバグは11086で修正されました。このコード行がすでに調整/無視されている場合、新しいパッチを適用するときに説明したエラーが発生します。すでに自分でバグを修正している場合は、パッチファイルのブロックを削除して、パッチを再度実行してください。


1
私は仕事にSUPEE-11086のために、「あまり公式」パッチSUPEE-11043を元に戻す必要があった
のJeroenバーミューレン- MageHost

0

SUPEE-11086の使用| 上記のRyan Hoerrが提案したCE_1.9.1.0。

SUPEE-11086の適用| CE_1.9.1.0 | v1 | 3f120e6a795eed55267bd2b9164b3984913ddfc9 | 金3月22日18:40:11 2019 +0000 | 4f3f369e723fe31212cb5be9adda113f891d7f62..HEAD

CE_1.9.2.1へ

各ファイルで失敗します。

他のリポジトリにパッチを正常に適用しました。

コアコードはそのまま。

適用されたパッチのリスト

SUPEE-6788
SUPEE-7405-CE-1-9-2-2
SUPEE-7405 
SUPEE-8788 
SUPEE-9652 
SUPEE-8967 
PATCH_SUPEE-9767_CE_1.9.3.0_v2
SUPEE-10266-CE-1.9.2.4
SUPEE-10415-ce-1.9.2.1
SUPEE-10570_CE_v1.9.2.2
SUPEE-10570_CE_v1.9.2.2
SUPEE-10570_CE_v1.9.2.2
SUPEE-10752_CE_v1.9.2.4
SUPEE-10888_CE_v1.9.2.4
SUPEE-10975_CE_v1.9.3.3

明確化してくれた@AntoineKociubaに感謝します。以前のパッチがすべて正しいことを確認しましたが、1.9.2.1のインストールにPATCH_SUPEE-11086_CE_1.9.2.4_v1のように正しいパッチを適用すると、1つのハンク以外のすべてでエラーが発生します。手動パッチを提案しますか?
ベバンホルマン

どのハンクに失敗していますか?
ルネシェップ

これは解決され、レポの新しいクローンを取得する必要がありました。ありがとうルネ
ベヴァン・ホルマン

0

M1.9.3.7パッチPATCH_SUPEE-11086_CE_1.9.3.10_v1.shの問題

checking file app/Mage.php
checking file app/code/core/Mage/Admin/Model/Session.php
checking file app/code/core/Mage/Adminhtml/Block/Api/Buttons.php
checking file app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit.php
checking file app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
Hunk #1 FAILED at 57.
1 out of 1 hunk FAILED
checking file app/code/core/Mage/Adminhtml/Block/Permissions/Buttons.php
checking file app/code/core/Mage/Adminhtml/Block/System/Design/Edit.php
checking file app/code/core/Mage/Adminhtml/Block/System/Store/Edit.php
checking file app/code/core/Mage/Adminhtml/Controller/Action.php
checking file app/code/core/Mage/Adminhtml/Helper/Data.php
checking file app/code/core/Mage/Adminhtml/Model/Email/PathValidator.php
checking file app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
Hunk #1 FAILED at 69.
1 out of 1 hunk FAILED

app / code / core / Mage / Adminhtml / Block / Customer / Group / Edit.phpとして表示できませんでした。パッチSUPEE-11043を適用したと仮定しますが、SUPEE-11086はまだ行っていないことを前提としています。
ルネシェップ

0

SUPEE-11086新しくダウンロードされ、完全にパッチが適用されたバージョンの1.9.1.1に適用しようとしたときに問題が存在することを確認できます。MPERF-10509-CE-2019-03-13-06-31-24.diff

次のファイルのパッチは失敗します。

app/code/core/Mage/Adminhtml/Block/Api/Buttons.php
app/code/core/Mage/Adminhtml/Block/Permissions/Buttons.php
app/code/core/Mage/Api2/Block/Adminhtml/Roles/Buttons.php

これらのファイルには、v1.9.1.1ダウンロードの初期コミットからの変更はありません。1.9.2.4インストールからファイルをコピーし、SUPEE-11086を適用し、v1.9.4.1ソースと比較して、それらが一致することを確認します。

Magento v1.9.1.1 少し問題のある子のようです...


1.9.2.4パッチと1.9.1.0パッチを比較しました。そして、これらのパッチの違いはあなたが言及した3つのファイルのようです。したがって、1.9.1.1では1.9.1.0パッチを使用する必要があるようです。
ルネシェップ

0

SUPEE-11086新しくダウンロードされ、完全にパッチが適用されたバージョンの1.9.3.0に適用しようとしたときに問題が存在することを確認できます。これには、管理ダッシュボードチャートパッチまでが含まれます。MPERF-10509-CE-2019-03-13-06-31-24.diff

以下のノードがないため、app / config.xmlでパッチが失敗します。SUPEE-11086を実行する前にノードを追加します。問題はありません。

<config>
    </default>
        <dev>
            <template>
                <allow_symlink>0</allow_symlink>
            </template>
        </dev>
    </default>
</config>

0

モデルに新しい問題を発見しました Mage_Eav_Model_Attribute_Data_File

顧客エンティティで、ファイルアップロード属性を追加しました。これらの属性は必須ではありません。新しいファイルをアップロードせずにファイルを削除する場合、属性値は新しいメソッドで検証されないため、削除は機能しません。setAttributeValidationAsPassed()

私がやったクイックフィックスはメソッドにあります validateValue($value)

if (!$attribute->getIsRequired() && !$toUpload) {
    $attribute->setAttributeValidationAsPassed(); // this new line is added 
    return true;
}

この問題はすべてのMagento 1.xリリースに存在するようです。 SUPEE-11086


0

Magento 1.9.3.1

パッチPATCH_SUPEE-11086_CE_1.9.3.10_v1.shを使用してCE 1.9.3.1にパッチを適用しようとしたときに問題が発生しました。

checking file app/code/core/Mage/Adminhtml/Model/LayoutUpdate/Validator.php
Hunk #1 FAILED at 69.
1 out of 1 hunk FAILED
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.