Apache2.4.58の脆弱性対応

このブログで使用しているApache 2.4.58に脆弱性勧告があったので、アップデートを行った。

脆弱性の内容

Apache 2.4.58で以下の脆弱性が確認されている。

  • CVE-2024-27316
    • CVSS: 7.5

HTTP/2 の受信ヘッダが制限を超えると、情報量の多い HTTP 413 レスポンスを生成するために nghttp2 に一時的にバッファリングされる。クライアントがヘッダの送信を止めない場合、これはメモリの枯渇につながります。

  • CVE-2024-38474
    • CVSS: 9.8

Apache HTTP Server 2.4.59 以前のバージョンでは、mod_rewrite における置換エンコーディングの問題により、攻撃者は設定で許可されたディレクトリにあるスクリプトを実行することができます。この問題を修正したバージョン 2.4.60 へのアップグレードを推奨します。安全でないキャプチャと置換を行ういくつかの RewriteRules は、書き換えフラグ 「UnsafeAllow3F」 が指定されない限り失敗するようになりました。

  • CVE-2024-38475
    • CVSS: 9.1

Apache HTTP Server 2.4.59 以前の mod_rewrite における出力の不適切なエスケープにより、 攻撃者が URL をサーバによって提供されることは許可されているが、 どの URL からも意図的/直接的に到達可能ではないファイルシステムの場所に マップすることが可能となり、コードの実行やソースコードの漏洩を 引き起こす可能性があります。サーバコンテキストの置換で、置換の最初のセグメントとして後方参照または変数を使用しているものが影響を受けます。 いくつかの安全でない RewiteRules は、この変更によって破壊され、書き換えフラグ 「UnsafePrefixStat」 を使用することで、置換が適切に制約されていることを確認した上で、元に戻すことができます。

  • CVE-2024-38476
    • CVSS: 9.8

Apache HTTP Server 2.4.59 およびそれ以前のバージョンには、バックエンドアプリケーションを経由した情報漏洩、SSRF、ローカルスクリプト実行の脆弱性が存在します。この問題を修正したバージョン 2.4.60 へのアップグレードを推奨します。

  • CVE-2024-38477
    • CVSS: 7.5

Apache HTTP サーバ 2.4.59 以前のバージョンでは、mod_proxy のヌルポインタ参照により、攻撃者が悪意のあるリクエストを経由してサーバをクラッシュさせる可能性があります。この問題を修正したバージョン 2.4.60 へのアップグレードを推奨します。

  • CVE-2024-40898
    • CVSS: 7.5

Windows 上の Apache HTTP サーバにおいて、mod_rewrite を server/vhost コンテキストに設定した場合に SSRF が発生し、悪意のあるリクエストを経由して NTML ハッシュが悪意のあるサーバに漏洩する可能性があります。この問題を修正したバージョン 2.4.62 へのアップグレードを推奨します。

※CVE:共通脆弱性識別子。個別製品中の脆弱性を対象として、MITRE社が採番している脆弱性の識別子。

※CVSS:緊急度の評価。0.0~10.0まであり、0~3.9が注意、4.0~6.9が警告、7.0以上が危険とされる。

各脆弱性の簡易説明

脆弱性攻撃の影響
CVE-2024-38474mod_rewriteによる任意コード実行 / スクリプト漏洩
CVE-2024-38475mod_rewriteの不正なマッピングによりコード実行
CVE-2024-38476レスポンスヘッダー改ざんによる情報漏洩 / SSRF
CVE-2024-38477mod_proxyにおけるDoS(クラッシュ)
CVE-2024-27316HTTP/2におけるメモリ枯渇DoS
CVE-2024-40898Windows環境でのSSRFによるNTLMハッシュ漏洩

アップデート手順

現行バージョン確認

apache2 -v

Apacheのビルドアップ

必要パッケージのインストール

sudo apt install -y build-essential libpcre3-dev libssl-dev libapr1-dev libaprutil1-dev

Apacheのダウンロードとインストール

cd /usr/local/src
wget https://downloads.apache.org/httpd/httpd-2.4.63.tar.gz
 tar xzf httpd-2.4.63.tar.gz
cd httpd-2.4.63
./configure --enable-so --enable-ssl --enable-rewrite --with-mpm=prefork
make
sudo make install

動作確認

/usr/local/apache2/bin/httpd -v

httpd.conf 設定

cd /usr/local/apache2/conf/
vi httpd.conf
Listen 80
<VirtualHost *:80>
    ServerName blogontec.com
    Redirect permanent / https://blogontec.com/
</VirtualHost>

Listen 443
<VirtualHost *:443>
    ServerName blogontec.com
    DocumentRoot "/var/www/wordpress"
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/blogontec.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/blogontec.com/privkey.pem
    <Directory "/var/www/wordpress">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

PHPのビルドとApache連携

依存パッケージのインストール

sudo apt install -y libjpeg-dev libpng-dev libwebp-dev libxpm-dev libfreetype-dev libzip-dev libcurl4-openssl-dev libonig-dev libicu-dev

PHPのダウンロードとビルド

cd /usr/local/src
wget https://www.php.net/distributions/php-8.2.18.tar.gz
 tar xzf php-8.2.18.tar.gz
cd php-8.2.18
./configure \
  --with-apxs2=/usr/local/apache2/bin/apxs \
  --with-openssl \
  --with-zlib \
  --with-mysqli \
  --with-pdo-mysql \
  --with-curl \
  --enable-mbstring \
  --enable-exif \
  --enable-intl \
  --enable-gd \
  --with-external-gd \
  --with-jpeg \
  --with-webp \
  --with-xpm \
  --with-freetype \
  --with-zip
make -j$(nproc)
sudo make install

Apache設定への組み込み(httpd.conf 追記)

cd /usr/local/apache2/conf/
vi httpd.conf
LoadModule php_module modules/libphp.so
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>
AddType application/x-httpd-php .php

WordPressの再動作確認

.htaccess 確認

ls -l /var/www/wordpress/.htaccess
# => パーミッションが 644、所有者がApacheのユーザー(daemon)であること

phpinfo() でモジュール確認

echo "<?php phpinfo(); ?>" > /var/www/wordpress/phpinfo.php

管理画面でサイトヘルスからエラーが解消されたことを確認

最後に

Apache 2.4.63はUbuntuの公式リポジトリではまだ提供されていないため、aptでのアップグレードができず、ビルドして実行するやり方を取った。

そのため、これまで設定していたコンフィグや権限関係などのデグレが発生し、だいぶトライアンドエラーを繰り返す大仕事になった。

今後もアップデート関連をインストールしてビルドして~って考えると辛い。。。

コメント