[memo] WordPress に patch を当てる Update PHPMailer 暫定

「なんか大変そうな感じですが、WordPress に patch を当てるって具体的にどうするんですか」って聞かれたので手順だけメモしときます。

以下の patch 自体 final fix ではないので状況に応じて適時追いかけて下さい。

patch を当てる手順であって脆弱性対策ではないので要注意。 (このメモの公開時点)

適用する前にテスト環境で動作チェックしてね。

恐らく WordPress PHPMailer 絡みの更新が来ると思うので自信がなければ自己責任で対応しましょう。


https://core.trac.wordpress.org/ticket/39397

https://core.trac.wordpress.org/ticket/37210

https://isc.sans.edu/forums/diary/Critical+security+update+PHPMailer+5218+CVE201610033/21855/

https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md

バージョニングしていないなら、

必要に応じて事前に元ファイルをコピーしておいて、

[wpuser@example ~]# cp /var/www/vhosts/example.com/public_html/wordpress/wp-includes/class-smtp.php /var/www/vhosts/example.com/public_html/wordpress/wp-includes/class-smtp.php.`date +%Y%m%d`

[wpuser@example ~]# cp /var/www/vhosts/example.com/public_html/wordpress/wp-includes/class-phpmailer.php /var/www/vhosts/example.com/public_html/wordpress/wp-includes/class-phpmailer.php.`date +%Y%m%d`

とか。

例えば以下のパッチを取得

[wpuser@example ~]# cd /var/www/vhosts/example.com/public_html/wordpress/wp-includes/

[wpuser@example wp-includes]# wget https://core.trac.wordpress.org/raw-attachment/ticket/39397/39397.patch

--2016-12-27 18:49:14--  https://core.trac.wordpress.org/raw-attachment/ticket/39397/39397.patch

core.trac.wordpress.org をDNSに問いあわせています... 66.155.40.248

core.trac.wordpress.org|66.155.40.248|:443 に接続しています... 接続しました。

HTTP による接続要求を送信しました、応答を待っています... 200 Ok

長さ: 43332 (42K) [text/x-diff]

`39397.patch' に保存中


100%[======================================>] 43,332       199K/s 時間 0.2s


2016-12-27 18:49:15 (199 KB/s) - `39397.patch' へ保存完了 [43332/43332]


取得したパッチを適用

[wpuser@example wp-includes]# patch -u < 39397.patch

(Stripping trailing CRs from patch.)

patching file class-smtp.php

(Stripping trailing CRs from patch.)

patching file class-phpmailer.php

[wpuser@example wp-includes]# diff -s -u class-smtp.php.20161227 class-smtp.php | less

[wpuser@example wp-includes]# diff -s -u class-phpmailer.php.20161227 class-phpmailer.php | less


問題がありそうだったら


[wpuser@example wp-includes]# patch -u -R < 39397.patch

[wpuser@example wp-includes]# rm -f 39397.patch

[wpuser@example wp-includes]# rm -f class-smtp.php.20161227

[wpuser@example wp-includes]# rm -f class-phpmailer.php.20161227

で patch を当てる前の状態に戻せます。

ユーザーでなく root で作業していた場合は、

[root@example ]# chown -R uid:gid /var/www/vhosts/example.com/public_html/wordpress/wp-includes/

しておかないと更新できないかな。

WordPress のアップデートを適用する際にはリバースパッチで副作用のないようにしましょう。

バックアップ関連のプラグインで巻き戻す手もあるけれど。

コメント

このブログの人気の投稿

[memo] LibreOffice バージョン: 5.2.6.2 Calc でエラーがでた BASIC を読み込む際の エラー:一般的なエラー.一般的な I/O エラー。

Amazonプライム会員の無料体験から継続しない手続きをする際「自動移行しない」が表示されないので悩んだ。(結果として自動更新をキャンセルする事ができました)

[memo] go get でインストールしたが利用しなくなったパッケージを削除する