PHPの脆弱性に対応した CentOS 7用パッケージ

 
CVE-2026-109618 CVE-2026-109619
の脆弱性、通称 php2shell の不具合ですが、
ちゃんとサポート中の Linuxを利用していれば、PHPのパッケージ更新だけで行きます。
しかし、CentOS 7は、サポート切れにも係わらず、多くのサイトで未だに使用されています。

そして、徹夜でソースから入れて互換性をとるとか、やっています。

でも、そんな CentOS 7ですが、やはり、脆弱性を直したパッケージを作る有志がいました。

今回は、その中の1つをソースからビルドまでやってみました。
こういう環境を持っていたら、今後同じ様な脆弱性が出ても直せる可能性が高くなります。

では、いってみましょう。

------------------------------

https://github.com/viniciusbossle/php74-el7-php2shell
このページの内容を元に進めます。

 なお、
  yum install -y --enablerepo=remi,remi-php74 libicu73-devel  
  yum install -y --exclude=libwebp-devel --enablerepo=remi gd3php-devel
 がどうしても通らない環境の場合もあります。
 その場合は、ビルド不可能なので、
 本家からバイナリの rpmをダウンロードしてインストールして妥協してください。
 でもインチキしてバイナリrpmを全部入れたい人はこちら。

 ( https://github.com/viniciusbossle/php74-el7-php2shell/tree/main/repo/7/x86_64 )
 Dockerなんかで無理矢理環境を合わせたらビルド出来る可能性もあります。

root ユーザーで入る。
/etc/yum.repos.d/CentOS-Base.repo
を開いて、
mirrorlist の行をコメントにして
baseurl=https://vault.centos.org/7.9.2009/os/$basearch/
baseurl=https://vault.centos.org/7.9.2009/updates/$basearch/
baseurl=https://vault.centos.org/7.9.2009/extras/$basearch/
baseurl=https://vault.centos.org/7.9.2009/centosplus/$basearch/
にそれぞれ変更する。
yum clean all
yum -y update
で、最新に更新する。
reboot で再起動して、また rootに入る。

// epelのレポジトリを入れる
yum install -y epel-release
// remiのレポジトリを入れる
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm


// rpmbuild, wget を入れる
yum install -y rpm-build wget
// ソースを入れる
wget https://intaro.work/php-7.4.33-31.el7.src.rpm(私のローカルサイト)
(本家から wget https://github.com/viniciusbossle/php74-el7-php2shell/raw/refs/heads/main/repo/7/SRPMS/php-7.4.33-31.el7.src.rpm)
rpm -ivh php-7.4.33-31.el7.src.rpm

// まずは難易度の高い前提ソフトから入れます
yum install -y --enablerepo=remi,remi-php74 libicu73-devel
yum install -y --exclude=libwebp-devel --enablerepo=remi gd3php-devel


// 残りの必要な前提ソフトを入れる
yum install -y bzip2-devel libcurl-devel httpd-devel pam-devel openssl-devel libedit-devel libtool-ltdl-devel systemtap-sdt-devel libacl-devel openldap-devel postgresql-devel libdb-devel gmp-devel unixODBC-devel net-snmp-devel tokyocabinet-devel gdbm-devel aspell-devel libffi-devel

yum install --enablerepo=remi -y libc-client-devel firebird-devel oniguruma5php-devel lmdb-devel libtidy-devel freetds-devel uw-imap-devel libc-client oniguruma5php-devel lmdb-devel libtidy-devel freetds-devel enchant-devel libsodium-devel sqlite-devel libxslt-devel

yum install -y systemd-devel


// 構築する
cd ~/rpmbuild/SPECS
rpmbuild -ba php74.spec
// ビルドが終わるまで待つ

// インストールと起動
cd ~/rpmbuild/RPMS/x86_64
(phpが入っている場合は、yum -y remove 'php-*' yum -y remove 'php74*' 等で消しておく)
yum -y install php-*.rpm
systemctl enable php-fpm
systemctl start php-fpm
systemctl restart httpd