Node.js NPM の Proxy Auto-Configuration パッケージに深刻な脆弱性が発見される

Critical Bug Reported in NPM Package With Millions of Downloads Weekly

2021/09/13 TheHackerNews — JavaScript 用の NPM パッケージ Pac-Resolver に存在する、深刻なリモートコード実行の脆弱性に対する修正プログラムが提供された。さまざまな局面で利用される Pac-Resolver だが、この脆弱性が悪用されると、HTTP リクエストが送信されるたびに、Node.js アプリケーション内で悪意のコードが実行される可能性がある。この脆弱性 CVE-2021-23406 は、CVSS 値が 8.1 であり、Pac-Resolver の 5.0.0 以前のバージョンに影響する。

PAC (Proxy Auto-Configuration) とは、Web ブラウザからのリクエストを、指定されたホスト名へ向けてダイレクトに転送するか、Web プロキシ・サーバーに転送するかを決定する、JavaScript の関数のことである。つまり、PAC コンフィグレーション・ファイルは、企業環境でプロキシ・ルールを配布する方法となる。

先月末に発表した記事で Tim Perry は、「このパッケージは、Pac-Proxy-Agent で PAC ファイルをサポートする。つまり、Node.js で HTTP プロキシの自動的な検出/構成を行う標準パッケージとして、あらゆる Proxy-Agent 内で使用される。Proxy-Agent は、とても人気があり、AWS CDK/Mailgun SDK/Firebase CLI などでも使用されている」と述べている。

CVE-2021-23406 は、Pac-Proxy-Agent が PAC ファイルを、正しくサンドボックス化しないという問題に関係している。その結果として、信頼されていない PAC ファイルを悪用して、サンドボックスを完全にエスケープし、基礎となるオペレーティングシステム上で任意のコードを実行するというシナリオに至る。ただし、この場合、攻撃者がローカル・ネットワーク上に存在し、PAC ファイルの内容を改ざんできる能力を持っているか、プロキシ設定を変更するための、第二の脆弱性とチェーンしている必要がある。

これは、VM モジュールに対する、よく知られた攻撃方法であり、Node がサンドボックスのコンテキストを、完全に隔離していないことに起因する。修正方法は簡単であり、VM 内蔵モジュールの代わりに本物のサンドボックスを使うことだ。

Red Hat は、そのアドバイザリにおいて、同社の Kubernetes Advanced Cluster Management に、脆弱性のあるパッケージがバンドルされていると述べている。ただし、現在のところ、影響を受けるコンポーネントの、脆弱性を誘発するベクトルは認識していないとし、さらに、影響を受けるコンポーネントは、ユーザー認証により保護されるため、この脆弱性の潜在的な影響は低くなっていると指摘している。

開発や言語に関する記事は、その世界ごとの概念や用語が分からないので、訳すにも苦労します。怪しいところが有りましたら、脳内翻訳をかけてください。また、タイトルの下にあるリンクからは、原文にジャンプできますので、そちらもご参照ください。

%d bloggers like this: