インフラの脆弱性について。
正直僕もインフラは得意ではないし、OSやミドルウェアの脆弱性とか言われても分からないしと思っていた。ただ、いくつか対応しているうちに押さえておくべきポイントが分かってきたので今回は書いていきたいと思う。
基本的なこととしては脆弱性への対応はできることをできるだけ行うということだと思う。
構築時
構築時はベストプラクティスに基づいて構築する。AWSであればセキュリティグループで必要以上の通信を許可しないというのが基本かと思う。
方針によってはWAFやShieldsの適用、GuardDutyを設定しておくなども一つの手だろう。この辺りはコストとの相談であるので、インフラ方針を確認することが最優先である。
また、不要なソフトウェアは入れないようにする。
運用時
続いて運用時の脆弱性について。
まずは脆弱性診断
まずは脆弱性診断を行う。AWSであればInspectorを使用し、Inspectorが使用できない場合は、脆弱性診断ツールをOSにインストールして使用する。
脆弱性診断が完了したら、CVE番号を元にどのように対策をするかを調査する。
脆弱性診断ツールではCVE番号で検出されることが多い。CVEとは世界でソフトウェアの脆弱性に対して一元的に管理する仕組みである。CVE番号を検索するとどのソフトのどの脆弱性かが分かるようになっている。
どのソフトにどんな脆弱性があるかが分かったら、続いてどんな対応が必要か調査する。
調査
OSの場合
大体、CVE番号で検索するとソフトを提供している企業や組織が解決策を公開してくれている。
例として、Amazon Linux2023のCVE-2023-39328を見てみる。
公開されたCVEは下記のように対策ページみたいなものが作られている。
そこに色々と脆弱性についての仕組みが書いてあるが、対策としては
Run dnf update openjpeg2 –releasever 2023.6.20250123 to update your system.
と書かれているので、コマンド「dnf update openjpeg2 –releasever 2023.6.20250123」を実行すればいい。
Windows Serverについても同様にMicrosoftが更新プログラムを出しているので、そちらを適用する。
下記はWindowsに対して検出されたCVEに対してのページ。
上記のCVEに対しての更新プログラムは下記。
たまに更新プログラムだけでなく、OS内のレジストリエディタを触る必要があったり少し面倒くさい。
検出されたネットワークの問題は適宜、脆弱性診断で指摘された部分を変更する。今回はそんなに説明することもないので、割愛する。
ミドルウェアの場合
ミドルウェアについては脆弱性が検出されると大体脆弱性が修復されるバージョンがリリースされる。
Apacheの2.4.62を例にすると、CVE-2024-40898およびCVE-2024-40725の修復情報が記載されている。CVE-2024-40898およびCVE-2024-40725を修復したい場合は、2.4.62にアップデートすることで対応できる。体感としては9割方バージョンアップで対応できる。

実作業
ここまでで対応内容が明確になるので、残りは実作業になる。実作業では本番環境で影響がでないことを確認することに気を付けないといけない。
事前に本番環境とは別の環境でシステムに影響がないかを検証すること、設定ファイルを後継のバージョンでも引き継ぐことを忘れないように注意すること。
最後に
正直、不安と面倒くささがフォーカスされるような作業が脆弱性作業だけど、慣れれば7-8割は定型化できる作業である。とはいえ、残りの2-3割がまた面倒くさかったりするんだけど。
とはいえ、自分たちはOSやミドルウェアの開発者でないので、ソースをいじらないといけないみたいなことはない。公式が出している情報以上のことはできないし、やる必要もない。自分の責任範囲を明確にすることが大切かなと思う。