2023年10月25日、米国国立標準技術研究所(NIST)から、NGINX Ingress Controller for Kubernetesに影響する3件のCVEが報告されました:
- CVE-2022-4886 – ingress-nginxのパスサニタイズは、
log_formatディレクティブを使用することで回避される可能性があります。 - CVE-2023-5043 – ingress-nginxのアノテーションインジェクションにより、任意のコマンドが実行されます。
- CVE-2023-5044 – nginx.ingress.kubernetes.io/permanent-redirectアノテーションを介してコードインジェクションが発生します。
このレポートとその後の公開情報(「緊急:Kubernetes向けNGINX Ingress Controllerに新たなセキュリティ上の欠陥が発見」など)により、実際に影響を受けるNGINX Ingress Controllerはどれか、また、これらのCVEに記載された脆弱性への対応が必要なのは誰かについて、一部で混乱が生じ、多数のサポートへのお問い合わせが寄せられました。
混乱が生じるのも無理はありません。NGINXをベースとするIngressコントローラーが複数あることをご存じでしょうか。まず、「NGINX Ingress Controller」という名前のまったく異なるプロジェクトが2つあります。
- コミュニティプロジェクト – GitHubのkubernetes/ingress-nginxリポジトリで公開されているこのIngress Controllerは、NGINX Open Sourceデータプレーンをベースとし、Kubernetesコミュニティによって開発および保守されています。ドキュメントもGitHubで公開されています。
- NGINXプロジェクト – GitHubの「nginxinc/kubernetes-ingress」リポジトリにある「NGINX Ingress Controller」は、F5 NGINXによって開発・保守されており、ドキュメントはdocs.nginx.comで公開されています。この公式NGINXプロジェクトには、次の2つのエディションがあります。
- NGINX Open Sourceベース(無料のオープンソースオプション)
- NGINX Plusベース(商用オプション)
Kongなど、NGINXをベースとするIngressコントローラーはほかにもあります。幸い、名前で簡単に区別できます。使用しているものが不明な場合は、実行中のIngressコントローラーのコンテナイメージを確認し、Dockerイメージ名を上記のリポジトリと比較してください。
上記の脆弱性(CVE-2022-4886、CVE-2023-5043、CVE-2023-5044)は、コミュニティプロジェクトにのみ該当します(kubernetes/ingress-nginx)。NGINX Ingress Controller向けのNGINXプロジェクト(nginxinc/kubernetes-ingress、オープンソース版と商用版の両方)は、これらのCVEの影響を受けません。
NGINX Ingress ControllerとIngress controllerプロジェクトの違いについて詳しくは、F5のブログ「Ingress Controller選定ガイド、第4回:NGINX Ingress Controllerの選択肢」をご覧ください。
著者について

関連するブログ記事
チュートリアル:NGINXを使用してアプリケーション向けにOpenTelemetryを構成する
OpenTelemetryを使用してNGINXサーバーの状態と健全性をより明確に把握することで、問題のトラブルシューティングを行い、Webアプリケーションのパフォーマンスを向上できます。
AkitaのNGINX Plus認定モジュールでAPIエンドポイントの問題を特定・修正
Akita SoftwareのAPIオブザーバビリティ向け新しいNGINX Plus Certified Moduleを活用して、APIエンドポイントの問題をより迅速に特定し、修正できます。
JavaプロジェクトをスキャフォールディングしてKubernetesネイティブアプリを構築する方法
Red HatのシニアプリンシパルデベロッパーアドボケイトであるDaniel Oh氏が、Javaプロジェクトをゼロから構築するためのひな形を作成し、Kubernetesネイティブアプリケーションとしてビルドする方法を解説します。
F5 NGINXaaS for Azureのご紹介:Microsoft Azureでネイティブに利用できるSaaS型ロードバランシング
NGINXaaS for Azureは、NGINX PlusをAzureネイティブのSaaSとして利用できるサービスです。NGINXの設定を容易にリフト&シフトできるため、クラウド導入とモダンアプリの展開を加速できます。

SELinuxでNGINXおよびNGINX Plusを使用する
Red Hat Enterprise Linux(RHEL)および関連ディストリビューションでSecurity-Enhanced Linux(SELinux)を有効にすると、デフォルト設定によりNGINXとNGINX Plusの一部の操作が制限されます。この記事では、すべての機能を利用できるようにSELinuxの設定を変更する方法について説明します。
NGINX PlusによるAWS Auto Scalingグループの負荷分散
新しいnginx-asg-sync統合ソフトウェアにより、NGINX PlusはAWS Auto Scalingグループの負荷を直接分散できるため、クラウドでの負荷分散がさらに柔軟になります