CVE-2024-38475等累積対応 ubuntuにApache2.4.61をインストール

サーバ

 apacheの脆弱性(CVE-2024-39884,CVE-2024-36387,CVE-2024-38472,CVE-2024-38473,CVE-2024-38474,CVE-2024-38475,CVE-2024-38476,CVE-2024-38477,CVE-2024-38573)が公開されましたが、ubuntu公式ではまだ修正パッチは出ていません(2024/7/7)。せっかくなので実験を兼ねて、本家からapache 2.4.61のソースをダウンロードし、自分でコンパイルして起動させました。一応警告がない状態で起動まではできましたが、疲れるのでお勧めできません。
 特段の理由がなければubuntuから公式リリースが出るのを待った方が賢い選択です。(ただの苦行です)

●環境

 OS Ubuntu 24.04LTS
 現在のWebサーバ Apache2.4.58-1ubuntu
  → Apache2.4.61 ubuntu をinstallします。

● ダウンロード先

apacheのダウンロード先(公式ページ)
https://httpd.apache.org/download.cgi
 本日は 2.4.61 が最新版でした

● 対応するCVE

CVE対象説明
CVE-2024-39884Apache HTTP Server 2.4.60 (コアの回帰)ハンドラーの従来のコンテンツ タイプ ベースの構成の一部が無視されることでPHP 等のスクリプトが解釈されずに表示される場合がある
https://ubuntu.com/security/CVE-2024-38475
CVE-2024-36387Apache HTTP Server 2.4.55 ~ 2.4.59HTTP/2 経由の Websocket における Null ポインタによる DoS
CVE-2024-38472Windows , Apache HTTP Server 2.4.0 ~ 2.4.59NTML ハッシュが悪意のあるサーバーに漏洩する可能性がある
CVE-2024-38473Apache HTTP Server 2.4.0 ~ 2.4.59のmod_proxy エンコードの問題により、不正なエンコードのリクエスト URL がバックエンド サービスに送信され、細工されたリクエストによって認証がバイパスされる可能性
CVE-2024-38474Apache HTTP Server 2.4.0 ~ 2.4.59のmod_rewrite置換エンコーディングの問題により、構成で許可されている URL から直接アクセスできないディレクトリ内のスクリプトを実行したり、CGI としてのみ実行されることを意図したスクリプトのソースを公開したりすることが可能に
CVE-2024-38475Apache HTTP Server 2.4.59 のmod_rewrite不適切なエスケープによりURL からも意図的に/直接アクセスできないファイルシステムの場所に URL をマップすることができ、コードの実行やソース コードの開示
CVE-2024-38476Apache HTTP Server 2.4.0 ~ 2.4.59応答ヘッダーが悪意のあるもの、または悪用可能なバックエンド アプリケーションを介した情報漏洩、SSRF、またはローカル スクリプト実行に対して脆弱
CVE-2024-38477Apache HTTP Server 2.4.0 ~ 2.4.59のmod_proxy null ポインタ参照により、攻撃者が悪意のあるリクエストを介してサーバーをクラッシュさせる可能性
CVE-2024-38573Apache HTTP Server 2.4.0 ~ 2.4.59のmod_rewrite潜在的な SSRF により、攻撃者は安全でない RewriteRules を引き起こして、予期せず URL を mod_proxy によって処理されるように設定する

https://httpd.apache.org/security/vulnerabilities_24.html

 勉強不足でSSRFが何なのかよく理解しきれていないのですが、個人的に危険だと感じたのは
   39884、38474、38475
あたりでしょうか。
 例えば、PHP等のサーバサイドスクリプト言語を使ってDBにアクセスしているような場合には、DBサーバのアカウント名やパスワードが漏洩する危険があります。
 漏洩したアカウントにGRANTされている権限によっては、不正アクセスや情報改竄の危険もあります。
 このほか、アクセス制御されている管理者用のCGIを実行されたり、APIキーが漏洩するリスクもあります。
 今回は2.4系のマイナーアップデートですので、アプリケーションへの影響は比較的小さいと思われますので、aptが更新されればアップデートした方がいいと思います。
 Apache公式には今回の脆弱性は、2.4.61以上のバージョンにアップデートすることで対応ができると記載されていました。

● パッチアップデートの経過

次の方法でダウンロード、コンパイル、インストールしました。

①現在の状況を確認

# 現在の状態を確認
> apache2 -v
Server version:  Apache/2.4.58(Ubuntu)
Server built:    2024-4-18T15:13:41

#ステータス確認
> systemctl status apache2
# 起動している場合
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: >
     Active: active (running) since Sat 2024-07-06 13:19:19 JST; 1h 29min ago

# 起動していない場合
○ apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: >
     Active: inactive (dead) since Sat 2024-07-06 14:52:32 JST; 34s ago

# apache2 を停止
sudo service apache2 stop

②バックアップの実施

# 設定ファイル周りをバックアップ
> sudo cp -r /etc/apache2 /etc/apache2.backup

③ダウンロード、インストール

aptではまだ最新バージョンがリリースされていなかったので、ソースを落としてコンパイルします。
コンパイル → エラー → エラーが出ているパッケージのコンパイル,PKGのインストール → コンパイル のPDCAサイクル(?)でトライアンドエラーを繰り返しました。

# apacheのコンパイルに必要なライブラリの準備
sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev libssl-dev -y
sudo apt install libexpat1-dev

# openssl が入っていなければinstall
sudo apt install openssl libssl-dev

# tar(解凍ソフト) が入っていなければinstall
sudo apt install tar

# 最新版のapacheをダウンロード(公式より)
cd ~/デスクトップ
wget https://dlcdn.apache.org/httpd/httpd-2.4.61.tar.bz2
tar -xvjf httpd-2.4.61.tar.bz2
cd httpd-2.4.61

# 関連ファイルのコンパイルインストール
cd ~/デスクトップ/httpd-2.4.61/srclib
wget https://downloads.apache.org/apr/apr-1.7.4.tar.gz
wget https://downloads.apache.org/apr/apr-util-1.6.3.tar.gz
tar -xvzf apr-1.7.4.tar.gz
tar -xvzf apr-util-1.6.3.tar.gz
mv apr-1.7.4 apr
mv apr-util-1.6.3 apr-util

# apr-1.7.4 のインストール
cd ~/デスクトップ/httpd-2.4.61/srclib/apr
./configure --prefix=/usr/local/apr
make
sudo make install

# apr-util-1.6.3 のインストール
cd ~/デスクトップ/httpd-2.4.61/srclib/apr-util
./configure --prefix=/usr/local/apr-util
make
sudo make install

# apacheのコンパイルとインストール
cd ~/デスクトップ/httpd-2.4.61
./configure --prefix=/etc/apache2 --with-pcre --enable-so --enable-ssl --enable-rewrite --with-mpm=event --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr
make
sudo make install

# 起動
> sudo /etc/apache2/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
httpd (pid 98268) already running
# 警告が出ていますがなんとか起動
> /etc/apache2/bin/httpd -v
Server version: Apache/2.4.61 (Unix)
Server built:   Jul  7 2024 22:12:34

# confの編集
sudo nano /etc/apache2/conf/httpd.conf

#documentrootの編集(実際のhtdocsが置かれている場所を指定)
 DocumentRoot "/etc/apache2/htdocs"
 <Directory "/etc/apache2/htdocs">
 ↓ 
 DocumentRoot "/var/www/html"
 <Directory "/var/www/html">

# serverNameの編集(起動時の Set the 'ServerName' 警告が出なくなります)
 #ServerName www.example.com:80
  ↓
 ServerName localhost:80

# 再起動
> sudo /etc/apache2/bin/apachectl restart

# curl で起動を確認
#ServerName www.example.com:80
ServerName localhost:80

> curl -i localhost
HTTP/1.1 200 OK
Date: Mon, 08 Jul 2024 13:25:41 GMT
Server: Apache/2.4.61 (Unix)
Last-Modified: Mon, 08 Jul 2024 13:14:43 GMT
ETag: "33-61cbc324ef083"
Accept-Ranges: bytes
Content-Length: 51
Content-Type: text/html

<html><body><h1>new apache page</h1></body></html>

 なんとか警告がない状態で起動させることができました。
 コンパイルが趣味の方にはお勧めしますが、一般の方にはお勧めできませんので、ubuntuの公式リリースを待ちましょう。