CVE-2018-7584 脆弱性対応 AWS Amazon Linux で PHP を yum update できない

こんにちは。

先日 CVE-2018-7584 で PHP の緊急アップデートが発表されました。

NVD - CVE-2018-7584

記事執筆時の最新である PHP 7.1.16 にアップデートすることで対応が可能ですが、 AWS 上の Amazon Linuxyum update php を実施しても 候補がない と言われ少しだけはまったので記事にしました。

候補がない!

発表を受けて、早速アップデートを確認しました。

# yum update php
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main                                                                                                                                                | 2.1 kB  00:00:00     
amzn-updates                                                                                                                                             | 2.5 kB  00:00:00     
32 packages excluded due to repository priority protections
No packages marked for update

あれ?ない?

ここで思い出しました、PHP 7系は別リポジトリだと。

--enablerepo=remi71-php が必要じゃないかと気づきます。

# yum update --enablerepo=remi-php71 php
Loaded plugins: priorities, update-motd, upgrade-helper
108 packages excluded due to repository priority protections
No packages marked for update

んんん?まだ無理なのか。

ここで、Amazon Linuxでは最新のPHPが提供されてないんじゃないかと疑います。

# yum list | grep php71 | grep 7.1.16-1
php71-php.x86_64                      7.1.16-1.el6.remi             remi-safe   
php71-php-bcmath.x86_64               7.1.16-1.el6.remi             remi-safe   
php71-php-cli.x86_64                  7.1.16-1.el6.remi             remi-safe   
php71-php-common.x86_64               7.1.16-1.el6.remi             remi-safe   
php71-php-dba.x86_64                  7.1.16-1.el6.remi             remi-safe   
php71-php-dbg.x86_64                  7.1.16-1.el6.remi             remi-safe   
php71-php-devel.x86_64                7.1.16-1.el6.remi             remi-safe   
php71-php-embedded.x86_64             7.1.16-1.el6.remi             remi-safe   
php71-php-enchant.x86_64              7.1.16-1.el6.remi             remi-safe   
php71-php-fpm.x86_64                  7.1.16-1.el6.remi             remi-safe   
php71-php-gd.x86_64                   7.1.16-1.el6.remi             remi-safe   
php71-php-gmp.x86_64                  7.1.16-1.el6.remi             remi-safe   
php71-php-imap.x86_64                 7.1.16-1.el6.remi             remi-safe   
php71-php-interbase.x86_64            7.1.16-1.el6.remi             remi-safe   
php71-php-intl.x86_64                 7.1.16-1.el6.remi             remi-safe   
php71-php-json.x86_64                 7.1.16-1.el6.remi             remi-safe   
php71-php-ldap.x86_64                 7.1.16-1.el6.remi             remi-safe   
php71-php-litespeed.x86_64            7.1.16-1.el6.remi             remi-safe   
php71-php-mbstring.x86_64             7.1.16-1.el6.remi             remi-safe   
php71-php-mcrypt.x86_64               7.1.16-1.el6.remi             remi-safe   
php71-php-mysqlnd.x86_64              7.1.16-1.el6.remi             remi-safe   
php71-php-oci8.x86_64                 7.1.16-1.el6.remi             remi-safe   
php71-php-odbc.x86_64                 7.1.16-1.el6.remi             remi-safe   
php71-php-opcache.x86_64              7.1.16-1.el6.remi             remi-safe   
php71-php-pdo.x86_64                  7.1.16-1.el6.remi             remi-safe   
php71-php-pdo-dblib.x86_64            7.1.16-1.el6.remi             remi-safe   
php71-php-pgsql.x86_64                7.1.16-1.el6.remi             remi-safe   
php71-php-process.x86_64              7.1.16-1.el6.remi             remi-safe   
php71-php-pspell.x86_64               7.1.16-1.el6.remi             remi-safe   
php71-php-recode.x86_64               7.1.16-1.el6.remi             remi-safe   
php71-php-snmp.x86_64                 7.1.16-1.el6.remi             remi-safe   
php71-php-soap.x86_64                 7.1.16-1.el6.remi             remi-safe   
php71-php-tidy.x86_64                 7.1.16-1.el6.remi             remi-safe   
php71-php-xml.x86_64                  7.1.16-1.el6.remi             remi-safe   
php71-php-xmlrpc.x86_64               7.1.16-1.el6.remi             remi-safe 

あるじゃないかー、なぜだ・・・。

原因判明!

ここで、該当のサーバーをインストールした時に利用した Ansible のコードを確認します。

すると、

- name: Install php
  yum:
    name: '{{ php.install_packages }}'
    enablerepo: '{{ php.enablerepo }}'
    disablerepo: '{{ php.disablerepo }}'
    state: installed

enablerepo はいいとして、 disablerepo も設定されていることを発見。

php.disablerepo の設定を確認すると、 disablerepo: 'amzn-main' となっているではありませんか。

恐らく、このときもはまったんだろうな、と思いながら再度実行してみました。

リトライ!

結果・・・、

# yum update --disablerepo=amzn-main --enablerepo=remi-php71 php
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-updates                                                                                                                                             | 2.5 kB  00:00:00     
6 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:7.1.10-1.el6.remi will be updated
---> Package php.x86_64 0:7.1.16-1.el6.remi will be an update
--> Processing Dependency: php-common(x86-64) = 7.1.16-1.el6.remi for package: php-7.1.16-1.el6.remi.x86_64
--> Processing Dependency: php-cli(x86-64) = 7.1.16-1.el6.remi for package: php-7.1.16-1.el6.remi.x86_64
--> Running transaction check
---> Package php-cli.x86_64 0:7.1.10-1.el6.remi will be updated
--> Processing Dependency: php-cli(x86-64) = 7.1.10-1.el6.remi for package: php-devel-7.1.10-1.el6.remi.x86_64
---> Package php-cli.x86_64 0:7.1.16-1.el6.remi will be an update
---> Package php-common.x86_64 0:7.1.10-1.el6.remi will be updated
--> Processing Dependency: php-common(x86-64) = 7.1.10-1.el6.remi for package: php-xml-7.1.10-1.el6.remi.x86_64
--> Processing Dependency: php-common(x86-64) = 7.1.10-1.el6.remi for package: php-gd-7.1.10-1.el6.remi.x86_64
--> Processing Dependency: php-common(x86-64) = 7.1.10-1.el6.remi for package: php-mbstring-7.1.10-1.el6.remi.x86_64
--> Processing Dependency: php-common(x86-64) = 7.1.10-1.el6.remi for package: php-json-7.1.10-1.el6.remi.x86_64
--> Processing Dependency: php-common(x86-64) = 7.1.10-1.el6.remi for package: php-process-7.1.10-1.el6.remi.x86_64
--> Processing Dependency: php-common(x86-64) = 7.1.10-1.el6.remi for package: php-pdo-7.1.10-1.el6.remi.x86_64
--> Processing Dependency: php-common(x86-64) = 7.1.10-1.el6.remi for package: php-fpm-7.1.10-1.el6.remi.x86_64
---> Package php-common.x86_64 0:7.1.16-1.el6.remi will be an update
--> Running transaction check
---> Package php-devel.x86_64 0:7.1.10-1.el6.remi will be updated
---> Package php-devel.x86_64 0:7.1.16-1.el6.remi will be an update
---> Package php-fpm.x86_64 0:7.1.10-1.el6.remi will be updated
---> Package php-fpm.x86_64 0:7.1.16-1.el6.remi will be an update
---> Package php-gd.x86_64 0:7.1.10-1.el6.remi will be updated
---> Package php-gd.x86_64 0:7.1.16-1.el6.remi will be an update
---> Package php-json.x86_64 0:7.1.10-1.el6.remi will be updated
---> Package php-json.x86_64 0:7.1.16-1.el6.remi will be an update
---> Package php-mbstring.x86_64 0:7.1.10-1.el6.remi will be updated
---> Package php-mbstring.x86_64 0:7.1.16-1.el6.remi will be an update
---> Package php-pdo.x86_64 0:7.1.10-1.el6.remi will be updated
--> Processing Dependency: php-pdo(x86-64) = 7.1.10-1.el6.remi for package: php-mysqlnd-7.1.10-1.el6.remi.x86_64
---> Package php-pdo.x86_64 0:7.1.16-1.el6.remi will be an update
---> Package php-process.x86_64 0:7.1.10-1.el6.remi will be updated
---> Package php-process.x86_64 0:7.1.16-1.el6.remi will be an update
---> Package php-xml.x86_64 0:7.1.10-1.el6.remi will be updated
---> Package php-xml.x86_64 0:7.1.16-1.el6.remi will be an update
--> Running transaction check
---> Package php-mysqlnd.x86_64 0:7.1.10-1.el6.remi will be updated
---> Package php-mysqlnd.x86_64 0:7.1.16-1.el6.remi will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================================================================================
 Package                                    Arch                                 Version                                         Repository                                Size
================================================================================================================================================================================
Updating:
 php                                        x86_64                               7.1.16-1.el6.remi                               remi-php71                               2.8 M
Updating for dependencies:
 php-cli                                    x86_64                               7.1.16-1.el6.remi                               remi-php71                               4.1 M
 php-common                                 x86_64                               7.1.16-1.el6.remi                               remi-php71                               1.0 M
 php-devel                                  x86_64                               7.1.16-1.el6.remi                               remi-php71                               1.3 M
 php-fpm                                    x86_64                               7.1.16-1.el6.remi                               remi-php71                               1.4 M
 php-gd                                     x86_64                               7.1.16-1.el6.remi                               remi-php71                                70 k
 php-json                                   x86_64                               7.1.16-1.el6.remi                               remi-php71                                57 k
 php-mbstring                               x86_64                               7.1.16-1.el6.remi                               remi-php71                               980 k
 php-mysqlnd                                x86_64                               7.1.16-1.el6.remi                               remi-php71                               206 k
 php-pdo                                    x86_64                               7.1.16-1.el6.remi                               remi-php71                               109 k
 php-process                                x86_64                               7.1.16-1.el6.remi                               remi-php71                                64 k
 php-xml                                    x86_64                               7.1.16-1.el6.remi                               remi-php71                               177 k

Transaction Summary
================================================================================================================================================================================
Upgrade  1 Package (+11 Dependent packages)

Total download size: 12 M

おー、いけました!

あとがき

この脆弱性は緊急となりますので、アプリケーションに影響がない場合は即時アップデートをおすすめします。

それでは次回の記事でお会いしましょう。

norikazum