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 |
||