Axiosに複数の脆弱性、SSRF・DoS・プロキシ回避・リクエストハイジャックが可能に

Axiosのメンテナーは、広く利用されているJavaScript用HTTPクライアントAxiosに影響する一連のセキュリティ脆弱性を公表しました。サーバーサイドリクエストフォージェリ(SSRF)、サービス拒否(DoS)、プロキシ制御の回避、プロトタイプ汚染によるリクエスト改ざん、ソケットハイジャックなどを引き起こす恐れのある欠陥が含まれています。

9月16日に公開されたセキュリティアドバイザリーでは、少なくとも10件のAxiosの問題が特定されました。対象は、HTTP/2、Node HTTP、Fetchの各アダプターのほか、プロキシ処理やform-dataの処理経路にまで及びます。

複数の脆弱性は重大度「高」と評価されています。攻撃者が部分的に操作できる入力をもとに、Axiosで外部へリクエストを送信しているNode.jsサービスにとって、リスクが大きいことが浮き彫りになりました。

なかでも深刻なのが、GHSA-3pq3-5fj3-cg6vです。この脆弱性では、AxiosのHTTP/2アダプターが、設定済みのDNSルックアップやプロキシの制御を回避できるとされています。

影響を受ける環境では、独自のDNS名前解決、エグレスプロキシ、URL検証レイヤーなどに依存するアプリケーションが、意図しないままネットワーク境界の外へ通信を送信する可能性があります。

この挙動により、ループバックホスト、内部サービス、クラウドのメタデータエンドポイントへのリクエストを防ぐためのSSRF対策が、無効化されかねません。

別の重大度「高」のアドバイザリーであるGHSA-542g-h47m-68v8は、サービス拒否の状態を引き起こす問題を説明しています。原因は、HTTP/2のClientHttp2Session初期化時に、未処理のerrorイベントが発生することです。

Node.jsでは、未処理のerrorイベントによってプロセスが終了する場合があります。そのため、Axiosの送信先や接続に外部の第三者が影響を及ぼせる、インターネット公開サービスでは特に重大です。

Axiosはさらに、shouldBypassProxyのホスト正規化ロジックとfromDataURIパーサーにおける、重大度「高」の正規表現サービス拒否(ReDoS)の脆弱性も公表しました。

プロキシ関連の問題は、信頼できないリダイレクトのLocationヘッダー経由で到達できるとされています。攻撃者が細工した入力を与えると過剰な処理が発生し、Node.jsのイベントループがブロックされる恐れがあります。

data: URIの問題でも同様に、悪意を持って作られたURLをAxiosが解析すると、イベントループがフリーズするリスクがあります。Nodeのイベントループは、プロセス内のすべてのリクエストを処理します。このため、負荷の高い処理が1つあるだけで、無関係なユーザーの可用性まで低下しかねません。

プロキシ回避は、Axiosで繰り返し問題となってきました。新たに掲載されたアドバイザリーGHSA-44g4-m2mj-wpvxによると、CIDR形式のNO_PROXYエントリが無視されます。その結果、除外対象の内部IPレンジ宛てのリクエストが、設定済みのプロキシを経由してしまう可能性があります。

機密性の高いネットワークサービスへのアクセスを外向きプロキシが担っているアプリケーションでは、この不具合によりルーティングの前提が崩れます。保護されるべきリクエストが、意図しないインフラにさらされる恐れもあります。

プロトタイプ汚染のガジェットがいくつか存在し、影響は可用性やルーティングにとどまりません。GHSA-x97p-jq2g-jp4fはtoFormDataのオプションに影響します。GHSA-9fr6-4gfg-395gでは、継承されたObject.prototype.methodプロパティによって、Axiosのデフォルトインスタンスが使用するHTTPメソッドを上書きできる可能性があります。

Fetchアダプターにも、送信リクエストを改変できる別の問題があります。GHSA-m8m8-qj5v-23w3はNode HTTPアダプターに影響し、継承されたcreateConnectionプロパティによって、リクエストソケットのハイジャックが可能になる恐れがあります。

AxiosはGHSA-r4gj-5m52-g5whも公表しました。FetchアダプターがmaxRedirects: 0の設定を適用せず、リダイレクトを悪用したSSRFのリスクが生じるというものです。

セキュリティチームは、まずAxiosの利用状況を洗い出し、修正済みリリースへの更新を優先してください。あわせて、独自のプロキシやDNSの設定を見直す必要があります。信頼できない入力によって、リクエストURL、リダイレクト先、リクエスト設定オブジェクトを操作されないようにすることも重要です。

Axiosプロジェクトは0.xと1.xの両リリースラインをサポートしており、セキュリティアップデートはGitHubのアドバイザリーとリリースノートで公開するとしています。

セキュリティポリシーでは、実際に悪用されている脆弱性をインシデントとして扱い、修正の検証が完了次第、できるだけ早くパッチを適用するとも定めています。

1万6,000以上のSOCチームがANY.RUNを活用し、脅威調査を効率化して手作業を削減しています。チームで試してみる

翻訳元: https://cyberpress.org/multiple-axios-vulnerabilities/

本記事は cyberpress.org の記事を翻訳・要約したものです。