ブログトップ 記事一覧 ログイン 無料ブログ開設

piyolog RSSフィード

2016-12-27

PHPMailerの脆弱性 CVE-2016-10033/CVE-2016-10045についてまとめてみた

| 01:01 |  PHPMailerの脆弱性 CVE-2016-10033/CVE-2016-10045についてまとめてみたを含むブックマーク

2016年12月25日、PHPのメール送信ライブラリPHPMailerに任意のコード実行可能な脆弱性が確認されたとして情報が公開されました。ここでは脆弱性の関連情報をまとめます。

脆弱性の概要

対象PHPMailer
CVECVE-2016-10033
CVE-2016-10045
影響RCE
重要度Critical(発見者)
緊急(JVN)
CVSSJPCERT/CC評価
CVSSv3:5.4 (CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N)
CVSSv2:5.5 (AV:N/AC:L/Au:S/C:P/I:P/A:N)
PoCインターネット上に公開済
CVE-2016-10033⇒2016/12/26
CVE-2016-10045⇒2016/12/28
発見者/報告者CVE-2016-10033:Dawid Golunski氏(@dawid_golunski)
CVE-2016-10045:Dawid Golunski氏(@dawid_golunski) / Paul Buonopane氏(@Zenexer)
PHPMailer
タイムライン
日時出来事
2016年12月24日CVE-2016-10033を修正したPHPMailer 5.2.18が公開
2016年12月25日Dawid Golunski氏がCVE-2016-10033の脆弱性情報公開
2016年12月26日マイナーアップデートをしたPHPMailer 5.2.19が公開
2016年12月27日Dawid Golunski氏が脆弱性の実証コード公開
2016年12月28日Dawid Golunski氏が修正は不完全でバイパス可能として新たにCVE-2016-10045の脆弱性情報と実証コード公開
CVE-2016-10045を修正したPHPMailer 5.2.20が公開
マイナーアップデートをしたPHPMailer 5.2.21が公開

脆弱性情報

Dawid Golunski氏の公開情報

JVN
SNAS

影響範囲

影響を受けるPHPMailerのバージョン

CVE-2016-10033

  • PHPMailer 5.2.18未満のバージョン

Version 5.2.18 (December 24th 2016)

SECURITY Critical security update for CVE-2016-10033 please update now! Thanks to Dawid Golunski.

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

CVE-2016-10045

  • PHPMailer 5.2.20未満のバージョン

Version 5.2.20 (December 28th 2016)

SECURITY Critical security update for CVE-2016-10045 please update now! Thanks to Dawid Golunski and Paul Buonopane (@Zenexer).

https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md
影響を受けるCMS

複数のソフトウェアでPHPMailerが利用されており、有名なものでは次の名前が挙げられている。対象のリストにYiiが含まれていたが既に依存関係にない。またその後更新された情報で、WordpressDrupalJoomla!のコア部分では脆弱性の影響を受けないことが発表された。

対策

ソフトウェア脆弱性情報等
PHPMailerhttps://github.com/PHPMailer/PHPMailer/commit/4835657cd639fbd09afd33307cef164edf807cdc
WordPressUpdate PHPMailer to 5.2.19
Critical Vulnerability in PHPMailer. Affects WP Core
DrupalPHPmailer 3rd party library -- DRUPAL-SA-PSA-2016-004
Joomla!PHPMailer Security Advisory
Yii(対象外)Security issue with PHPmailer #4120

脆弱性実証コード(PoC)

Dawid Golunski氏

CVE-2016-10033

CVE-2016-10045

opsxcq氏

CVE-2016-10033

実証コードが動作する環境・条件
  • メール送信の際にFROMに信頼できないデータが入る実装がされている。
  • 次の組み合わせで「影響あり」に該当する。
PHPのバージョンPCREの有無影響の有無
5.2.0未満あり影響あり
無し影響あり
5.2.0以上あり影響あり
無し影響無し

very specific conditionをめぐる経緯

Dawid Golunski氏に先んじてopsxcq氏が公開したPoCでは「非常に特殊な条件が満たされた場合にリモートのサーバーに対し侵害が可能となる」と説明されていた。

PHPMailer before its version 5.2.18 suffer from a vulnerability that could lead to remote code execution (RCE). If a very specific condition is met, a remote server can be compromised. This condition is specified in Vulnerable Code section bellow.

「非常に特殊な条件」は次の内容とされていた。

* PHPMailer < 5.2.18
* Compile PHP without PCRE.
* PHP version must be inferior to 5.2.0.

あるいは$patternselectに「noregex」が指定された場合がこの条件に該当*1する模様。opsxcq氏が公開した脆弱性の検証環境でもその指定が書き加えられている。

一方でその後公開された Dawid Golunski氏のPoCではそのような条件記述は見受けられない。さらにichikawayさんの調査によればPCREが入ったPHP5.2以上の環境で抜けるパターンが存在することを指摘している。

その後、Dawid Golunski氏のPoCではopsxcq氏が記載した「非常に特殊な条件」に係わらず影響を受けることが確認されたためか、これに関する記述がopsxcq氏のReadmeより削除された。Exploitなども更新されている。

CVE-2016-10033の調査、まとめ、注意喚起など

更新履歴

  • 2016年12月27日 PM 新規作成
  • 2016年12月28日 AM 続報追記
  • 2016年12月28日 PM CVE-2016-10045に関する情報を追記
  • 2016年12月29日 PM 続報追記

*1メールアドレスに「@」が存在しているかのみ検証される。